Создание прототипа приложения, похожего на Trello, с использованием WordPress REST API.
Опубликовано: 2017-02-03Мы неоднократно рекламировали REST API WordPress с момента его объявления, как шаг к новой эре для платформы. В этом посте мы собираемся использовать все, что узнали за последние несколько недель, используя пример, демонстрирующий, насколько мощным и универсальным может быть REST API WordPress.
Поскольку взаимодействие между разными языками лежит в основе того, что такое REST, мы собираемся разработать прототип приложения, похожего на Trello, с использованием старых хороших таксономий и постов WordPress, но с изюминкой! Таким образом, мы надеемся продемонстрировать, как можно использовать WordPress в качестве платформы для разработки.
Trello — это успешное приложение для управления проектами, использующее парадигму Канбан, первоначально популяризированную Toyota в 1980-х годах. Проекты представлены в виде досок , которые содержат столбцы, заполненные карточками, соответствующими задачам. Карточки перемещаются из одного столбца в другой, пока не окажутся в состоянии « Готово» ( например , из « Дела » в «Выполняется » в « Готово»). Этот поток называется потоком создания ценности. Две ключевые идеи Канбана: а) визуализировать свою работу и б) ограничить текущую незавершенную работу. В случае с Trello работа визуализируется с помощью графических карт. Столбцы также могут иметь максимальную вместимость, то есть вы можете разместить в столбце определенное количество задач и не более того. Например, столбец « Выполнение » ниже имеет емкость 2.
Дизайн приложения
Мы будем разрабатывать минимальную, голую версию парадигмы Канбан в качестве доказательства концепции. Основные функциональные возможности следующие:
- Пользователи могут создавать/обновлять/удалять новые столбцы.
- Пользователи могут создавать/обновлять/удалять новые карточки, находящиеся в определенном столбце.
Основная идея того, как все это будет реализовано, невероятно проста с использованием REST API:
- Столбцы Kanban представлены в виде категорий WordPress .
- Емкости столбцов можно указывать целыми числами в описаниях категорий .
- Канбан-карточки в виде постов , которым присвоена категория .
- Перемещение карточки из столбца в другой означает просто изменение соответствующей категории поста.
Следуя идее быстрого прототипирования «итерировать рано и часто», представленные ниже API-интерфейсы Канбана являются просто черновиками. Функции экстраполированы из двух основных функций, перечисленных ранее, и сопоставления ресурсов WordPress столбцов с категориями и карточек с сообщениями. Нет сомнений, что новые и сложные проблемы возникнут, как только начнется фактическая реализация прототипа, но для начала нам достаточно следующих черновиков!
API столбцов канбан
В приведенном ниже списке описаны функции, которые будут манипулировать столбцами канбана, а также их типы параметров. Столбцы будут представлены в виде категорий WordPress, а их номер емкости будет добавлен в описание категории. Этот список не документирует какие-либо возвращаемые значения, поскольку для этого прототипа будет достаточно объекта ответа JSON от WordPress.
Однако все функции будут возвращать значение true или false, чтобы указать, успешно ли завершена операция или что-то пошло не так. В последнем случае реальная причина может быть найдена в объекте ответа JSON, но, как правило, для экспериментального прототипа не предусмотрено никакого реального контроля ошибок.
• create_new_col(cname:string, cap:int)
Создайте новый столбец канбана с именем cname с целым числом, обозначающим емкость.
Ресурс API WordPress: создайте новую категорию
Это создаст новую категорию, а затем добавит целое число емкости к описанию категории.
• change_col_name(старое имя:строка, новое имя:строка)
Измените имя столбца Канбана со старого имени на новое имя .
Ресурс API WordPress: изменить категорию
Это просто изменит название категории.
• change_col_cap(newcap:целое )
Измените емкость столбца на newcap.
Ресурс API WordPress: изменить категорию
Это изменит описание соответствующей категории, чтобы добавить новый номер емкости.
• delete_col(имя_столбца:строка)
Удаляет столбец с именем colname.
Ресурс WordPress API: Удалить категорию
Это просто удаляет категорию, соответствующую столбцу. Делая это, вы эффективно «осиротеете» карты в этой колонке. Вам решать, как реализовать это удаление. Например, либо а) удаление столбца означает удаление всего в этом столбце, либо б) «мягкое» удаление, возможно, переименовав карточки под ним как _del_<категория>, чтобы вы могли восстановить их в будущем.
API канбан-карт
Список ниже тот же, но для карт Канбан. Карточки будут представлены в виде сообщений WordPress, эффективно использующих заголовок сообщения для описания задачи, которую необходимо выполнить. Содержимое поста можно использовать как дополнительный контейнер для заметок.
• create_new_card(имя:строка)
Создает новую карту с именем cname.
Это создаст новый пост без контента, но, поскольку он не принадлежит ни к какой категории, он не должен быть виден пользователю.
• create_new_card(cname:string, c:string)
Создайте новый пост с названием cname и содержимым c.
То же, что и выше, но карточка также создается с контентом.
• create_new_card(cname:string, cont:string, colname:string)
Создайте новый пост с заголовком cname , content cont в категории colname.
Ресурс API WordPress: создайте новый пост
• add_card_col(cname:string, colname:string)
Добавляет карту с именем cname в столбец с именем colname.
Ресурс WordPress API: Редактировать сообщение
• move_card_col(cname:string, colname:string)
Перемещает карточку с именем cname в столбец с именем colname. Это должно удалить старую категорию поста перед добавлением новой.
Ресурс WordPress API: Редактировать запись
• delete_card(cname:string)
Удаляет карту с именем cname.
Ресурс WordPress API: Удалить запись
Это выполняет деструктивное удаление или нет, в зависимости от того, включили ли вы корзину в своем блоге WordPress.
Целостность данных
Теперь, когда мы сопоставили наши функции с вызовами и активами WordPress API, нам нужно убедиться, что наши данные непротиворечивы. Например, канбан-столбец с емкостью 2 не может содержать более 2 карточек. Карта не может находиться в двух столбцах одновременно. Когда карточку перемещают в другую колонку, ее нужно удалить оттуда, где она была. Однако WordPress вообще ничего не знает об этих ограничениях, поэтому нашему приложению необходимо проверять и применять их при каждой операции записи.
Поскольку это прототип, не все крайние случаи будут очевидны на этапе проектирования. Они неизбежно всплывут во время реализации каждой функции.
Дальнейшая работа
До сих пор мы говорили только об API, которые будут по-разному управлять нашим приложением Канбан, используя ресурсы WordPress. У нашего прототипа были бы серьезные недостатки, если бы он состоял только из набора внутренних API без внешнего интерфейса, который люди могли бы использовать. Еще раз здесь мы видим универсальность API REST, поскольку никто не говорит, как вы должны это делать. Вы можете использовать что-то вроде Bootstrap или написать хороший старый графический интерфейс на Java; буквально нет предела тому, что вы можете использовать.
Наш прототип также поддерживает только одну доску Канбан, то есть один проект, связанный с вашим экземпляром WordPress. Это, вероятно, приемлемо для проверки концепции, но явно неприемлемо для конечного продукта. Одним из решений может быть сопоставление концепций Канбана с таксономией WordPress другим, более эффективным способом, который будет поддерживать несколько досок Канбан и даже больше функций, таких как совместная работа в команде.
Разработка WordPress стала действительно увлекательной!