Использован кадр из мультфильма Падал прошлогодний снег. Шедевр! Между прочим, рейтинг на Кинопоиске почти 9!
Больше года назад я опубликовала на хабре статьи Один день из жизни белки или от моделирования процессов к проектированию автоматизированной системы учёта материальных ценностей Белка-1.0 (часть 1 и часть 2) об использовании сказочного подхода при обучении нотации UML.
Попробуем разложить всё те же бессмертные строчки на исполняемые процессы BPMN.
Итак, автоматизируем процессы учёта материальных ценностей проект Белка-2.0.BPMN
Напомню, чтобы не переключаться на хабре на предыдущую статью или не искать строчки в Сказке о царе Салтане (хотя, если появилось желание перечитать что-то из произведений Александра Сергеевича, не сдерживайте себя! Пушкин и правда наше ВСЁ!)
Автоматизировать мы собираемся деятельность по учёту материальных ценностей, которая возникает вот в этих процессах.
Остров на море лежит, (E1, E2)
Град на острове стоит (E3, E1)
С златоглавыми церквами, (E4)
С теремами да садами; (E5, E6)
Ель растет перед дворцом, (E7, E8)
А под ней хрустальный дом; (E9)
Белка там живет ручная, (A1)
Да затейница какая! (A1)
Белка песенки поет, (P1, A1)
Да орешки всё грызет, (P2)
А орешки не простые, (C1)
Всё скорлупки золотые, (C2)
Ядра чистый изумруд; (C3)
Слуги белку стерегут, (P3, A2)
Служат ей прислугой разной (P4)
И приставлен дьяк приказный (A3)
Строгий счет орехам весть; (P5, C1)
Отдает ей войско честь; (P6, A4)
Из скорлупок льют монету, (P7, C2, C4)
Да пускают в ход по свету; (P8)
Девки сыплют изумруд (P9, A5, C3)
В кладовые, да под спуд; (E10, E11)
(А.С.Пушкина Сказка о царе Салтане, о сыне его славном и могучем богатыре князе Гвидоне Салтановиче и о прекрасной царевне Лебеди, работа над сказкой начата предположительно в 1822 г., впервые сказка была напечатана Пушкиным в сборнике Стихотворения А. Пушкина (ч. III, 1832, стр. 130181) 10 лет от замысла до публикации, между прочим!)
Напомню и про коды, которые написаны справа от строк. A (от Actor) означает, что в строке содержится информация об участнике процесса. C (от Class) информация об объектах классов, которые обрабатываются в ходе выполнения процессов. E (от Environment) информация об объектах классов, которые характеризуют окружающую среду выполнения процессов. P (от Process) информация о самих процессах.
Переписывать всю нотацию BPMN и правила её применения в данной статье не стану вы легко сможете найти необходимую информацию на официальном ресурсе здесь [1] или в Whitepapers, например, здесь [2]. Буду только давать краткую справку для тех элементов, которые придётся использовать.
В качестве инструмента моделирования и исполнения процессов будем использовать Camunda Open Source Modeler [3] и Camunda Open Source Community Platform [4].
Создадим диаграмму взаимодействия процессов просто добавим новую диаграмму BPMN в Camunda Modeler.
Начнём с Белки. Добавим пул процесса и назовём его Один день из жизни Белки.
В свойствах процесса укажем, что он является исполняемым флаг Executable (хотя это почти лишнее, т.к. этот процесс целиком будет состоять из ручных задач, а это значит, что мы определяем задачи, которые являются внешними по отношению к движку BPM, и такие задачи обрабатываются как сквозное действие).
На рисунке ниже 1 это имя пула процесса.
Под цифрой 2 стартовое событие (StartEvent) процесса и начальная задача утром наша Белка выходит из домика, эта задача в строках стихотворения отсутствует, но мы эту задачу добавляем, чтобы явно обозначить задачу предварительного характера, выполняемую в начале дня.
3 это блок из двух ручных задач (Manual Tasks) Белки (песенки поёт и орешки грызёт), выполняемых параллельно. Параллельность выполнения этих задач показана с помощью двух параллельных шлюзов (Parallel Gateway): для ветвления в начале и соединения в конце блока.
4 завершающая задача Белки (идёт отдыхать), как и начальная задача, завершающая поддерживает наше желание показать целиком день из жизни Белки.
Сокращенный вариант будет выглядеть так.
Несколько замечаний по применению типов задач и маркеров.
Задачи позволяют моделировать реальную работу, выполняемую в процессе. В Camunda поддерживаются различные типы задач, но мы в этом примере рассмотрим только Ручные (обозначение 1 на рисунке выше), Пользовательские и Сервисные задачи (два последних типа немного подробнее разберём далее).
В дополнение к различным типам задач мы можем пометить задачи как циклы, множественные экземпляры или компенсации это маркеры. Маркеры можно комбинировать с типами задач. Из маркеров в нашем примере будем использовать только повторение (обозначение 2 на рисунке). Однако, отметим, что наш инструмент пока не поддерживает выполнение этого маркера, для ручных задач это не принципиально, а для других типов задач эту неприятность можно обойти явным моделированием цикла (мы вернёмся к обсуждению этого момента позже).
Цветом на схеме будем выделять задачи, которые явно есть в нашем описании процессов в стихотворных строчках.
Для именования задач в целях максимального соответствия исходному сказочному описанию процессов будем все задачи именовать с использованием сказуемого и дополнения: песенки поёт, орешки грызёт и т.д.
Итак, мы добавили пул процесса. Пока мы этого не сделали, наша диаграмма была просто процессом. А как только был добавлен пул, наша диаграмма автоматически стала диаграммой взаимодействия процессов (Collaboration). Добавим в документацию описание наших взаимодействующих процессов.
Продолжим моделирование.
А дальше у нас Слуги: Слуги белку стерегут, Служат ей прислугой разной. Поставим эти ручные задачи параллельно и сделаем их цикличными.
Обязанность учёта материальных ценностей возложена на Дьяка приказного, поэтому Один день из жизни Дьяка наиболее интересный для нас процесс. Выполним моделирование. Явно выделим ручные задачи, в которых передаем материальные объекты, и пользовательские задачи, в которых автоматизирована деятельность по учёту материальных ценностей. Добавим подпроцессы (цифра 1 на схеме ниже), которые включают связанные ручные и пользовательские задачи. Подпроцессы отмечены как циклические, задачи в этих подпроцессах действительно могут выполняться в цикле: накопились ядра передал на хранение. В конце процесса добавим сервисную задачу по формированию сводного отчёта за день (цифра 2 на схеме ниже).
И немного крупнее.
Продолжим моделирование на очереди один день из жизни Войска. Здесь появится еще один новый элемент вызов внешнего процесса, Call Activity выделен жирной рамкой. Мы просто предполагаем, что у Войска есть еще много другой работы.
Следующие два фрагмента это модели процессов в рамках одного дня из жизни Литейщиков и Казначейства.
И в заключении один день из жизни Девок.
В целом взаимодействие процессов будет выглядеть примерно так.
Для того, чтобы наши процессы можно было исполнять с использование BPM-движка Camunda, нам необходимо сделать некоторые дополнительные настройки.
Прежде всего не забыть у исполняемых процессов в свойствах включить флаг Executable.
Настроим свойства пользовательской задачи строгий счёт орехам ведёт (получает орехи со склада): по умолчанию задача будет назначаться пользователю diak (это наш Дьяк приказный, далее мы настроим пользователей для наших исполняемых процессов в веб-приложении Admin BPM-платформы Camunda), который будет вводить информацию об орехах полученным со склада в поля формы.
Назначим поля ввода для формы: Дата, ФИО учётчика (Дьяка), Количество орехов.
Далее нам нужно настроить остальные пользовательские задачи, добавив назначаемого для исполнения задачи пользователя (это будет diak) и задав поля формы для ввода необходимой информации (предлагаю вам немного пофантазировать).
Итак, почти всё готово! Во 2-ой части статьи мы запустим на исполнение наши сказочные процессы на BPM-платформе Camunda. Продолжение следует
СПИСОК ИСТОЧНИКОВ
1. BPMN Specification. [Электронный ресурс] Режим доступа: Интернет: www.omg.org/spec/BPMN/2.0.2/PDF
2. BPMN Whitepapers. [Электронный ресурс] Режим доступа: Интернет: www.omg.org/news/whitepapers/Business_Process_Model_and_Notation.pdf
3. Camunda Open Source Modeler. [Электронный ресурс] Режим доступа: Интернет: camunda.com/download/modeler
4. Camunda Open Source Community Platform. [Электронный ресурс] Режим доступа: Интернет: camunda.com/download