В последние годы люди все чаще говорят о Trello как об отличном инструменте для организации и планирования.
В нашей компании мы уже 3 года используем Trello для планирования многих процессов: от отпусков, командировок и переговоров по контрактам до управления проектами.
К сожалению, с Trello не все так хорошо.
Вы не можете создать на нем собственный рабочий процесс.
То есть нам нужно нанять одного сотрудника, который будет перетаскивать карты вручную по различным доскам.
Как сделать так, чтобы этого сотрудника можно было перевести на другую, более интересную и творческую работу? Конечно, скажете вы, мы можем написать скрипт, который все это за нас сделает. Но здесь возникает проблема.
Скрипт может написать только программист или человек, понимающий как это сделать.
Ему придется поддерживать сценарий.
Мы нашли более простое и логичное решение — семантическое моделирование.
Семантическое моделирование позволяет записать всю логику доски в Trello на естественном языке.
Координация деловых поездок и отдыха
Возьмем самый простой процесс: согласование командировок и отпусков.По существующему у нас регламенту каждый сотрудник, планирующий взять отпуск или поехать в командировку, публикует заявку в Trello. Заявка включается в лист «На согласование».
Как только заявка будет одобрена (фактически это означает, что руководитель сотрудника и/или представитель финансового отдела поставил галочку в нужном поле), она перемещается на лист «Одобренные командировки».
Заявление на отпуск попадает соответственно в «Согласованный отпуск» и т. д. После этого нужно уведомить сотрудника о том, что его Заявление одобрено.
Допустим, мы хотим автоматизировать этот процесс, чтобы после одобрения заявка автоматически перемещалась на нужный лист, а сотрудник получал уведомление об изменении статуса заявки.
Давайте посмотрим, что нам для этого понадобится.
Необходимые инструменты
Для разработки модели мы выбрали идею от Jetbrains MPS (Meta Programming System).Язык, используемый для моделирования: d0SL — Семантический язык Delta0, созданный на основе семантических (логических) моделей.
Весь процесс установки Jetbrains MPS и необходимых плагинов полностью описан здесь: https://d0sl.github.io/en/quick/installation/ .
Установить готовую модель доски Trello можно по ссылке: https://d0sl.github.io/en/quick/trello/ .
Семантическая модель.
Что случилось? Давайте посмотрим, как выглядит получившаяся семантическая модель доски Trello. Он содержит наши правила:
- Установлен ли флажок — Проверяет, установлен ли флажок с именем requireCheckBoxName в карточке с идентификатором cardId. Таким образом, мы можем проверить, одобрена ли наша заявка или нет.
- переместитьКарта — Перемещает cardId в список и добавляет комментарий для пользователя в Приложении.
Модель имеет предикат checkBoard, который вызывается для каждой карты на доске.
Ему присваивается идентификатор карты, имя пользователя, совершившего последнюю операцию с картой, лист, с которого карта была перемещена, и лист, на котором она находится в данный момент. Далее в checkBoard мы можем задать правила, по которым планируем обрабатывать наши заявки.
Отметим, что семантическое моделирование позволяет поместить все логические бизнес-правила в один документ и написать эти правила на языке предметной области, «родном языке» для пользователей модели.
Возможность делать с картой что угодно предоставляет базовая модель TrelloBoard, которая выглядит так:
Если запустить модель, то как только заявка в листе «На согласование» пройдет процедуру согласования,
Система переместит ее в соответствующий раздел и уведомит создателя карты об изменении статуса заявки.
Если вы попытаетесь переместить не одобренную вручную заявку, система отправит ее на место и напишет гневный комментарий.
Что под капотом?
Базовая модель TrelloBoard — это, по сути, интерфейс, который мы реализуем на Java (в данном случае в классе com.gav.semanticTrelloBoard.TrelloBoardDSL).
Это выглядит так:
Мы определяем имена функций с помощью декораторов и реализуем их.
Еще у нас есть класс AiTrelloBoard, который позволяет работать с Trello. Он включает в себя Java-реализации таких функций, как start:
В файле trelloBoard.properties мы храним все параметры trello api (такие как application_key, board_id и т. д.) и last_update_timestamp — метку времени последнего обновления.
Таким образом, без особых усилий мы можем автоматизировать необходимые бизнес-процессы в Trello. Это решение гораздо удобнее использовать и поддерживать, чем программный код. Очевидно, что возможности семантического моделирования не ограничиваются решением этой задачи.
Ведь если при классическом подходе к решению задач аналитик сначала создает спецификации, на основе которых разработчики впоследствии реализуют архитектуру и пишут код, то при использовании языка семантического моделирования d0sl аналитик может создавать спецификации задач в формально-логической форме.
языке, которые преобразуются в исполняемый код без вмешательства человека.
Это позволяет существенно сократить затраты на разработку, развертывание и тестирование новых сервисов.
Мы сделали решение для работы с Trello открытым и разместили его на github .
Мы хотели не только предоставить инструмент для модернизации процессов в Trello, но и на этом простом примере продемонстрировать преимущества использования такого современного подхода, как семантическое моделирование.
Будем рады, если вы сможете добавить к этому делу что-то свое и поделиться опытом использования нашего решения.
Полезные ссылки
Подробнее о языке семантического моделирования d0sl можно прочитать здесь.связь .
Изложены математические основы семантического моделирования.
Здесь .
Теги: #программирование #Будущее здесь #java #jetbrains #моделирование #Семантика #автоматизация бизнес-процессов #языки программирования