Вижу по теме информацию о том, что преподавателю нужно отправить отчет и контрольный файл. Всего вопросов 2. 1. Куда и как отправлять преподавателю контрольный файл? 2. Какой отчет, о чем писать? |
Межпроцессное взаимодействие
Теоретические сведения
В соответствии с концепцией межпроцессного взаимодействия экземпляр бизнес-процесса может послать сообщение из одного узла экземпляра бизнес-процесса узлу другого экземпляра бизнес-процесса. Для посылки и получения сообщения используются элементы "Отправить сообщение" и "Получить сообщение"
Узел-отправитель посылает сообщение сразу после прихода в него точки управления, после этого точка управления перемещается в следующий узел, а узел-получатель ожидает сообщения, и точка управления может находиться в этом узле долго.
В сообщении содержится следующая информация:
- кому предназначено сообщение
- передаваемые значения переменных бизнес-процесса
В некоторых случаях одно сообщение может быть обработано несколькими получателями. Адресат сообщения может быть определен следующим образом:
- по названию бизнес-процесса (processDefinitionName)
- по названию узла бизнес-процесса (processNodeName)
- по идентификатору экземпляра бизнес-процесса (processInstanceId)
Для задания этих параметров можно использовать:
- переменные экземпляра бизнес-процесса, например, processDefinitionName=${Переменная1}, где "Переменная1"– это переменная содержащая название процесса
- константное значение, например processNodeName = Процесс1, где Процесс1 это название процесса
- предопределенные значения: по названию текущего определения процесса ( ${currentDefinitionName} ), по названию текущего узла ( ${currentNodeName} ), по номеру текущего экземпляра процесса ( ${currentInstanceId} )
Структура данных сообщения позволяет задавать соответствие между переменными отправителя и получателя
Если сообщение послано по названию бизнес-процесса (то есть, названию определения бизнес-процесса), а выполняющихся экземпляров этого бизнес-процесса не существует, то сообщение будет ждать появления первого экземпляра этого определения бизнес-процесса и передаст значения своих параметров первому появившемуся экземпляру в узле "Получить сообщение".
Если, наоборот, существует сразу несколько выполняющихся экземпляров этого бизнес-процесса, то сообщение будет передано сразу всем этим экземплярам.
Порядок выполнения работы
В данном занятии рассматриваются бизнес-процессы, иллюстрирующие механизм межпроцессного взаимодействия: Бизнес-процесс "Пример 8-1" отправляет сообщение в бизнес-процесс "Пример 8-2". Используется маршрутизация "по названию процесса". В качестве данных, пересылаемых в сообщении, используется введённый пользователем текст, а также id экземпляра бизнес-процесса "Пример 8-1"
Бизнес-процесс "Пример 8-2" получает данные, пользователь изменяет полученное значение текстовой переменной, и высылает сообщение обратно в бизнес-процесс "Пример 8-1", при этом используется маршрутизация "по ID процесса".
Откройте среду разработки системы RunaWFE
1. Создайте новый проект - Занятие 8
2. Создайте новый процесс:
3. Введите название процесса – "Пример 8-1"
4. Добавьте элементы на схему бизнес-процесса в соответствии с рис. 13.1
В бизнес-процессе используется следующие элементы: "Начало", "Окончание", "Действие", "Задача сценария", узел "Отправить сообщение" и "Получить сообщение". Для изменения названий по-умолчанию, выделите элемент, кликнув на него, перейдите в свойства, введите новое значение в поле Название.
Для элемента "Задача сценария" используйте опцию компактный вид (см. пункт 1 раздела "Работа с MS Word-ботом" )
5. Создайте бизнес-процесс "Пример 8-2" в соответствии с рис. 13.2.
Здесь также как и в процессе "Пример 8-1" используются элементы отправки и принятия сообщений.
6. Создайте роли
В разрабатываемых процессах используются следующие Роли:
- "сотрудник", используется в процессе "Пример 8-1", будет инициализирована пользователем, запустившим процесс.
- "отдел кадров", используется в процессе "Пример 8-2", будет инициализирована пользователем, запустившим процесс.
7. Создайте переменные
В процессе "Пример 8-1" используются следующие переменные:
- "отправленное сообщение", это переменная формата "Текст", которую вводит пользователь в узле "Ввести сообщение для отправки" и отправляет в экземпляры процесса "Пример 8-2"
- "id отправителя", это переменная формата "Строка", содержит id экземпляра процесса "Пример 8-1", также отправляется в сообщении. Должна быть проинициализирована в задаче сценария "Получение id экземпляра процесса" с помощью обработчика "Выполнить формулу"
В процессе "Пример 8-2" используются следующие переменные:
- "полученное сообщение", это переменная формата "Текст", которую процесс получает из присланного сообщения, обрабатывает и отправляет обратно в экземпляр "Пример 8-2"
- "id отправителя", это переменная формата "Строка", содержит id экземпляра процесса "Пример 8-1". Принимает значение из сообщения, и необходима для определения получателя, т.е. используется в свойствах маршрутизации.
Для создания переменной перейдите на вкладку "Переменные" и нажмите "Создать" (См. рис. 13.3). В появившейся форме введите название переменной (См. рис. 13.4), нажмите "Далее" и выберите ее формат (См. рис. 13.5).
8. Выберите класс обработчика в задачи сценария "Получение id экземпляра процесса"
В процессе "Пример 8-1" необходимо использовать обработчик "Выполнить формулу", в котором определить id данного экземпляра и проинициализировать полученным значением переменную "id отправителя". Для этого выделите на схеме элемент Задача сценария, перейдите в его свойства и кликните в поле "Класс обработчика" (См. рис. 13.8)
В появившейся форме выберите из списка обработчик "Выполнить формулу" и нажмите ОК. Вернитесь в свойства задачи сценария, нажмите на поле "Конфигурация".
Добавьте конфигурацию следующего вида:
'id отправителя'=get_process_id();
Здесь используется функция get_process_id, которая возвращает номер текущего экземпляра процесса
Замечание. Для вставки в конфигурацию переменных воспользуйтесь пунктом "Вставить переменную", соответственно для вставки функции используйте "Вставить функцию"
9. Создайте графические формы
Кликните на узел "Ввести сообщение для отправки" графа процесса "Пример 8-1" правой кнопкой мыши и выберите команду "Форма" > "Создать форму" (левой кнопкой мыши) - См. рис. 13.10.
Замечание. По умолчанию в качестве редактора форм используется CKEditor4. Однако, в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), формы могут отображаться некорректно. В этом случае следует переключить редактор на FCKEditor2 (как переключить редактор см. "Изучение перспективы данных" )
В появившимся выпадающем списке выберите тип формы "Произвольная форма".
Поместите на форму компонент "Ввод переменной" для ввода значения переменной "отправленное сообщение" (См. рис. 13.11)
В процессе "Пример 8-2" также создайте форму в узле "Редактировать полученное сообщение", процесс создания аналогичен описанному примеру. На форме необходимо расположить компонент "Ввод переменной" для редактирования значения переменной "полученное сообщение" (См. рис. 13.12)
Создайте форму для отображения значения переменной после взаимодействия между процессами. Кликните на узел "Ознакомиться с полученным сообщением" графа процесса "Пример 8-1" правой кнопкой мыши и выберите команду "Форма" > "Создать форму" (левой кнопкой мыши), после чего расположите на форме компонент "Отобразить переменную" для "отправленное сообщение", в поле "Форма отображения" выберите "Как неактивный компонент ввода" (См. рис. 13.13)
10. Настройте межпроцессное взаимодействие
Настройка отправителя сообщения в процессе "Пример 8-1" Для настройки отправки кликните правой клавишей мыши на элементе "отправить сообщение", и выберите пункт "Конфигурация" (См. рис. 13.14)
В свойствах маршрутизации укажите следующие настройки (См. рис. 13.15)
В области свойств маршрутизации нажмите на стрелку расположенную на кнопке "Добавить", выберите из выпадающего списка пункт "По названию процесса" для установки маршрутизации по названию бизнес-процесса.
В появившейся форме введите в поле "Значение" - Пример 8-2, поле "Название" оставьте неизменным. Нажмите "ОК"
Для добавления переменных используйте кнопку "Добавить", расположенную в области "Переменные в сообщении". В появившейся форме выберите переменную процесса, а также задайте название данной переменной.
Таким образом в соответствии с параметрами представленными на рис. 13.15, будут отправлены значения переменных "id отправителя" и "отправленное сообщение" экземпляра бизнес-процесса "Пример 8-1".
Настройка получателя в процессе "Пример 8-2".
Кликните правой клавишей мыши на элементе "получить сообщение", и выберите "Конфигурация" (См. рис. 13.16)
В свойствах маршрутизации укажите следующие настройки (См. рис. 13.17)
Используйте маршрутизацию по названию текущего определения процесса (currentDefinitionName), для этого в области свойств маршрутизации нажмите на стрелку расположенную на кнопке "Добавить", выберите из выпадающего списка пункт "По названию процесса". Добавьте переменные в сообщении в соответствии с рис. 13.17.
Таким образом, будут получены:
- значение переменной "id отправителя" из сообщения в переменную "id отправителя" экземпляра процесса "Пример 8-2"
- значение переменной "отправленное сообщение" в переменную "полученное сообщение"
Настройка отправителя в процессе "Пример 8-2".
После получения и обработки сообщения, процесс "Пример 8-2" возвращает обработанные данные в экземпляр процесса "Пример 8-1", для этого используются следующие настройки (См. рис. 13.18, рис. 13.19, рис. 13.20, рис. 13.21, рис. 13.22):
Добавьте свойство маршрутизации "по ID процесса", для этого нажмите на выпадающий список расположенный на кнопке "Добавить" в области свойств маршрутизации и выберите соответствующий пункт. В открывшемся окне введите параметры представленные на рис. 13.19:
Данная настройка задает выбор получателя по id экземпляра бизнес-процесса, значение id хранится в переменной "id отправителя"
Перейдите в область переменных в сообщении и нажмите "Добавить", в открывшемся окне введите "полученное сообщение" в качестве названия переменной в процессе и сообщении (См. рис. 13.20)
Настройка получателя в процессе "Пример 8-1"
Обработанные в бизнес-процессе "Пример 8-2" данные возвращаются в "Пример 8-1", для принятия этих данных необходимо настроить элемент "Принять сообщение" следующим образом (См. рис. 13.22)
Свойство маршрутизации задано как processId = ${currentProcessId}, то есть по id процесса, а соответствие переменных установлено как "отправленное сообщение"="полученное сообщение", то есть присланное в переменной "полученное сообщение" значение будет сохранено в переменную "отправленное сообщение"
11. Загрузите бизнес-процесс на RunaWFE сервер
Загрузите разработанные бизнес-процессы в систему, используя пункт меню "Файл/Экспорт процесса" (Подробнее см. "Практикум. Перспективы исполнимых бизнес-процессов.", практическое занятие "Изучение перспективы потока управления", Порядок выполнения работы, Пункт 11-14).
Войдите в web-интерфейс системы RunaWFE под пользователем Administrator.
После загрузки необходимо настроить обладателей полномочий на данные процессы.
Для "Пример 8-1" нужно добавить в обладатели полномочий группу "Сотрудники" с правами на чтение, чтение экземпляра и запуск, а для "Пример 8-2" группу "Отдел кадров", также с правами на чтение, чтение экземпляра и запуск (Подробнее см. "Изучение интерфейса системы RunaWFE" ).
12. Запустите бизнес-процессы и доведите экземпляры процессов до завершения.
Описание порядка выполнения бизнес-процесса взаимодействия:
Пользователь запускает экземпляр процесса "Пример 8-1", срабатывает обработчик, в котором определяется id данного экземпляра процесса. Пользователь вводит текст отправляемого сообщения в переменную "отправленное сообщение". Затем происходит отправка сообщения в экземпляр процесса "Пример 8-2", передаются значения переменных "отправленное сообщение" и "id отправителя". Процесс "Пример 8-1" переходит в следующий узел, ожидая сообщения с результатом обработки.
Пользователь, принадлежащий группе "Отдел кадров", запускает экземпляр процесса "Пример 8-2". Сразу после запуска экземпляра бизнес-процесса точка управления останавливается в узле "Получить сообщение", ожидая данные. После получения сообщения, происходит загрузка значений в переменные "полученное сообщение" и "id отправителя". Далее точка управления переходит в узел "Редактировать полученное сообщение", где пользователь редактирует значение переменной "полученное сообщение". Затем происходит отправка отредактированного значения обратно в экземпляр "Пример 8-1", при этом используется полученное ранее значение id этого экземпляра. Экземпляр бизнес-процесса "Пример 8-1" получает из сообщения значение "отправленное сообщение" и точка управления переходит в узел "Ознакомиться с полученным сообщением".
Выполнение бизнес-процессов по шагам.
Для запуска процесса "Пример 8-1" войдите в систему под пользователем из группы "Сотрудники", например "Сверчков" и кликните на имя процесса в общем списке бизнес-процессов (См. рис. 13.23):
Будет создан новый экземпляр бизнес-процесса, в котором точка управления перейдет в узел "Ввести сообщение для отправки" (См. рис. 13.24)
В форме задания этого узла введите текст сообщения для отправки, например: "Hello" (См. рис. 13.25)
увеличить изображение
Рис. 13.25. Ввод текста, который будет отправлен другому экземпляру бизнес-процесса
На следующем шаге бизнес-процесса произойдет определение id данного экземпляра процесса и отправка сообщения, содержащего переменные "отправленное сообщение" и "id отправителя" (См. рис. 13.26).
![Фрагмент формы истории экземпляра бизнес-процесса, показывающий последовательность событий экземпляра бизнес-процесса](/EDI/19_07_20_1/1595110787-29918/tutorial/757/objects/13/files/13.26.png)
Рис. 13.26. Фрагмент формы истории экземпляра бизнес-процесса, показывающий последовательность событий экземпляра бизнес-процесса
Управление перейдет в узел "Принять сообщение", в котором оно будет находиться до тех пор, пока не получит сообщение от процесса "Пример 8-2"
Запустите экземпляр бизнес-процесса "Пример 8-2".
Войдите в систему под пользователем, входящим в группу "Отдел кадров", например, Личинкин, и кликните на имени бизнес-процесса "Пример 8-2" (См. рис. 13.28).
Будет запущен экземпляр бизнес-процесса, в котором точка управления остановится в узле ожидания сообщения, а после получения сообщения перейдет в узел "Редактирование полученного сообщения" (См. рис. 13.29, рис. 13.30, рис. 13.31).
В форме задания узла дополните полученное сообщение (См. рис. 13.32, рис. 13.33)
После выполнения задания произойдет отправка сообщения (Hello World!!!), в экземпляр процесса выбранного по id, далее экземпляр бизнес-процесса "Пример 8-2" завершится (См. рис. 13.34)
Экземпляр бизнес-процесса "Пример 8-1" получит сообщение, содержащее переменную "полученное сообщение". Переменная "отправленное сообщение" будет проинициализирована значением "Hello World!!!" и ее значение будет выведено на форму узла "Ознакомиться с полученным сообщением" (См. рис. 13.35)
После выполнения задания бизнес-процесс завершится (См. рис. 13.37)
Задание для самостоятельной работы
Разработайте бизнес-процессы "Пример 8-3" и "Пример 8-4", схемы которых изображены на рис. 13.38 и рис. 13.39. "Пример 8-3" отправляет в сообщении введённые пользователем данные в процесс "Пример 8-4". Используется маршрутизация "по названию процесса". "Пример 8-4" получает данные и отображает их на форме.
В "Пример 8-3", используйте элемент "Отправить сообщение" для отправки данных.
В "Пример 8-4", используйте элемент "Получить сообщение" для получения данных.
Описание ролей
В разрабатываемых процессах должны быть следующие Роли:
- Роль "сотрудники", используется в процессе "Пример 8-3", будет инициализирована пользователем, запустившим процесс.
- Роль "отдел кадров", используется в процессе "Пример 8-4", будет инициализирована пользователем из группы "Отдел кадров", запустившим процесс.
Описание переменных.
В процессе "Пример 8-3" используйте переменную формата Текст – "отправленное сообщение", которая предназначена для отправки в сообщении. Переменная инициализируется значением, введённым пользователем в узле "Ввести сообщение для отправки", а затем передаётся в процесс "Пример 8-4" с помощью механизма сообщений.
В процессе "Пример 8-4" используйте переменную "полученное сообщение" формата Текст. Переменная должна принимать значение в сообщении от процесса "Пример 8-3".
Описание графических форм.
Замечание. По умолчанию в качестве редактора форм используется CKEditor4. Однако, в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), формы могут отображаться некорректно. В этом случае следует переключить редактор на FCKEditor2 (как переключить редактор см. "Изучение перспективы данных" )
В процессе "Пример 8-3" создайте форму в узле "Ввести сообщение для отправки". Для ввода "отправленное сообщение" используйте компонент форм "Ввод переменной". В процессе "Пример 8-4" создайте форму в узле "Ознакомиться с полученным сообщением". На форме необходимо расположить компонент форм "Отобразить переменную" для вывода значения переменной "полученное сообщение".
Задание проверок значений, введенных в элементы форм (валидация).
В процессе "Пример 8-3" необходимо задать проверку переменной "отправленное сообщение", выбрав валидатор "Обязательное поле" и задав текст сообщения об ошибке (см. "Изучение перспективы операций" .
Настройка межпроцессного взаимодействия.
Настройка отправителя.
В процессе "Пример 8-3" необходимо настроить отправку сообщения. Используйте отправку "По названию процесса", в качестве названия процесса используйте - Пример 8-4
Задайте переменные, которые будут отправлены в сообщении. Выберите переменную "отправленное сообщение".
Настройка получателя сообщения.
В процессе "Пример 8-4" настройте параметры получения сообщения, для этого кликните правой клавишей мыши на узле "Получить данные" и выберите пункт "Конфигурация".
В появившейся форме добавьте свойства маршрутизации, а также соответствие переменных для получения данных. Используйте получение "По названию процесса", для этого необходимо кликнуть на соответствующую кнопку, в результате в свойствах появится: processDefinitionName = ${currentDefinitionName}, где currentDefinitionName указывает на текущее название процесса.
Также необходимо добавить переменные принимаемые в сообщении, для этого нажмите кнопку "добавить" внизу формы и выберите название переменной "полученное сообщение". Затем в поле названия переменной в сообщении впишите "отправленное сообщение".
Таким образом будет установлено соответствие между посылаемой в сообщении переменной "отправленное сообщение" процесса "Пример 8-3" и переменной "полученное сообщение" в процессе "Пример 8-4". Загрузите бизнес-процессы в систему, установите на них необходимые права (выполняется аналогично процессам "Пример 8-1/8-2", см. Практическое занятие "Межпроцессное взаимодействие", пункт 11).
Запустите экземпляры бизнес-процессов и доведите их до завершения.
Описание действий пользователей.
Пользователь запускает экземпляр процесса "Пример 8-3", вводит текст отправляемого сообщения, после чего происходит отправка в экземпляры процесса "Пример 8-4". Процесс "Пример 8-3" переходит в состояние "завершения".
Пользователь, принадлежащий группе "Отдел кадров", запускает экземпляр процесса "Пример 8-4", после чего управление останавливается на узле "Получить данные", ожидая данные. Сообщение приходит во все экземпляры "Пример 8-4", где полученное значение переменной (текст сообщения) отображается на форме, после чего экземпляры "Пример 8-4" также завершаются.
Реализуйте два сценария выполнения разработанного взаимодействия.
1). Первый сценарий - "Один получатель"
Для запуска процесса "Пример 8-4" необходимо войти под пользователем из группы "Отдел кадров" (например Личинкин), и кликнуть на название данного процесса в общем списке процессов.
Запустится экземпляр процесса, и управление остановится на узле "Получить данные" ожидая сообщение. Далее пользователь, входящий в группу "Сотрудники", (например, Сверчков) запускает экземпляр процесса "Пример 8-3", вводит текст посылаемого сообщения.
Экземпляр процесса "Пример 8-3" завершается. При этом экземпляр процесса "Пример 8-4", получает сообщение и управление переходит в узел "Ознакомиться с полученным сообщением", пользователь Личинкин видит присланное сообщение на форме.
2). Второй сценарий - "Несколько получателей"
Реализуйте сценарий отправки сообщения сразу нескольким экземплярам "Пример 8-4".
Запустите экземпляры процесса "Пример 8-4" под всеми пользователями входящими в группу "Отдел кадров":
- Личинкин
- Гусеницын
Далее запустите экземпляр процесса "Пример 8-3" под пользователем входящим в группу "Сотрудники". Проверьте, что сообщение придёт сразу во все ожидающие его экземпляры "Пример 8-4".
Требования к представлению результатов занятия
В качестве результата занятия должны быть представлены преподавателю отчет и файл с данными archive.datafile, полученный командой "Система/Выгрузить файл с данными/Экспортировать", содержащие разработанные на занятии бизнес-процессы.
В отчете должны содержаться следующие данные:
- Скриншоты основных действий, совершенных на занятии, с пояснениями
- Скриншоты, содержащие маршруты точек управления для экземпляров бизнес-процессов, доведенных до завершения.
Контрольные вопросы
- Какой из элементов соответствует отправке сообщения?
a. Элемент
b. Элемент
- Может ли экземпляр бизнес-процесса, соответствующий одному определению бизнес-процесса, послать сообщения экземпляру, соответствующему другому определению бизнес-процесса?
- В элементе "Отправить сообщение"
a. Точка управления сразу переходит в следующий узел
b. Точка управления ждет ответа на сообщение