Хабрахабр

[Из песочницы] Автоматизации бизнес процессов компании в Trello с использованием технологии семантического моделирования

В последние годы все чаще говорят о Trello, как о прекрасном инструменте для организации и планирования. В нашей компании мы вот уже 3 года используем Trello для планирования многих процессов, начиная с отпусков, командировок и согласования договоров и заканчивая управлением проектами.

На нем нельзя сделать кастомный workflow. К сожалению, не все так прекрасно в Trello. Как же сделать так, чтобы этого сотрудника можно было перевести на другую, более интересную и творческую работу? То есть нам нужно занять одного сотрудника, который будет в различных досках перетаскивать карточки руками.

Но тут возникает проблема. Конечно, скажете вы, можно написать скрипт, который будет делать все это за нас. Поддерживать скрипт придется ему же. Скрипт может написать только программист или человек, который понимает, как это делать. Мы нашли более простое и логичное решение — это семантическое моделирование.

Семантическое моделирование позволяет всю логику работы доски в Trello записать на естественном языке.

Согласование командировок и отпусков

Возьмем самый простой процесс: согласование командировок и отпусков. По существующему у нас регламенту, каждый сотрудник, который планирует взять отпуск или отправиться в командировку, публикует заявку в Trello. Заявка попадает в лист «На согласование&raquo.

Заявка на отпуск попадает соответственно в «Согласованные отпуска» и т.д. Как только заявка одобрена (фактически это означает, что руководитель сотрудника и/или представитель финансового отдела поставили галочку в нужный checkbox ), ее передвигают в лист «Согласованные командировки&raquo. После этого нужно уведомить сотрудника, что его Заявка согласована.

Рассмотрим, что нам для этого потребуется. Допустим, мы хотим автоматизировать этот процесс так, чтобы заявка после согласования перемещалась в нужный лист автоматически, а сотрудник получал уведомление об изменении статуса заявки.

Необходимые инструменты

Для разработки модели мы выбрали ide от Jetbrains MPS (Meta Programming System). В качестве языка для моделирования используется язык d0SL — Delta0 semantic language, созданный на базе семантических (логических) моделей.

Весь процесс установки Jetbrains MPS и необходимых плагинов полностью описан здесь: https://d0sl.github.io/en/quick/installation/.

Установить готовую модель Trello доски можно по ссылке: https://d0sl.github.io/en/quick/trello/.

Семантическая модель. Что же получилось?

Посмотрим, как выглядит полученная семантическая модель Trello доски. В ней записаны наши правила:

  • Is checkbox checked — Проверяет, отмечен ли чекбокс с именем requiredCheckBoxName в карте с id cardId. Таким образом мы сможем проверить, одобрена ли наша Заявка или нет.
  • moveCard — Перемещает карту cardId в list и добавляет в Заявку комментарий для пользователя

Ему передается идентификатор карты, имя пользователя, совершившего последнюю операцию с картой, лист, из которого карту перемещали и лист, в котором она сейчас находится. В модели есть предикат checkBoard, который вызывается для каждой карты в доске. Далее в checkBoard мы можем задать правила, по которым мы планируем обрабатывать наши заявки.

Заметим, что cемантическое моделирование позволяет вынести все логические бизнес-правила в один документ и написать эти правила на языке предметной области, «родном языке» для пользователей модели.

Возможность сделать что-либо с картой предоставляет базовая модель TrelloBoard, которая выглядит следующим образом:

Если мы запустим модель, то как только заявка в листе «На согласование» пройдет процесс согласования,

Система переместит ее в соответствующий раздел и уведомит создателя карты об изменении статуса заявки.

Если же заявку, которая не была согласована, попытаться переместить вручную, система отправит ее на место и напишет гневный комментарий.

А что под капотом?

Базовая модель TrelloBoard по сути является интерфейсом, который мы имплементируем в Java (в данном случае в классе com.gav.semanticTrelloBoard.TrelloBoardDSL).

Выглядит это так:

В него вынесены java-имплементации таких функций, как start: Мы задаем имена функций с помощью декораторов и имплементируем их.
Также у нас есть класс AiTrelloBoard, который и позволяет работать с Trello.

В файле trelloBoard.properties мы держим все параметры trello api (такие, как application_key, board_id и т.д) и last_update_timestamp — timestamp последнего update’a.

Использовать и поддерживать это решение значительно удобнее, чем программный код. Таким образом, ценой не слишком больших усилий мы можем автоматизировать необходимые бизнес процессы в Trello.

Ведь, если при классическом подходе решения задач аналитик вначале создаёт спецификации, на основе которых впоследствие разработчики реализуют архитектуру и пишут код, то при использовании языка семантического моделирования d0sl аналитик может создавать спецификации задач на формальном логическом языке, которые преобразуются в исполняемый код без участия человека. Очевидно, что возможности семантического моделирования не исчерпываются решением этой задачи. Это позволяет существенно снизить затраты на разработку, развертывание и тестирование новых сервисов.

Мы будем рады, если вы сможете добавить что-то свое в этот кейс, и поделитесь опытом использования нашего решения. Мы сделали решение для работы с Trello открытым и выложили на гитхаб.
Нам хотелось не только предоставить инструмент для модернизации процессов в Trello, но и продемонстрировать на этом простом примере преимущества использования такого современного подхода, как семантическое моделирование.

Полезные ссылки

Подробнее прочитать о языке семантического моделирования d0sl можно по ссылке.
Математические основы семантического моделирования изложены здесь.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть