Сделай Сам Свою Работу на 5
 

Моделирование бизнес-процессов в Bizagi BPMN Suit (продолжение)

ЛАБОРАТОРНАЯ РАБОТА № 1

Моделирование бизнес-процессов в Bizagi BPMN Suit

Цель работы

Целью работы является изучение технологии построения модели процесса в нотации BPMN 2.0 с использованием Bizagi BPM Suite (Express).

Задачи работы

Основными задачами лабораторного практикума являются: закрепление и расширение теоретических знаний студентов, приобретение навыков моделирования простых процессов в Bizagi BPM Suite.

Краткое руководство пользователя по использованию программного продукта Bizagi BPM Suite

Для запуска Bizagi Xpress

необходимо в меню Пуск> Программы выбрать Bizag i> Bizagi Xpress > Bizagi Studio.

Следующий шаг – создание проекта. В меню программы перейти на вкладку New > Задать имя проекта и нажать Next, после чего запустится процесс создания нового проекта. Через несколько минут будет создан проект и произойдет переход в Wizard.

Краткие теоретические сведения

Проект в понимании Bizagi, у него есть отличия от других BPMN систем. Обычно проект – это некоторая папка на диске, куда складываются артефакты, исходные коды проекта? в Bizagi это немного по-другому. Проект это – база данных, в которую попадают всё что разрабатывается (схемы процессов, формы, таблицы в которых хранятся атрибуты процессов, сами экземпляры процессов). Есть понятие приложение, которое объединяет несколько бизнес процессов.

На рисунке 1 это так называемый «Wizard». Bizagi в таком наглядном виде представляет последовательность разработки.

Включает 7 шагов.

BPMN-моделер

2. Model Data (Дизайнер логической схемы базы данных)

3. Define Form (Дизайнер веб-форм к шагам процесса)

4. Business Rules (Редактор и движок бизнес-правил)

5. Performers (Редактор оргструктуры)

6. Integrate (Средства интеграции со сторонними системами и базами данных)

7. Execute (Процессная аналитика (BAM) и динамическая отчетность)

 

 

Рисунок 1- Wizard

От моделирования процесса к моделированию данных, разработке форм и т.д.

Есть альтернативный взгляд, он называется «Модули», более привычный для программистов, где есть панель навигации, возможностей такой взгляд предоставляет больше. А через «Wizard» работать удобнее, поэтому будет использован именно этот вид.



 

Методика выполнения лабораторной работы

Создание нового процесса.

Процесс будет называться Zakaz_Avto (Заказ автотранспорта).

1) Для этого необходимо выбрать первый пункт «Model Process» и кликнуть левой кнопкой мыши на пункте « New process» далее происходит переход в BPMN редактор.

В Bizagi одна из самых полных реализаций BPMN. Это одна из сильных сторон Bizagi.

Легенда следующая: есть компания, у неё некоторый парк собственных автомобилей и потенциально любой сотрудник компании может заказать автомобиль, для каких-то служебных нужд. Соответственно проект будет назван Zakaz_Avto.

Заказчик просит автомобиль, после этого он попадает в канцелярию, где эту заявку одобряют или нет, после этого гараж окончательно удовлетворяет заявку.

Здесь будут три действующих лица:

Заказчик

Канцелярия

3. Гараж

Рисунок 2 – Pool

2) Для указания действующих лиц используется компонент Lane его необходимо прикрепить к уже существующему и задать имя (необходимо в Properties (свойства), в пункте Display Name указать его имя).

3) Старт бизнес-процесса Start Event (Зелёный круг на панели инструментов). Необходимо кликнуть на установленный компонент Start Eventи удерживая левую кнопку мыши на компоненте перетащить его в нужное место. Первый шаг бизнес процесса (Task) будет называться «Ввести заявку».

4) Заявка попадает в канцелярию, которая должна приять решение одобрить заявку или нет. Необходимо создать компонент Task с именем «Одобрить заявку» на дорожке «Канцелярия». Так же на этой дорожке необходимо разместить шлюз (Gateway) именем которого будет «Одобрено?»

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

6) Если не одобрено, переход к задаче «Машина не выделена». На этом процесс заканчивается конечным событием (End event) «Отказ».

Если же отказ произошел на шлюзе с именем «Принято?» то происходит возврат потока операции на задачу «Одобрить заявку», потому что возможен сценарий, когда машины на указанную дату нет, или нет указанного типа, но есть на другую дату, чтобы окончательно отказывала всегда канцелярия.

7) Для этого необходимо нажать на шлюз «Принято» выбрать Task и перенести его в задачу «Одобрить заявку», таким образом, произойдет соединение шлюза и задачи. Это в случае «Нет».

8) В случае «Да», необходимо поставить параллельный шлюз. Параллельный шлюз представляет собой механизм для синхронизации параллельных Потоков операций. Для этого необходимо правой кнопкой кликнуть на нужный шлюз найти Gateway type и выбрать пункт Parallel Gateway.

9) Далее Задача «Машина выделена» на дорожке Заказчик. И поставить задачу водителю «Выполнить рейс», которая будет находиться на дорожке Гараж.

10) Так же необходимо объединить эти потоки операций для этого необходимо поставить ещё один параллельный шлюз (Parallel Gateway). На этом процесс заканчивается конечным событием (End event) «Успех».

11) Так же можно поставить нормативную продолжительность задач (свойства задачи (Properties) внизу есть пункт Duration: дни, часы, минуты), указать по 1 часу для каждой из задач.

И аналогичным образом свойства Пула в целом, здесь больше возможностей: продолжительность ожидаемая (2), минимальная (1) и максимальная (3).

Рисунок 3 – Схема процесса

На уровне схемы процессов всё.


Моделирование данных.

1) Далее к следующему шагу, Model data (моделирование данных). Выбрать пункт Model data. Система просит указать Process Entity, выбрать Zakaz_Avto.

У Bizagi для хранения атрибутов реализована очень простая, но крайне удачная концепция. Каждому процессу соответствует своя таблица базы данных, соответственно одному экземпляру процесса соответствует одна запись. С развитием появятся другие таблицы. Процессная сущность – это физическая таблица в базе данных.

Пока что существует 1 таблица именем , которого является название процесса Zakaz_Avto.

Рисунок 4 – Лист атрибутов

2) Необходимо задать атрибуты, которые будут столбцами этой таблицы:

Место подачи

Время подачи

Маршрут

Пассажиры

Рисунок 5 – Model data

Для этого необходимо нажать правой кнопкой мыши на сущность Zakaz_Avto и выбрать там пункт Edit Attribute List, после чего появится окно, для заполнения атрибутов состоящее из нескольких шагов. Для каждого атрибута необходимо заполнить 3 поля: Display Name, Name, Type.

Здесь и в других местах (в имени Задачи и в имени проекта) у Bizagi для элементов есть два имени Name и Display Name. На Name достаточно жесткие ограничения, потому что это имя транслируется в имена переменных, не допускается кириллица.

С другой стороны, в Display Name можно задавать имена на нескольких языках.

Тип определяет, какого рода данные будут храниться в атрибуте. Кроме стандартных (String, Date Time, Boolean), здесь можно указать и более сложный тип или создать новый.

3) После заполнения всех полей нажать Finish.


Создание форм

1) Далее, к следующему шагу, Define Forms (Экранные формы) .

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

На рисунке 6 Показана схема и желтым восклицательным знаком показаны задачи, для которых эта форма не определена. Далее нужно кликнуть на задачу и определить эту форму.

Рисунок – 6 - Define Forms

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

2) Следует перетащить нужные атрибуты слева на право.

Рисунок 6 - Форма

3) Время подачи нужно уточнить, нужно не просто дата, а Дата Время.

Справа на форме, кликнуть по атрибуту Время подачи, найти в самом низу пункт Convert to далее Date-Time далее Date-Time.

Для ввода заявки такой формы вполне достаточно.

4) Необходимо определить форму для каждой задачи. Для ускорения процесса можно нажать на кнопку Copy From и позаимствовать дизайн с уже имеющегося шага, выбрать образец и нажать Ок и дизайн скопируется.

Это не очень удобно т.к. если необходимо внести изменения, то придется изменять каждую из форм. Поэтому рекомендуемый способ немного другой:

5) Определить некий повторно используемый компонент. Некое визуальное представление для этой сущности.

Слева в модели данных необходимо раскрыть пункт Zakaz_Avto где будут находиться атрибуты, кроме них в самом низу будет находиться пункт Forms. Кликнуть правой кнопкой и далее New Form. Уже известным образом перекинуть из модели данных нужные атрибуты. Так же нужно задать имя Zakaz (поле Display Name) и время.

6) Так же можно сделать поля обязательными для заполнения, кликнуть справа на форме правой кнопкой, далее Edit Display Form после произойдет переход в окно редактирования этой формы. Далее правой кнопкой на атрибуте>Required и там указать True. После закрытия появляется форма, ассоциированная с этой сущностью. Теперь её необходимо вставить вместо атрибутов, которые были уже вставлены ранее. Таким образом, форма представляет единое целое. Нужно вернувшись к предыдущей форме.

7) Так же необходимо заявку сделать закрытой для редактирования. Для этого кликнуть правой кнопкой мыши и на форме и выбрать пункт Editable и выбрать False.

8) А вот решения нет. Т.е. нет атрибута, в котором сохранится решение. Можно выйти, и вернутся к шагу моделирования данных, и добавить там нужный атрибут. Но можно сделать это проще: не выходя из окна редактирования формы, слева на модели данных кликнуть правой кнопкой мыши на пункт Zakaz_Avto выбрать Edit Entity.

Рисунок 7 – Entity Properties

Далее Next и отобразится список атрибутов. Тут необходимо добавить необходимый атрибут под названием «Одобрено». Так же Атрибут «» для следующего шага. Тип данных у этих атрибутов должен быть Boolean. Готово.

9) Далее добавить атрибут «Одобрено» на форму «Одобрить заявку». Можно поменять вид атрибута на Checkbox. Так же лучше сделать по умолчанию Одобрено (для этого нужно в Properties найти Default Value и указать True). Так же можно украсить форму, добавив на неё визуальные элементы, отделить визуально Заявку и Решение. (Компонент Adds a group) .

 

10) Следующая форма «Принять заявку», для неё в качестве образца лучше взять предыдущую форму (кнопка Copy From) . Единственное отличие в группе Решение: вместо атрибута Одобрено - Принято.

11) Следующей будет форма для задачи Машина не выделена. Здесь в группе решение нужно вместо атрибута вставить статичный текст, извещающий о том, что машина не выделена. Для этого используется компонент Adds a Label .

12) Следующая форма «Выполнить рейс», в качестве образца взята предыдущая форма. Текст изменён на: «Машина выделена. Выполнить рейс».

13) Следующая форма Машина выделена, в качестве образца взята предыдущая форма. Текст изменён на: «Ждите. Машина выделена.».

 


Условия перехода.

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

1) Для этого необходимо перейти к 4 разделу разработки «Business Rules». Если вспомнить, то, были нарисованы стрелки, но не было указанно, когда по какой стрелке идти. На этом шаге есть 2 пункта, Define Expression и Activity Actions. Для определения условий перехода нужен 1 пункт.

Загрузив его, появляется схема процесса, где выделены желтым цветом стрелки шлюзов.

Рисунок 8 - Define Expression

2) Шлюз «Одобрено», стрелка «Да»:

Кликнуть левой кнопкой мыши по стрелке, откроется окно Boolean Expression. В этом окне, слева Модель данных, в которой есть сущность Zakaz_Avto, раскрыв которую можно увидеть её атрибуты. Когда должен сработать переход? Когда значение атрибута Одобрено равно True. Для этой стрелки нужен атрибут Одобрено. Этот атрибут необходимо перетащить в правую часть, а именно в поле <insert value>. В пункте <insert an operator> выбрать «is equal to», а в <insert a value> выбрать True. Finish.

Рисунок 9 - Boolean Expression

 

3) Парная стрелка Нет. Для неё конечно можно аналогично указать, когда Одобрено равняется False. Лучше это сделать методом «Иначе». Для этого нужно закрыть первое окно (Boolean Expression) и произойдёт автоматический переход к окну с названием Expression Selection выбрать и Is Else и нажать на кнопку Ок. Появляется BPMN Defolt flow (зачеркнутая стрелка).

4) Аналогично со вторым шлюзом, используется атрибут Принято.

Рисунок 10 – Is Else

Парную стрелку методом Is Else.


Работа с порталом Bizagi

1) Теперь можно нажать на кнопку Run и запустить созданный проект. После нажатия, запускается портал Bizagi, приложение cкомпилируется.

2) После запуска нужно запустить процесс, для этого кликнуть на вкладку Процессы, там есть пункт Запустить.

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

3) Первой появляется форма Ввести заявку. Заполнив заявку, нажать на кнопку Дальше .

4) Следующей появляется форма «Одобрить заявку». Оставить решение положительным. В форме «Принять заявку» так же оставить положительное решение.

Рисунок 11 – Bizagi портал

5) Далее видны, как и в схеме процесса 2 распараллеленные задачи.

Рисунок 12 – Исполняющиеся задачи

6) Можно увидеть эти 2 задачи другим образом. Кликнуть Процессы >Исполняющиеся. Можно кликнуть Просмотр и увидеть, как процесс исполнялся.

Рисунок 13 - Просмотр

 


ЛАБОРАТОРНАЯ РАБОТА № 2

Моделирование бизнес-процессов в Bizagi BPMN Suit (продолжение)

 

5.6 Работа с более сложными структурами данных.

Необходимо дать возможность заказчику указывать, какой тип автомобиля он хочет.

1) Это возможно осуществить, перейдя к шагу 2, моделирование данных. Для таких целей нужно добавить ещё одну таблицу и подключить её к существующей, но легче работать в одной, и Bizagi позволяет это делать.

2) Открыть лист атрибутов (Edit Attribute List). Добавить атрибут определяющий тип машины. А вот тип будет ссылка на справочник. Т.е. на новую сущность.

3) Выбрать тип Parameter, потому что в данном случае будет справочник. И New Entity потому что такого справочника пока что нет.

4) После нажатия на New Entity появляется определение этой сущности. Имя этой сущности TipMash. Так же нужно указать атрибуты этой сущности (1 атрибут, Тип машины тип String). Далее Finish. На рисунке видно, что начинает выстраиваться Erдиаграмма. Видно, что заявка имеет ссылочный атрибут Тип машины, который ссылается на сущность и там есть один атрибут Тип машины.

Рисунок 14 - Тип машины

5) Сразу, прямо отсюда можно наполнить справочник, какими ни будь значениями. Кликнув правой кнопкой мыши выбирать Values, нажать на кнопку Тип машины в низу окна, появляется 1 значение.

Примечание. Есть кнопка добавить , и нет кнопки удалить. Т.е из справочника данные принципиально никогда не удаляются. Единственное, что можно сделать, пометить как не используемые (Disabled). Это сделано что бы гарантировать ссылочную целостность, чтобы удаление какого-то значения не исказило данные уже имеющиеся.

6) Теперь необходимо «прицепить» эти данные к форме. На вводе заявки появится возможность выбора тип автомобиля. Открыть форму «Ввести заявку», далее Edit Display Form, и перенести туда атрибут «Тип машины». Атрибут был добавлен в общий блок, соответственно необходимость в редактировании остальных форм отпадает.

Рисунок 15 – Форма Тип машины

Можно удостоверится и открыть остальные формы.

После этих действий необходимо запустить процесс и проверить внесенные изменения.

Рисунок 16 – Заполоненная форма Тип машины

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

7) Аналогично предыдущему, начать с уже существующей таблицы. Перейти к моделированию данных. Edit Attribute List, и создать атрибут под названием затраты. Но тип у этого атрибута будет необычный, Collection. Здесь связь будет не N к одному, а N к, т.е. одной заявки соответствует N записей этих затрат. Далее все аналогично. Master, потому что это не справочник а фактические данные, New Entity. Создать сущность под названием Zatrati.

Рисунок 17 – Model Data

Атрибутами будут:

1.Типы затрат (имя TipiZatrat, значения в поле Name должны отличатся). Это будет справочник, Так же как и в предыдущей сущности. Entity> Parameter> New Entity. Имя атрибута справочника Типа затрат (TpZatrat).

2.Документ (Doc), основание. Тип String.

3.Сумма (Suma). Тип Currency.

Готово. Заявка ссылается на множество записей затрат, те в свою очередь на справочник типов затрат.

Рисунок 18 - Затраты

8) Вставить эти затраты в форму а именно в форму задачи «Выполнить рейс». Открыть форму, и вставить атрибут затраты на форму. Там появится таблица затрат, где можно добавлять и удалять строки.

9) Далее необходимо определить внешний вид этой таблицы.

Рисунок 19 – Форма Затраты

Для этого Display Form> New Form. Имя Zatrati. Перекинуть туда атрибуты. Сохранить, закрыть. Далее необходимо разрешить удаление. Выделить табличку и в свойстве Allow Delete ставим True. Для улучшения внешнего вида сделать следующее:

10) В свойствах есть вкладка Labels и вместо Add Затраты вписать следующее Ещё затраты, а вместо Delete написать Удалить. Ещё можно указать итого (Свойства Advanced> Grid Totalizers> далее кнопку Add далее поменять в Display Text текст SUM на Итого).

11) Необходимо проверить результаты, нажать кнопку Run.

Заполнить все формы, переходя от шага к шагу. Выбирать «Выполнить рейс». Нажать «Ещё затраты» .

Но как видно справочник Тип затрат пустой. Можно вернутся к разработке и там его наполнить, так же портал даёт возможность администрирования, позволяя наполнять справочники нужными данными, не выходя из портала.

Выбирать Администрирование>Тип затрат. Нажfnm на кнопку Добавить Тип затрат . Ввести необходимые данные и нажать на кнопку сохранить (были созданы следующие типы затрат ГСМ, Сервис, Прочее).

Далее перейти в исполняющиеся процессы, найти там запущенный процесс нажать на Выполнить рейс . Так же создать список затрат.

Заполнить так как показано на рисунке 20.

 

Рисунок 20 – Заполненная форма Затраты

Автоматизация.

До этого момента всё происходило вручную.

Для дальнейшего усовершенствования процесса нужно добавить 3 атрибута: Заказчик, Номер заказа и Дата заказа.

1) Далее в моделирование данных и создать эти атрибуты.

У атрибута Заказчик тип будет не строка, а ссылка на системную сущность.

Тип> Entity>System>WFUSER. Таким образом Будут указаны данные зарегистрированного пользователя.

Номер заказа – тип String. Дата заказа Date Time.

2) Перейти ко второму шагу разработки, формам, открыть общую форму (Edit Display Form). Найти сущность Заказчик, раскрыть и перенести атрибут fullName форму. Поменять имя атрибута на Заказчик (Display Name).Так же нужно перенести атрибуты Номер заказа и Дата заказа. Лучше запретить редактирование этих атрибутов. Сохранить.

Примечание. Если не сделать атрибут Заказчик не редактируемым то будет ошибка, и не удастся сохранить форму.

3) Осталось определить автоматические действия. Перейти в раздел Business Rules, нажать на Activity Action . Прямо на входе в первой задаче вычислить эти действия. Кликнуть на задачу Ввести заявку, появится окно Bizagi Dialog, выбираем On Enter , нажать на в нижнем левом углу окна, там выбрать Expression. Появится новое окно, ввести имя в поле Name (Compute). Далее правой кнопкой на стрелке и выбрать Add Expression. Далее Ок.

Рисунок 21 - Expression

Два раза кликнуть по появившейся иконке появится окно редактирования Edit Expression. Для кодирования в Bizagi используется Visual J Sharp к которому добавлены некие способы адресации к полям.

4) Обращение к полям происходит следующим образом:

Ввести скобку:<

Появится сущность, выбирать её, далее ввести точку, и выбирать нужный атрибут.

Потребуются атрибуты Заказчик, Номер заказ и Дата заказа. Также потребуются функция Me.

Примечание. Есть описание на сайте Bizagi (ссылка на описание этой функции http://wiki.bizagi.com/en/index.php?title=Advanced_Function:_Me).

Код должен выглядеть следующим образом:

<Zakaz_Avto.Zakazchik> = Me.Case.Creator.Id;

<Zakaz_Avto.NomerZakaza> = Me.Case.CaseNumber;

<Zakaz_Avto.DateZakaza> = Me.Case.CreationDate;

При синтаксических ошибках появляются сообщения. Если всё «чисто» можно запускать.

5) Запустить процесс. Видно, что появились созданные атрибуты Заказчик, Номер заказа и Дата заказа. Но отличие в том что эти атрибуты заполняются сами. Т.е. есть 1 пользователь (admon), и все данные берутся оттуда.

Рисунок 22 – Автоматически заполненная форма Ввести заявку

 



©2015- 2022 stydopedia.ru Все материалы защищены законодательством РФ.