TrainingMaterials 4 2 Ch4

Материал из RunaWFE
Перейти к навигации Перейти к поиску

RunaWFE. Расширенный лабораторный практикум по процессному управлению. Часть 4

Версия 4.2

© 2004-2015, ЗАО "Руна", материалы этого документа распространяются свободно на условиях лицензии GNU FDL. RunaWFE является системой с открытым кодом и распространяется в соответствии с LGPL лицензией (http://www.gnu.org/licenses/lgpl.html).

Введение

Для автоматизации процессного управления предприятием разработан специальный класс компьютерных систем – системы управления бизнес-процессами и административными регламентами (далее СУБПиАР). Основная задача таких систем - раздавать задания исполнителям и контролировать их выполнение. Последовательность заданий определяется схемой бизнес-процесса, которую можно разработать и в дальнейшем быстро модифицировать при помощи среды разработки бизнес-процессов.

В первой части практикума были рассмотрены исполнимые бизнес-процессы и административные регламенты, дано определение исполнимого бизнес-процесса, основанное на четырех перспективах. Также в первой части практикума было дано описание основных элементов систем управления бизнес-процессами и административными регламентами на примере свободного ПО с открытым кодом RunaWFE, показано, как установить систему и приведено вводное занятие, в котором объяснены базовые операции, позволяющие разрабатывать и исполнять бизнес-процессы. Во второй части лабораторного практикума приведено описание трех практических занятий, посвященных изучению трех первых перспектив исполнимого бизнес-процесса:

  • перспектива потока управления (control-flow perspective)
  • перспектива ресурсов (resource perspective)
  • перспектива данных (data perspective)

В третьей части практикума рассмотрена последняя, четвертая перспектива исполнимых бизнес-процессов, объяснена работа с MS Word-ботом, приведено описание самостоятельного занятия.

Первую, вторую и третью части практикума можно найти на сайте проекта RunaWFE в разделе "Документация / Документация для пользователя / Учебные материалы по процессному управлению".

Адрес сайта проекта RunaWFE - http://runawfe.org/rus. Также эти материалы можно найти на ресурсе Intuit.ru по адресу http://www.intuit.ru/studies/courses/2358/658/info .

В настоящей, четвертой части практикума показано межпроцессное взаимодействие, рассмотрены элементы таймеры и обработчики, объяснена работа с MS Excel-ботом.

Система RunaWFE свободно распространяется вместе со своими исходными кодами на условиях открытой лицензии LGPL. Система бесплатная, ее можно свободно установить на любое количество компьютеров без каких-либо ограничений. Скачать дистрибутивы и исходный код ее можно через интернет с портала разработчиков свободного программного обеспечения sourceforge.net по адресу: http://sourceforge.net/projects/runawfe.

Общая информация

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

Практическое занятие "Межпроцессное взаимодействие"

Цель занятия

Целью работы является изучение взаимодействия экземпляров бизнес-процессов при помощи сообщений.

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

В соответствии с концепцией межпроцессного взаимодействия экземпляр бизнес-процесса может послать сообщение из одного узла схемы бизнес-процесса узлу другого экземпляра бизнес-процесса. Для посылки и получения сообщения используются элементы «Отправить сообщение» и «Получить сообщение»

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

В сообщении содержится следующая информация:

  • кому предназначено сообщение
  • передаваемые значения переменных бизнес-процесса

В некоторых случаях одно сообщение может быть обработано несколькими получателями. Адресат сообщения может быть определен следующим образом:

  • по названию бизнес-процесса (processDefinitionName)
  • по названию узла бизнес-процесса (processNodeName)
  • по идентификатору экземпляра бизнес-процесса (processInstanceId)

Для задания этих параметров можно использовать:

  • переменные экземпляра бизнес-процесса, например, processDefinitionName=${Переменная1}, где "Переменная1"– это переменная содержащая название процесса
  • константное значение, например processNodeName = Процесс1, где Процесс1 это название процесса
  • предопределенные значения: по названию текущего определения процесса ( ${currentDefinitionName} ), по названию текущего узла ( ${currentNodeName} ), по номеру текущего экземпляра процесса ( ${currentInstanceId} )

Структура данных сообщения позволяет задавать соответствие между переменными отправителя и получателя

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

Если, наоборот, существует сразу несколько выполняющихся экземпляров этого бизнес-процесса, то сообщение будет передано сразу всем этим экземплярам.

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

В данном занятии рассматриваются бизнес-процессы, иллюстрирующие механизм межпроцессного взаимодействия: Бизнес-процесс "Пример 7-1" отправляет сообщение в бизнес-процесс "Пример 7-2". Используется маршрутизация “по названию процесса”. В качестве данных, пересылаемых в сообщении, используется введённый пользователем текст, а также id экземпляра бизнес-процесса "Пример 7-1"

Бизнес-процесс "Пример 7-2" получает данные, пользователь изменяет полученное значение текстовой переменной, и высылает сообщение обратно в бизнес-процесс "Пример 7-1", при этом используется маршрутизация “по ID процесса”.

Откройте среду разработки системы RunaWFE

  1. Создайте новый проект - Занятие 7
  2. Создайте новый процесс:
  3. Введите название процесса – "Пример 7-1"
  4. Добавьте элементы на схему бизнес-процесса в соответствии с рисунком 3.1
  5. R253e ru.png
    Рисунок 3.1 Схема бизнес процесса "Пример 7-1"


    В бизнес-процессе используется следующие элементы: “Начало”, “Окончание”, “Действие”, “Задача сценария”, узел “Отправить сообщение” и “Получить сообщение”. Для изменения названий по-умолчанию, выделите элемент, кликнув на него, перейдите в свойства, введите новое значение в поле Название.

    Для элемента "Задача сценария" используйте опцию компактный вид (см. пункт 1 раздела "Практическое занятие "Работа с Word-ботом". Порядок выполнения работы.",Замечание. рис. 3.2)

  6. Создайте бизнес-процесс "Пример 7-2" в соответствии с рисунком 3.2.
  7. R254e ru.png
    Рисунок 3.2 Схема бизнес процесса "Пример 7-2"


    Здесь также как и в процессе "Пример 7-1" используются элементы отправки и принятия сообщений.

  8. Создайте роли
  9. В разрабатываемых процессах используются следующие Роли:
    • "сотрудник", используется в процессе "Пример 7-1", будет инициализирована пользователем, запустившим процесс.
    • "отдел кадров", используется в процессе "Пример 7-2", будет инициализирована пользователем, запустившим процесс.
  10. Создайте переменные
  11. В процессе "Пример 7-1" используются следующие переменные:
    • "отправленное сообщение", это переменная формата "Текст", которую вводит пользователь в узле “Ввести сообщение для отправки” и отправляет в экземпляры процесса "Пример 7-2"
    • "id отправителя", это переменная формата "Строка", содержит id экземпляра процесса "Пример 7-1", также отправляется в сообщении. Должна быть проинициализирована в задаче сценария "Получение id экземпляра процесса" с помощью обработчика "Выполнить формулу"
    В процессе "Пример 7-2" используются следующие переменные:
    • "полученное сообщение", это переменная формата "Текст", которую процесс получает из присланного сообщения, обрабатывает и отправляет обратно в экземпляр "Пример 7-2"
    • "id отправителя", это переменная формата "Строка", содержит id экземпляра процесса "Пример 7-1". Принимает значение из сообщения, и необходима для определения получателя, т.е. используется в свойствах маршрутизации.
    Для создания переменной перейдите на вкладку "Переменные" и нажмите "Создать" (См. Рис. 3.3). В появившейся форме введите название переменной (См. Рис. 3.4), нажмите "Далее" и выберите ее формат (См. Рис. 3.5).
    R255a ru.png
    Рисунок 3.3 Создание переменных


    R255be ru.png
    Рисунок 3.4 Ввод названия переменной


    R255ce ru.png
    Рисунок 3.5 Выбор формата переменной


    R256 ru.png
    Рисунок 3.6 Переменные бизнес-процесса "Пример 7-1"


    R257 ru.png
    Рисунок 3.7 Переменные бизнес-процесса "Пример 7-2"
  12. Выберите класс обработчика в задачи сценария "Получение id экземпляра процесса"
  13. В процессе "Пример 7-1" необходимо использовать обработчик "Выполнить формулу", в котором определить id данного экземпляра и проинициализировать полученным значением переменную "id отправителя". Для этого выделите на схеме элемент Задача сценария, перейдите в его свойства и кликните в поле “Класс обработчика” (См. Рис. 3.8)
    R258 ru.png
    Рисунок 3.8 Задача сценария "Получение id экземпляра процесса"

    В появившейся форме выберите из списка обработчик "Выполнить формулу" и нажмите ОК. Вернитесь в свойства задачи сценария, нажмите на поле "Конфигурация".

    Добавьте конфигурацию следующего вида:

    'id отправителя'=get_process_id();
    

    Здесь используется функция get_process_id, которая возвращает номер текущего экземпляра процесса


    R259 ru.png
    Рисунок 3.9 Конфигурация обработчика "Выполнить формулу"

    Замечание. Для вставки в конфигурацию переменных воспользуйтесь пунктом "Вставить переменную", соответственно для вставки функции используйте "Вставить функцию"

  14. Создайте графические формы
  15. Кликните на узел «Ввести сообщение для отправки» графа процесса "Пример 7-1" правой кнопкой мыши и выберите команду «Форма» > «Создать форму» (левой кнопкой мыши) - См. Рис. 3.10
    R260e ru.png
    Рисунок 3.10 Создание графической формы


    Замечание. По умолчанию в качестве редактора форм используется CKEditor4, но в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), то с формами могут возникнуть проблемы. Поэтому следует переключить редактор на FCKEditor2 (как переключить редактор см. в Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 6, Рис. 4.9, 4.10 )


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

    Поместите на форму компонент "Ввод переменной" для ввода значения переменной "отправленное сообщение" (См. Рис. 3.11)


    R261e ru.png
    Рисунок 3.11 Форма "Ввести сообщение для отправки"

    В процессе "Пример 7-2" также создайте форму в узле “Редактировать полученное сообщение”, процесс создания аналогичен описанному примеру. На форме необходимо расположить компонент "Ввод переменной" для редактирования значения переменной "полученное сообщение" (См. Рис. 3.12)


    R262e ru.png
    Рисунок 3.12 Форма "Редактирование полученного сообщения"

    Создайте форму для отображения значения переменной после взаимодействия между процессами. Кликните на узел «Ознакомиться с полученным сообщением» графа процесса "Пример 7-1" правой кнопкой мыши и выберите команду «Форма» > «Создать форму» (левой кнопкой мыши), после чего расположите на форме компонент “Отобразить переменную” для "отправленное сообщение", в поле "Форма отображения" выберите "Как неактивный компонент ввода" (См. Рис. 3.13)


    R263e ru.png
    Рисунок 3.13 Создание графической формы для узла "Ознакомиться с полученным сообщением"


  16. Настройте межпроцессное взаимодействие
  17. Настройка отправителя сообщения в процессе "Пример 7-1" Для настройки отправки кликните правой клавишей мыши на элементе “отправить сообщение”, и выберите пункт "Конфигурация" (См. Рис. 3.14)
    R264e ru.png
    Рисунок 3.14 Вызов диалога настройки отправителя сообщения в бизнес-процессе "Пример 7-1"

    В свойствах маршрутизации укажите следующие настройки (См. Рис. 3.15)


    R265e ru.png
    Рисунок 3.15 Настройка свойств маршрутизации сообщения в бизнес-процессе "Пример 7-1"

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

    В появившейся форме введите в поле "Значение" - Пример 7-2, поле "Название" оставьте неизменным. Нажмите "ОК"

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

    Таким образом в соответствии с параметрами представленными на рисунке 3.15, будут отправлены значения переменных "id отправителя" и "отправленное сообщение" экземпляра бизнес-процесса "Пример 7-1".


    Настройка получателя в процессе "Пример 7-2".

    Кликните правой клавишей мыши на элементе “получить сообщение”, и выберите "Конфигурация" (См. Рис. 3.16)


    R266e ru.png
    Рисунок 3.16 Вызов диалога настройки получателя сообщения в бизнес-процессе "Пример 7-2"

    В свойствах маршрутизации укажите следующие настройки (См. Рис. 3.17)


    R267e ru.png
    Рисунок 3.17 Настройка свойств маршрутизации сообщения в бизнес-процессе "Пример 7-2"

    Используйте маршрутизацию по названию текущего определения процесса (currentDefinitionName), для этого в области свойств маршрутизации нажмите на стрелку расположенную на кнопке "Добавить", выберите из выпадающего списка пункт "По названию процесса". Добавьте переменные в сообщении в соответствии с рисунком 3.17.

    Таким образом, будут получены:

    • значение переменной "id отправителя" из сообщения в переменную "id отправителя" экземпляра процесса "Пример 7-2"
    • значение переменной "отправленное сообщение" в переменную "полученное сообщение"


    Настройка отправителя в процессе "Пример 7-2".

    После получения и обработки сообщения, процесс "Пример 7-2" возвращает обработанные данные в экземпляр процесса "Пример 7-1", для этого используются следующие настройки (См. Рис. 3.18-3.22):


    R268e ru.png
    Рисунок 3.18 Вызов диалога настройки отправителя сообщения в бизнес-процессе "Пример 7-2"

    Добавьте свойство маршрутизации "по ID процесса", для этого нажмите на выпадающий список расположенный на кнопке "Добавить" в области свойств маршрутизации и выберите соответствующий пункт. В открывшемся окне введите параметры представленные на рисунке 3.19:


    R269 ru.png
    Рисунок 3.19 Маршрутизация по ID процесса

    Данная настройка задает выбор получателя по id экземпляра бизнес-процесса, значение id хранится в переменной "id отправителя"

    Перейдите в область переменных в сообщении и нажмите "Добавить", в открывшемся окне введите "полученное сообщение" в качестве названия переменной в процессе и сообщении (См. Рис. 3.20)


    R270 ru.png
    Рисунок 3.20 Добавление переменной


    R271e ru.png
    Рисунок 3.21 Итоговая конфигурация


    Настройка получателя в процессе "Пример 7-1"

    Обработанные в бизнес-процессе "Пример 7-2" данные возвращаются в "Пример 7-1", для принятия этих данных необходимо настроить элемент “Принять сообщение” следующим образом (См. Рис. 3.22)


    R272e ru.png
    Рисунок 3.22 Переменные сообщения

    Свойство маршрутизации задано как processId = ${currentProcessId}, то есть по id процесса, а соответствие переменных установлено как "отправленное сообщение"="полученное сообщение", то есть присланное в переменной "полученное сообщение" значение будет сохранено в переменную "отправленное сообщение"

  18. Загрузите бизнес-процесс на RunaWFE сервер
  19. Загрузите разработанные бизнес-процессы в систему, используя пункт меню “Файл/Экспорт процесса” (Подробнее см. 2-я Часть, Практическое занятие "Изучение перспективы потока управления", Порядок выполнения работы, Пункт 11-14). Войдите в web-интерфейс системы RunaWFE под пользователем Administrator. После загрузки необходимо настроить обладателей полномочий на данные процессы. Для "Пример 7-1" нужно добавить в обладатели полномочий группу "Сотрудники" с правами на чтение, чтение экземпляра и запуск, а для "Пример 7-2" группу "Отдел кадров", также с правами на чтение, чтение экземпляра и запуск (Подробнее см. 1-я Часть, Вводное занятие, Порядок выполнения работы, Пункт 28-31).
  20. Запустите бизнес-процессы и доведите экземпляры процессов до завершения.
  21. Описание порядка выполнения бизнес-процесса взаимодействия. Пользователь запускает экземпляр процесса "Пример 7-1", срабатывает обработчик, в котором определяется id данного экземпляра процесса. Пользователь вводит текст отправляемого сообщения в переменную "отправленное сообщение". Затем происходит отправка сообщения в экземпляр процесса "Пример 7-2", передаются значения переменных "отправленное сообщение" и "id отправителя". Процесс "Пример 7-1" переходит в следующий узел, ожидая сообщения с результатом обработки. Пользователь, принадлежащий группе "Отдел кадров", запускает экземпляр процесса "Пример 7-2", сразу после запуска экземпляра бизнес-процесса точка управления останавливается в узле “Получить сообщение”, ожидая данные. После получения сообщения, происходит загрузка значений в переменные "полученное сообщение" и "id отправителя". Далее точка управления переходит в узел “Редактировать полученное сообщение”, где пользователь редактирует значение переменной "полученное сообщение". Затем происходит отправка отредактированного значения обратно в экземпляр "Пример 7-1", при этом используется полученное ранее значение id этого экземпляра. Экземпляр бизнес-процесса "Пример 7-1" получает из сообщения значение "отправленное сообщение" и точка управления переходит в узел “Ознакомиться с полученным сообщением” Выполнение бизнес-процессов по шагам. Для запуска процесса "Пример 7-1" войдите в систему под пользователем из группы "Сотрудники", например "Сверчков" и кликните на имя процесса в общем списке бизнес-процессов (См. Рис. 3.23):
    R273e ru.png
    Рисунок 3.23 Список бизнес-процессов

    Будет создан новый экземпляр бизнес-процесса, в котором точка управления перейдет в узел “Ввести сообщение для отправки” (См. Рис. 3.24)

    R274e ru.png
    Рисунок 3.24 Задание, соответствующее узлу “Ввести сообщение для отправки”

    В форме задания этого узла введите текст сообщения для отправки, например: “Hello” (См. Рис. 3.25)

    R275e ru.png
    Рисунок 3.25 Ввод текста, который будет отправлен другому экземпляру бизнес-процесса

    На следующем шаге бизнес-процесса произойдет определение id данного экземпляра процесса и отправка сообщения, содержащего переменные "отправленное сообщение" и "id отправителя" (См. Рис. 3.26).

    R276e ru.png
    Рисунок 3.26 Фрагмент формы истории экземпляра бизнес-процесса, показывающий последовательность событий экземпляра бизнес-процесса

    Управление перейдет в узел “Принять сообщение”, в котором оно будет находиться до тех пор, пока не получит сообщение от процесса "Пример 7-2"

    R277e ru.png
    Рисунок 3.27 Ожидание сообщения экземпляром бизнес-процесса "Пример 7-1"

    Запустите экземпляр бизнес-процесса "Пример 7-2".

    Войдите в систему под пользователем, входящим в группу "Отдел кадров", например Личинкин и кликните на имени бизнес-процесса "Пример 7-2" (См. Рис. 3.28).

    R278 ru.png
    Рисунок 3.28 Список бизнес-процессов

    Будет запущен экземпляр бизнес-процесса, в котором точка управления остановится в узле ожидания сообщения, а после получения сообщения перейдет в узел "Редактирование полученного сообщения" (См. Рис. 3.29-3.31).

    R279e ru.png
    Рисунок 3.29 Состояние экземпляра бизнес-процесса
    R280e ru.png
    Рисунок 3.30 История экземпляра бизнес-процесса
    R281e ru.png
    Рисунок 3.31 Список заданий

    В форме задания узла дополните полученное сообщение (См. Рис. 3.32-3.33)

    R282e ru.png
    Рисунок 3.32 Форма задания с исходным значением
    R283e ru.png
    Рисунок 3.33 Форма задания с измененным значением

    После выполнения задания произойдет отправка сообщения (Hello World!!!), в экземпляр процесса выбранного по id, далее экземпляр бизнес-процесса "Пример 7-2" завершится (См. Рис. 3.34)

    R284e ru.png
    Рисунок 3.34 История экземпляра бизнес-процесса "Пример 7-2"

    Экземпляр бизнес-процесса "Пример 7-1" получит сообщение, содержащее переменную "полученное сообщение". Переменная "отправленное сообщение" будет проинициализирована значением "Hello World!!!" и ее значение будет выведено на форму узла “Ознакомиться с полученным сообщением” (См. Рис. 3.35)

    R285e ru.png
    Рисунок 3.35 Список заданий
    R286e ru.png
    Рисунок 3.36 Форма задания

    После выполнения задания бизнес-процесс завершится (См. Рис. 3.37)

    R287e ru.png
    Рисунок 3.37 История экземпляра бизнес-процесса

    Задание для самостоятельной работы

    Разработайте бизнес-процессы "Пример 7-3" и "Пример 7-4", схемы которых изображены на рисунках 3.38 и 3.39 "Пример 7-3" отправляет в сообщении введённые пользователем данные в процесс "Пример 7-4". Используется маршрутизация “по названию процесса”. "Пример 7-4" получает данные и отображает их на форме.


    R288e ru.png
    Рисунок 3.38 Схема бизнес-процесса "Пример 7-3" для самостоятельной разработки

    В "Пример 7-3", используйте элемент “Отправить сообщение” для отправки данных.

    R289e ru.png
    Рисунок 3.39 Схема бизнес-процесса "Пример 7-4" для самостоятельной разработки

    В "Пример 7-4", используйте элемент “Получить сообщение” для получения данных.


    Описание ролей.

    В разрабатываемых процессах должны быть следующие Роли:

    • Роль "сотрудники", используется в процессе "Пример 7-3", будет инициализирована пользователем, запустившим процесс.
    • Роль "отдел кадров", используется в процессе "Пример 7-4", будет инициализирована пользователем из группы "Отдел кадров", запустившим процесс.


    Описание переменных.

    В процессе "Пример 7-3" используйте переменную формата Текст – “отправленное сообщение”, которая предназначена для отправки в сообщении. Переменная инициализируется значением введённым пользователем в узле “Ввести сообщение для отправки”, а затем передаётся в процесс "Пример 7-4" с помощью механизма сообщений.

    В процессе "Пример 7-4" используйте переменную “полученное сообщение” формата Текст. Переменная должна принимать значение в сообщении от "Пример 7-3".


    Описание графических форм.

    Замечание. По умолчанию в качестве редактора форм используется CKEditor4, но в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), то с формами могут возникнуть проблемы. Поэтому следует переключить редактор на FCKEditor2 (как переключить редактор см. в Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 6, Рис. 4.9, 4.10 )


    В процессе "Пример 7-3" создайте форму в узле “Ввести сообщение для отправки”. Для ввода “отправленное сообщение” используйте компонент форм "Ввод переменной". В процессе "Пример 7-4" создайте форму в узле “Ознакомиться с полученным сообщением”. На форме необходимо расположить компонент форм “Отобразить переменную” для вывода значения переменной "полученное сообщение".


    Задание проверок значений, введенных в элементы форм (валидация).

    В процессе "Пример 7-3" необходимо задать проверку переменной “отправленное сообщение”, выбрав валидатор “Обязательное поле” и задав текст сообщения об ошибке (см. Практическое занятие "Изучение перспективы операций", Пункт 15, рис. 2.27, 2.28).


    Настройка межпроцессного взаимодействия.

    Настройка отправителя.

    В процессе "Пример 7-3" необходимо настроить отправку сообщения. Используйте отправку “По названию процесса”, в качестве названия процесса используйте - Пример 7-4

    Задайте переменные, которые будут отправлены в сообщении. Выберите переменную "отправленное сообщение".

    Настройка получателя сообщения.

    В процессе "Пример 7-4" настройте параметры получения сообщения, для этого кликните правой клавишей мыши на узле “Получить данные” и выберите пункт “Конфигурация”.

    В появившейся форме добавьте свойства маршрутизации, а также соответствие переменных для получения данных. Используйте получение “По названию процесса”, для этого необходимо кликнуть на соответствующую кнопку, в результате в свойствах появится: processDefinitionName = ${currentDefinitionName}, где currentDefinitionName указывает на текущее название процесса.

    Также необходимо добавить переменные принимаемые в сообщении, для этого нажмите кнопку “добавить” внизу формы и выберите название переменной "полученное сообщение". Затем в поле названия переменной в сообщении впишите "отправленное сообщение".

    Таким образом будет установлено соответствие между посылаемой в сообщении переменной "отправленное сообщение" процесса "Пример 7-3" и переменной "полученное сообщение" в процессе "Пример 7-4". Загрузите бизнес-процессы в систему, установите на них необходимые права (выполняется аналогично процессам "Пример 7-1/7-2", см. Практическое занятие "Межпроцессное взаимодействие", пункт 11).


    Запустите экземпляры бизнес-процессов и доведите их до завершения.

    Описание действий пользователей.

    Пользователь запускает экземпляр процесса "Пример 7-3", вводит текст отправляемого сообщения, после чего происходит отправка в экземпляры процесса "Пример 7-4". Процесс "Пример 7-3" переходит в состояние “завершения”.

    Пользователь, принадлежащий группе "Отдел кадров", запускает экземпляр процесса "Пример 7-4", после чего управление останавливается на узле “Получить данные”, ожидая данные. Сообщение приходит во все экземпляры "Пример 7-4", где полученное значение переменной (текст сообщения) отображается на форме, после чего экземпляры "Пример 7-4" также завершаются.


    Реализуйте два сценария выполнения разработанного взаимодействия.

    1). Первый сценарий - "Один получатель"

    Для запуска процесса "Пример 7-4" необходимо войти под пользователем из группы "Отдел кадров" (например Личинкин), и кликнуть на название данного процесса в общем списке процессов.

    Запустится экземпляр процесса, и управление остановится на узле “Получить данные” ожидая сообщение. Далее пользователь входящий в группу "Сотрудники" (например Сверчков) запускает экземпляр процесса "Пример 7-3", вводит текст посылаемого сообщения.

    Экземпляр процесса "Пример 7-3" завершается. При этом экземпляр процесса "Пример 7-4", получает сообщение и управление переходит в узел “Ознакомиться с полученным сообщением”, пользователь Личинкин видит присланное сообщение на форме.

    2). Второй сценарий - "Несколько получателей"

    Реализуйте сценарий отправки сообщения сразу нескольким экземплярам "Пример 7-4".

    Запустите экземпляры процесса "Пример 7-4" под всеми пользователями входящими в группу "Отдел кадров":

    • Личинкин
    • Гусеницын

    Далее запустите экземпляр процесса "Пример 7-3" под пользователем входящим в группу "Сотрудники". Проверьте, что сообщение придёт сразу во все ожидающие его экземпляры "Пример 7-4".

    Требования к представлению результатов занятия

    В результате выполнения лабораторной работы должны быть представлены преподавателю отчет и файл с данными archive.datafile (как получить файл данных), содержащие разработанные на занятии бизнес-процессы.

    В отчете должны содержаться следующие данные:

    1) Скриншоты основных действий, совершенных на занятии, с пояснениями

    2) Скриншоты, содержащие маршруты точек управления для экземпляров бизнес-процессов, доведенных до завершения.

    3) Скриншоты, содержащие созданные на занятии роли, переменные, основные формы

    Контрольные вопросы

    1. Какой из элементов соответствует отправке сообщения?

    a. Элемент Z7 c p1.png

    b. Элемент Z7 c p2.png

    2. Может ли экземпляр бизнес-процесса, соответствующий одному определению бизнес-процесса, послать сообщения экземпляру, соответствующему другому определению бизнес-процесса?

    3. В элементе «Отправить сообщение»

    a. Точка управления сразу переходит в следующий узел

    b. Точка управления ждет ответа на сообщение

    Практическое занятие "Таймеры и обработчики"

    Цель занятия

    Целью работы является изучение работы с элементами бизнес-процессов - таймерами и обработчиками.

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

    "Таймер" - элемент, выполняющий функцию задержки. Может быть использован как самостоятельный элемент в схеме бизнес-процесса, так и быть присоединенным к узлу Действию.

    В случае присоединения к действию, Таймер - элемент, при помощи которого действию может быть поставлено в соответствие время выполнения. К таймеру можно подсоединить дополнительный Переход, по которому точка управления перейдет из Действия в случае, если задание в этом узле будет просрочено. Таймеру может быть поставлено в соответствие как время относительно момента прихода точки управления в узел Действие, так и время, относительно значения какой-либо переменной бизнес-процесса (в этом случае допустимо отрицательное значение интервала времени, например - "за пять рабочих дней до даты платежа").


    Обработчик - дополнительная конструкция.

    В jPDL эти элементы могут быть присоединены к Переходам или Узлам-Действиям, обозначается кружком и располагаются непосредственно на Переходе или Узле-Действии. В случае же BPMN - обработчик входит в элемент "Задача сценария".

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

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

    1. Откройте среду разработки.
    2. Создайте новый проект - Занятие 8
    3. Создайте новый бизнес-процесс:
    4. Название процесса – "Пример 8-1"
    5. Добавьте элементы на схему бизнес-процесса в соответствии с рисунком 4.1
    6. R290e ru.png
      Рисунок 4.1 Схема бизнес-процесса "Пример 8-1"


      "Пример 8-1" является упрощенным вариантом бизнес-процесса "Тестирование".

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


      В бизнес-процессе используется следующие элементы: “Начало”, “Окончание”, “Действие”, “Задача сценария”, “Аннотация”, “Параллельный шлюз” и “Таймер”.

      Для изменения названий по-умолчанию, выделите элемент, кликнув на него, перейдите в свойства, введите новое значение в поле Название.


      Как видно из приведенного рисунка, к узлу "Выполнить тестирование" необходимо присоединить Таймер. Для этого выделите в палитре элемент Таймер и захватив его левой клавишей мыши, перетяните в действие "Выполнить тестирование", значок таймера будет закреплен в узле.

      Из "Выполнить тестирование" выходит два перехода: из таймера и непосредственно действия. Для добавления перехода из Таймера воспользуйтесь одним из следующих вариантов:

      • наведите курсор мыши на таймер присоединенный к узлу, появится значок "стрелка", захватите ее и перетяните в необходимый узел для создания перехода (см. рис. 4.2)
      • выберите в палитре элемент "Переход", кликните на таймер в узле, переведите курсор на необходимый элемент, кликните левой клавишей мыши еще раз для создания перехода между элементами (см. 291б)

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


      R291a ru.png
      Рисунок 4.2 Создание перехода из таймера присоединенного к узлу


      R291b ru.png
      Рисунок 4.3 Создание перехода из таймера присоединенного к узлу с помощью элемента "Переход"


      Для элемента "Задача сценария" используйте опцию компактный вид (см. пункт 1 раздела "Практическое занятие "Работа с Word-ботом". Порядок выполнения работы.",Замечание. рис. 3.2)

      Для придания наглядности схемы расположите напротив "Задачи сценария" элемент "Аннотация". Введите "Описание" аннотации, для этого перейдите в одноименное свойство элемента.

    7. Создайте роли
    8. В разрабатываемом процессе используются следующие Роли:
      • Студент
      • Преподаватель
      Роль "Студент" будет инициализирована пользователем, запустившим процесс, поэтому не требует инициализатора. Роль "Преподаватель" должна быть проинициализирована с помощью отношения "Преподаватель". Выделите созданную роль, нажмите "Изменить", перейдите на закладку "Задать роль с помощью отношения", введите название отношения и выберите параметр отношения - Студент, как показано на рисунке 4.4
      R292 ru.png
      Рисунок 4.4 Инициализация роли с помощью отношения

      В данном случае параметр - роль Студент будет соответствовать правой части отношения, по которой будет выбран соответствующий Преподаватель (подробнее см. раздел "Стандарты и концепции, связанные с СУБПиАР", пункт "Использование бинарных отношений для упрощения инициализации ролей").

    9. Свяжите с начальным узлом бизнес-процесса роль "Студент", с остальными узлами свяжите роли в соответствии с рисунком 4.1
    10. Создайте переменные
    11. В процессе "Пример 8-1" используются следующие переменные:
      • Вопросы - переменная формата Список(Строк), вводится Преподавателем в узле "Ввести данные тестирования"
      • Ответы - переменная формата Список(Строк), вводится Студентом в узле "Выполнить тестирование"
      • Дата и время окончания тестирования - переменная формата Дата со временем, определяется в обработчике "Выполнить формулу" задачи сценария
      • Длительность тестирования - переменная формата Целое число, вводится Преподавателем в узле "Ввести данные тестирования"
      R293 ru.png
      Рисунок 4.5 Переменные бизнес-процесса "Пример 8-1"


    12. Выберите класс обработчика в задачи сценария "Определение даты и времени окончания тестирования"
    13. Выделите на схеме элемент "Задача сценария", перейдите в его свойства и кликните в поле “Класс обработчика”, после чего выберите из списка обработчик "Выполнить формулу". Добавьте конфигурацию следующего вида: 'Дата и время окончания тестирования'=current_date_time()+'Длительность тестирования'; Здесь используется функция current_date_time(), определяющая текущую дату и время, к результату данной функции прибавляется значение переменной "Длительность тестирования" (задано в минутах). Полученное значение сохраняется в переменной "Дата и время окончания тестирования"
      R294 ru.png
      Рисунок 4.6 Определение Даты и времени окончания тестирования с помощью обработчика


    14. Настройте таймер в узле "Выполнить тестирование"
    15. Выделите таймер, перейдите в его свойства, выберите поле "Задержка" (см. Рис. 4.7)
      R295a ru.png
      Рисунок 4.7 Вызов настройки задержки таймера

      В появившейся форме необходимо выбрать "Единицу измерения" - "минуты", "Задержка таймера" - "+1", "Базовая дата" - "Дата и время окончания тестирования" (см. рис. 4.8)


      R295b ru.png
      Рисунок 4.8 Задержка таймера


      Нажмите на значок для вызова формы выбора единицы измерения (см. рис. 4.8), выберите "минуты" (см. рис. 4.9)


      R295c ru.png
      Рисунок 4.9 Выбор единицы измерения


      Нажмите на значок для вызова формы ввода задержки таймера относительно базовой даты (см. рис. 4.8), введите значение +1 (см. рис. 4.10)


      R295d ru.png
      Рисунок 4.10 Ввод задержки таймера


      Нажмите на значок для вызова формы выбора базовой даты (см. рис. 4.8), выберите переменную "Дата и время окончания тестирования" (см. рис. 4.11)


      R295e ru.png
      Рисунок 4.11 Выбор базовой даты


      Таким образом в случае если Студент не выполнит задачу "Выполнить тестирование" до "Дата и время окончания тестирования", то спустя 1 минуту после этого, задание будет просрочено.

    16. Создайте графические формы
    17. Замечание. По умолчанию в качестве редактора форм используется CKEditor4, но в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), то с формами могут возникнуть проблемы. Поэтому следует переключить редактор на FCKEditor2 (как переключить редактор см. в Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 6, Рис. 4.9, 4.10) Кликните на узел «Ввести данные тестирования» графа процесса "Пример 8-1" правой кнопкой мыши и выберите команду «Форма» > «Создать форму» (левой кнопкой мыши) (Подробнее см. Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 6, Замечание, Рис. 4.11-4.12). На данной форме Преподаватель задает длительность тестирования (в минутах) и вводит список вопросов. Поместите на форму два экземпляра компонента форм - "Ввод переменной" для ввода значений в переменные "Длительность тестирования" и "Вопросы" соответственно (см. Рис. 4.12) (Подробнее см. Практическое занятие "Изучение перспективы операций", Порядок выполнения работы, Пункт 14, Рис. 2.17, 2.18).
      R296e ru.png
      Рисунок 4.12 Форма "Ввести данные тестирования"


      Сохраните и закройте форму.


      Задайте валидацию для переменных формы "Ввести данные тестирования"

      Для этого кликните на узле "Ввести данные тестирования" правой клавишей мыши и выберите пункт "Форма > Проверка переменных формы", в появившейся форме выделяйте переменные и устанавливайте необходимые валидаторы. (Подробнее см. Практическое занятие "Изучение перспективы операций", Пункт 15, рис. 2.27, 2.28).

      Для переменной "Вопросы" добавьте валидатор "Обязательное поле". В поле "Сообщение об ошибке" введите - "Вопросы - обязательное поле".

      Для переменной "Длительность тестирования" добавьте валидатор "Обязательное поле" (в поле "Сообщение об ошибке" введите - "Длительность - обязательное поле"), а также "Диапазон числа" установив минимальное значение в "1" включительно (см. Рис. 4.13), при этом в поле "Сообщение об ошибке" введите - "Минимальная длительность тестирования 1 минута"


      R297 ru.png
      Рисунок 4.13 Валидатор "Диапазон числа" для переменной "Длительность тестирования"


      Создайте форму для узла "Выполнить тестирование" (см. рис. 4.14)

      Здесь студент отвечает на тестовые вопросы.

      Используйте компонент "Отобразить переменную" (как строку) для вывода значений переменных: "Длительность тестирования", "Дата и время окончания тестирования", "Вопросы".

      Перетяните на форму с помощью мыши компонент "Редактировать связанные списки", дважды кликните по нему или вызовите контекстное меню и выберите пункт "Параметры компонента". Установите параметры Добавления/Изменения/Удаления в значение "true". В поле "Название переменной" необходимо выбрать переменную "Ответы" (см. Рис. 4.15)


      R298e ru.png
      Рисунок 4.14 Форма "Выполнить тестирование"


      R299e ru.png
      Рисунок 4.15 Редактировать связанные списки для переменной "Ответы"


      Аналогично создайте остальные формы согласно рисункам 4.16, 4.17, 4.18


      R300e ru.png
      Рисунок 4.16 Форма "Уведомление для преподавателя о закрытии тестирования"


      R301e ru.png
      Рисунок 4.17 Форма "Уведомление для студента о закрытии тестирования"


      На форме "Ознакомиться с выполненным тестированием" расположите теги "отобразить переменную" (как строку) для отображения переменных "Вопросы", "Ответы"


      R302e ru.png
      Рисунок 4.18 Форма "Ознакомиться с выполненным тестированием"


    18. Загрузите бизнес-процесс на RunaWFE сервер
    19. Загрузите разработанный бизнес-процесс на сервер, используя пункт меню “Файл/Экспорт процесса” (Подробнее см. 2-я Часть, Практическое занятие "Изучение перспективы потока управления", Порядок выполнения работы, Пункт 11-14). Войдите в web-интерфейс RunaWFE под пользователем Administrator. После загрузки необходимо настроить обладателей полномочий на данный процесс. Для "Пример 8-1" нужно добавить в обладатели полномочий группу "Группа МИБ-1" с правами на чтение, чтение экземпляра и запуск, а также группу "Преподаватели" с правами на чтение и чтение экземпляра (Подробнее см. 1-я Часть, Вводное занятие, Порядок выполнения работы, Пункт 28-31).
    20. Запустите бизнес-процесс "Пример 8-1" и доведите экземпляр процесса до завершения.
    21. Описание порядка выполнения бизнес-процесса взаимодействия. Студент из группы "Группа МИБ-1" запускает процесс "Пример 8-1", по отношению "Преподаватель" выбирается соответствующий Преподаватель данного Студента. Преподаватель вводит список вопросов для тестирования, а также задает длительность тестирования в минутах. Срабатывает обработчик который определяет Дату и время окончания тестирования на основе текущей даты/времени и выбранной длительности тестирования. Студент получает задание "Выполнить тестирование", где отвечает на тестовые вопросы. Создается таймер. Если Студент не выполнит задание до "Дата и время окончания тестирования" + 1 минута, то таймер сработает, и задание "Выполнить тестирование" будет просрочено. Тестирование будет закрыто, Преподаватель и Студент получат соответствующие уведомления. В случае же если студент успеет выполнить задание за отведенное время, Преподаватель получит уведомление со списком введенных Студентом ответов на тестовые вопросы. При выполнении процесса необходимо проверить оба варианта сценария выполнения. Выполнение бизнес-процессов по шагам. Для запуска процесса "Пример 8-1" войдите в систему под пользователем из группы "Группа МИБ-1", например "Мухин" и кликните на имя процесса в общем списке бизнес-процессов (См. Рис. 4.19)
      R303 ru.png
      Рисунок 4.19 Запуск бизнес-процесса "Пример 8-1"

      Войдите в систему под пользователем "Бабочкин", который является Преподавателем студента Мухина(см. Рис. 4.20).

      В списке заданий будет активное задание - "Ввести данные тестирования" (см. Рис. 4.21)


      R304a ru.png
      Рисунок 4.20 Отношение "Преподаватель"


      R304b ru.png
      Рисунок 4.21 Задание, соответствующее узлу “Ввести данные тестирования”

      Возьмите задание на выполнение, введите длительность тестирования - 2 (минуты), а также список вопросов (см. Рис. 4.22)


      R305 ru.png
      Рисунок 4.22 Ввод данных тестирования


      Выполните задачу.

      Далее сработает обработчик, который определит "Дату и время окончания тестирования" (см. Рис. 4.23)


      R306 ru.png
      Рисунок 4.23 Определение даты и времени окончания тестирования


      Как видно из рисунка 4.23, задание "Ввести данные" было выполнено в 21:37:01, после чего сработал обработчик, функция current_date_time вернет текущую дату и время - 08.04.2014 21:37:01, к полученному значению будет прибавлено 2 минуты (Длительность тестирования), в результате переменная "Дата и время окончания тестирования" будет инициализирована значением 08.04.2014 21:39:01

      Точка управления перейдет в узел "Выполнить тестирование". Одновременно с этим будет запущен таймер на задержку 1 минута относительно базовой даты, переменной "Дата и время окончания тестирования" (т.е. в 08.04.2014 21:40).


      Войдите в систему под пользователем Мухин. В списке активных задач будет "Выполнить тестирование".

      Откройте задачу, введите ответы на вопросы, но не завершайте ее в течении 3-х минут (см. Рис. 4.24) т.е. пока не сработает таймер.


      R307 ru.png
      Рисунок 4.24 Задача "Выполнить тестирование"


      Теперь попытайтесь завершить задание - нажмите "Задание исполнено", однако будет выведено сообщение "Данное задание уже выполнено кем-то или просрочено" (см. Рис. 4.25), означающее что в данном случае задание было просрочено т.к. сработал таймер и управление перешло по переходу исходящему из таймера.


      R308 ru.png
      Рисунок 4.25 Задача "Выполнить тестирование" просрочена


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

      Выполните эти задачи и завершите процесс.


      Запустите еще один экземпляр процесса и повторите вышеописанные шаги, но в этот раз успейте выполнить задание "Выполнить тестирование" в течении 3-х минут, таймер будет остановлен, управление перейдет в узел "Ознакомиться с выполненным тестированием". Доведите процесс до завершения.


    Задание для самостоятельной работы

    Разработайте на основе "Пример 8-1" бизнес-процесс "Пример 8-2".

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

    R345e ru.png
    Рисунок 4.26 Схема бизнес-процесса "Пример 8-2"


    В процессе "Пример 8-1" студент получал задание "Выполнить тестирование" сразу же после выполнения ввода данных преподавателем. В процессе же "Пример 8-2" преподаватель вводит не только список вопросов и длительность тестирования, но и назначает дату и время начала проведения тестирования. В схему (в отличии от Пример 8-1) дополнительно вводятся элементы таймер, а также параллельные и исключающий шлюзы.


    Описание ролей.

    В данном процессе используются те же роли и инициализаторы ролей что и в "Пример 8-1".


    Описание переменных.

    Добавьте дополнительно переменную "Дата и время начала тестирования" формата "Дата со временем" (см. Рис. 4.27)


    R310 ru.png
    Рисунок 4.27 Переменные бизнес-процесса "Пример 8-2"


    Описание графических форм.

    Замечание. По умолчанию в качестве редактора форм используется CKEditor4, но в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), то с формами могут возникнуть проблемы. Поэтому следует переключить редактор на FCKEditor2. (как переключить редактор см. в Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 6, Рис. 4.9, 4.10 )


    Измените форму узла "Ввести данные тестирования" в соответствии с рисунком 4.28, добавьте компонент Ввод переменной для "Дата и время начала тестирования"


    R311e ru.png
    Рисунок 4.28 Форма "Ввести данные тестирования"


    Кроме того, добавьте валидаторы для переменной "Дата и время начала тестирования"

    • обязательное поле
    • диапазон даты относительно текущей (см. рис 4.29)

    Для валидатора "Диапазон даты относительно текущей" в поле "Сдвиг в прошлое (в днях)" введите значение 0. Таким образом будет проверяться, что введенная преподавателем дата и время начала тестирования позже текущих даты и времени.


    R312 ru.png
    Рисунок 4.29 Валидатор "Диапазон даты относительно текущей"


    Создайте форму для узла "Ознакомиться с датой и временем проведения тестирования" (см. Рис. 4.30)


    R313e ru.png
    Рисунок 4.30 Форма узла "Ознакомиться с датой и временем проведения тестирования"

    Расположите здесь компоненты "Отобразить переменную" для переменных "Дата и время начала тестирования" и "Дата и время окончания тестирования" соответственно.

    Остальные формы соответствуют формам процесса "Пример 8-1".


    Описание обработчиков.

    Измените конфигурацию обработчика задачи сценария "Определение даты и времени окончания тестирования". Для этого выделите задачу сценария, перейдите в свойства и вызовите конфигуратор обработчика "Выполнить формулу".

    Введите следующую конфигурацию:

    'Дата и время окончания тестирования'='Дата и время начала тестирования'+'Длительность тестирования';
    

    Таким образом "Дата и время окончания тестирования" теперь определяется относительно "Дата и время начала тестирования" а не результата функции current_date_time() т.е. текущего времени (Пример 8-1)


    Настройка задержки начала тестирования.

    Выделите таймер, расположенный перед узлом "Выполнение тестирования", перейдите в свойства, и вызовите конфигуратор задержки. Выберите в качестве базовой даты - переменную "Дата и время начала тестирования", задержка - 0 минут (см. Рис. 4.31)


    R314 ru.png
    Рисунок 4.31 Настройка задержки начала тестирования

    Т.е. задание "Выполнить тестирование" будет создано только после срабатывания таймера, который настроен на задержку в 0 минут относительно базовой даты "Дата и время начала тестирования".

    Загрузите бизнес-процесс на сервер, добавьте для него обладателей полномочий аналогично процессу "Пример 8-1"


    Запустите экземпляры бизнес-процессов и доведите их до завершения.

    Проверьте оба сценария выполнения:

    • студент успевает выполнить работу за отведенное время
    • студент не успевает выполнить работу за отведенное время

    При этом для удобства проверки процесса используйте в качестве значения длительности тестирования - пару минут, а дату и время начала тестирования назначайте равной текущей дате и времени (используйте кнопку "Сейчас", см. Рис. 4.32) + смещение в несколько минут.


    R315 ru.png
    Рисунок 4.32 Ввод данных преподавателем

    Требования к представлению результатов занятия

    В результате выполнения лабораторной работы должны быть представлены преподавателю отчет и файл с данными archive.datafile (как получить файл данных), содержащие разработанные на занятии бизнес-процессы.


    В отчете должны содержаться следующие данные:

    1) Скриншоты основных действий, совершенных на занятии, с пояснениями

    2) Скриншоты, содержащие маршруты точек управления для экземпляров бизнес-процессов, доведенных до завершения.

    3) Скриншоты, содержащие созданные на занятии роли, переменные, основные формы

    Контрольные вопросы

    1.Что такое Таймер? Как он используется?

    2.Что такое Обработчик? Как он используется?

    3.Можно ли поместить Таймер на переход?

    4.Можно ли присоединить Обработчик к Действию?

    Практическое занятие "Работа с MS Excel-ботом, использование листов MS Excel в качестве слоя бизнес-объектов"

    Цель занятия

    Целью занятия является изучение работы с MS Excel - ботом и использования листов MS Excel в качестве слоя бизнес-объектов.

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

    Необходимые теоретические сведения изложены в пункте "Концепция ботов и бот-станций" раздела "Стандарты и концепции, связанные с СУБПиАР".

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

    В данном занятии рассматривается создание бота для работы с MS Excel файлами и разработка бизнес-процессов использующих задания данного бота для записи и чтения из Excel файла.

    1. Запустите среду разработки
    2. Создайте новый проект - "Занятие 9"
    3. Создайте новый бизнес-процесс "Пример 9-1".
    4. (Подробнее см. Практическое занятие "Изучение перспективы потока управления", Порядок выполнения работы, Пункт 17-18, Рис. 5.15-5.16).
    5. Добавьте элементы на схему бизнес-процесса в соответствии с рисунком 5.1
    6. Lab4 r9 1e.png
      Рисунок 5.1 Схема бизнес-процесса "Пример 9-1"

      Используйте элементы Начало, Действие, Задача сценария, Окончание.

      Замечание. Для элемента Задача сценария используйте компактный вид.

      (Подробнее см. Практическое занятие "Работа с Word-ботом", Порядок выполнения работы, Пункт 1, Замечание, Рис. 3.2).

      Элемент "Начало" назовите "Ввести данные для сохранения в Excel документ", задачу сценария - "Определение даты создания документа", остальные элементы в соответствии с рисунком 5.1

    7. Создайте роли
    8. В данном процессе используются следующие Роли:
      • "Преподаватель" - будет инициализирована пользователем, запустившим процесс
      • "Excel бот" - будет инициализирована ботом для работы с MS Excel (настройка инициализации будет рассмотрена позже)
      Выберите для узлов роли в соответствии с рисунком 5.1
    9. Создайте переменные для бизнес-процесса "Пример 9-1"
    10. согласно рисунку 5.2
      Lab4 r9 2.png
      Рисунок 5.2 Переменные бизнес-процесса "Пример 9-1"

      Замечание. Обратите внимание на переменную "перечень дисциплин" имеющую формат Список(Строка). При создании этой переменной, на форме выбора формата также необходимо будет выбрать и формат элементов (см. Рис. 5.3)


      Lab4 r9 3.png
      Рисунок 5.3 Выбор формата переменной "перечень дисциплин" бизнес-процесса "Пример 9-1"
    11. Создайте формы
    12. Замечание. По умолчанию в качестве редактора форм используется CKEditor4, но в случае если у вас в системе установлен браузер Microsoft Internet Explorer устаревшей версии - 6 (IE6) или 7 (IE7), то с формами могут возникнуть проблемы. Поэтому следует переключить редактор на FCKEditor2. (как переключить редактор см. в Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 6, Рис. 4.9, 4.10 ) Создайте стартовую форму "Ввод данных" вида представленного на рисунке 5.4 (Подробнее см. Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 6, Замечание, Рис. 4.11-4.12).
      Lab4 r9 4e.png
      Рисунок 5.14 Стартовая форма "Ввести данные для сохранения в Excel документ" бизнес-процесса "Пример 9-1"

      Напротив строки "Специальность", расположите компонент "Ввод переменной" для переменной - "Специальность" (Подробнее см. Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 6, Замечание, Рис. 4.17-4.18).

      Аналогично добавьте компонент для ввода переменной "номер курса".

      Используйте компонент "Редактировать связанные списки" для переменной "перечень дисциплин" (см. Рис. 5.5)


      Lab4 r9 5e.png
      Рисунок 5.5 "Редактировать связанные списки" для переменной "перечень дисциплин"

      Добавьте валидаторы для переменных:

      • "специальность" - обязательное поле
      • "перечень дисциплин" - обязательное поле
      • "номер курса" - обязательное поле, а также диапазон числа (от 1 до 6)

      Для этого кликните на стартовом узле правой клавишей мыши и выберите пункт "Форма > Проверка переменных формы", в появившейся форме выделяйте переменные и устанавливайте необходимые валидаторы. (см. Практическое занятие "Изучение перспективы операций", Пункт 15, рис. 2.27, 2ю28).

      Создайте форму для задания "Просмотреть данные перед сохранением в Excel документ" вида представленного на рисунке 5.6


      Lab4 r9 6e.png
      Рисунок 5.6 Форма "Просмотреть данные перед сохранением в Excel документ"

      На этой форме отображаются данные введенные в стартовой узле. Для переменных "Специальность" и "Номер курса" используется компонент "Отобразить переменную" как строку (см. Рис. 5.7)


      Lab4 r9 7ae.png
      Рисунок 5.7 Отобразить как строку переменную "Специальность"

      Для вывода списка "перечень дисциплин" используйте компонент "отобразить связанные списки"

      Lab4 r9 7be.png
      Рисунок 5.8 Отобразить связанные списки


      Создайте форму "Получить созданный Excel документ" на которой отобразите ссылку для скачивания созданного Excel файла. Используйте компонент "Отобразить переменную" для файловой переменной "полученный Excel файл"


      Lab4 r9 8e.png
      Рисунок 5.9 Форма "Получить созданный Excel документ"
    13. Создайте обработчик
    14. Выберите класс обработчика "Выполнить формулу" в задаче сценария "дата создания документа" (см. Практическое занятие "Изучение перспективы данных", Порядок выполнения работы, Пункт 8, Замечание, Рис. 4.33, 4.34) В качестве конфигурации используйте: 'дата создания документа'=current_date(); Таким образом с помощью функции current_date будет определена текущая дата и сохранена в переменную "дата создания документа"
    15. Создайте Excel бот с задачей "Записать данные в файл"
    16. Запустите симулятор Вернитесь в среду разработки и перейдите на вкладку "Боты" и сделайте импорт бот станции с сервера (Подробнее см. Практическое занятие "Работа с Word-ботом", Порядок выполнения работы, Пункт 18, Рис. 3.32 - 3.34). Создайте нового бота с именем "Excel бот" (Подробнее см. Практическое занятие "Работа с Word-ботом", Порядок выполнения работы, Пункт 18, Рис. 3.35 - 3.36). Создайте задачу с формальными параметрами "Записать данные в файл" (Подробнее см. Практическое занятие "Работа с Word-ботом", Порядок выполнения работы, Пункт 18, Рис. 3.37 - 3.38).
      Lab4 r9 9.png
      Рисунок 5.10 Excel бот с задачей "Записать данные в файл"

      Нажмите "Выбрать" и в появившемся окне выберите из списка обработчик "Excel: Сохранить данные в файл" (ExcelSaveHandler) (см. рис. 5.11)


      Lab4 r9 10.png
      Рисунок 5.11 Выбор обработчика "Excel: Сохранить данные в файл"

      Создайте входные параметры:

      • "название" - тип Строка,Текст
      • "номер" - тип Целое число
      • "дата" - тип Дата,Дата со временем,Время
      • "Список" - тип Список

      Создайте Выходной параметр:

      • "Выходной файл" - тип Файл

      (Подробнее см. Практическое занятие "Работа с Word-ботом", Порядок выполнения работы, Пункт 18, Рис. 3.41 - 3.42)


      Lab4 r9 11.png
      Рисунок 5.12 Формальные параметры задачи "Записать данные в файл"

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

      Вызовите окно конфигуратора обработчика, для этого нажмите на кнопку "Изменить" (см. Рис. 5.13)


      Lab4 r9 12.png
      Рисунок 5.13 Вызов конфигуратора

      Используйте конфигурацию приведенную на рисунке 5.14


      Lab4 r9 13.png
      Рисунок 5.14 Конфигуратор обработчика "Excel: Сохранить данные в файл"

      Здесь:

      • входной файл - задан с помощью пути C:\xls_tmp.xlsx, это файл шаблона на основе которого будет создан Excel файл с именем file.xlsx
      • выходной файл - задан с помощью параметра "выходной файл", имя - file.xlsx, это файл Excel который будет создан на основе шаблона и в который будут записаны данные взятые из входных параметров
      • отдельная ячейка (страница 1, столбец 2, строка 1) - по данному адресу в таблицe Excel будет записано значение из параметра "название"
      • отдельная ячейка (страница 1, столбец 2, строка 2) - по данному адресу в таблицe Excel будет записано значение из параметра "номер"
      • отдельная ячейка (страница 1, столбец 2, строка 3) - по данному адресу в таблицe Excel будет записано значение из параметра "дата"
      • массив по вертикали (страница 1, столбец 1, строка 6) - начиная с данного адреса в таблицe Excel будут записаны значения из параметра "список", при чем будут располагаться вертикально

      Нажмите ОК, сохраните и закройте задачу.

    17. Создайте файл шаблона
    18. Далее необходимо создать файл шаблона C:\xls_tmp.xlsx, следующего вида:
      Lab4 r9 14.png
      Рисунок 5.15 Входной файл Excel


    19. Добавьте инициализатор для роли Excel бот
    20. Вернитесь в бизнес-процесс "Пример 9-1", перейдите на вкладку роли, выделите роль "Excel бот" и нажмите "Изменить" В появившейся форме перейдите вкладку Бот, где из выпадающего списка выберите "Excel бот" (см. Рис. 5.16)
      Lab4 r9 15.png
      Рисунок 5.16 Инициализация роли бота

      Нажмите ОК, сохраните процесс.

    21. Выполните привязку бота к задаче
    22. Перейдите на граф процесса, щелкните правой клавишей мыши на узле "Сохранить данные в Excel файл", выберите пункт "Задача бота > привязать" (см. Рис. 5.17)
      Lab4 r9 16.png
      Рисунок 5.17 Вызов привязки задачи

      Появится форма со списком задач с формальными параметрами бота "Excel бот", выделите задачу "Записать данные в файл" и нажмите ОК (см. Рис. 5.18)


      Lab4 r9 17.png
      Рисунок 5.18 Привязка задачи

      Будет вызвана форма конфигурации задачи. Установите соответствие между параметрами задачи и переменными процесса согласно рисунку 5.19


      Lab4 r9 18.png
      Рисунок 5.19 Конфигурация задачи Excel "Сохранить данные в файл"

      Сохраните процесс.

    23. Экспортируйте процесс на сервер
    24. (Подробнее см. 2-я Часть, Практическое занятие "Изучение перспективы потока управления", Порядок выполнения работы, Пункт 11-14).
    25. Экспортируйте Excel бот с задачей на сервер
    26. (Подробнее см. 3-я Часть, Практическое занятие "Работа с Word-ботом", Порядок выполнения работы, Пункт 20, рис. 3.54 - 3.57).
    27. Войдите в систему под пользователем Administrator, пароль –wf
    28. Дайте полномочия группе "Преподаватели" на запуск, чтение и чтение экземпляра процесса "Пример 9-1"
    29. Запустите периодическую активацию ботов
    30. (Подробнее см. 3-я Часть, Практическое занятие "Изучение перспективы операций", Порядок выполнения работы, Пункт 12, рис. 2.11).
    31. Войдите в систему под пользователем, входящим в группу "Преподаватели", например "Стрекозин", пароль - 123
    32. Запустите экземпляр бизнес-процесса "Пример 9-1" и доведите его до завершения.
    33. Введите данные на стартовой форме, например:
      Lab4 r9 19e.png
      Рисунок 5.20 Ввод данных на стартовой форме

      Нажмите Запустить, выполните полученное задание "Просмотреть данные перед сохранением в Excel документ"


      Lab4 r9 20e.png
      Рисунок 5.21 Задание "Перед записью в файл"

      Excel бот выполнит задачу "Записать данные в файл"


      Lab4 r9 21e.png
      Рисунок 5.22 Граф выполнения процесса "Пример 9-1"

      Будет получено задание, со ссылкой на созданный Excel файл, нажмите на ссылку


      Lab4 r9 22e.png
      Рисунок 5.23 Ссылка на созданный Excel файл

      Будет загружен file.xlsx, сохраните его на C:\ Откройте файл.


      Lab4 r9 23e.png
      Рисунок 5.24 Созданный с помощью Excel бота file.xlsx

      Как видно из рисунка 5.24, полученный файл соответствует шаблону, заданной конфигурации задачи бота, а также содержит введенные пользователем данные.

    34. Завершите процесс
    35. Запустите среду разработки.
    36. Создайте новый бизнес-процесс "Пример 9-2".
    37. Добавьте элементы на схему бизнес-процесса в соответствии с рисунком 5.25
    38. Lab4 r9 24e.png
      Рисунок 5.25 Схема бизнес-процесса "Пример 9-2"

      Здесь используются те же элементы что и в процессе "Пример 9-1". Задаче сценария дайте название "Прочесть данные из файла", используйте опцию "компактный вид".

    39. Создайте роль Студент
    40. Выберите данную роль для стартового узла и действий.
    41. Создайте переменные
    42. В данном процессе используются те же переменные что и в "Пример 9-1", за исключением переменной "полученный excel файл". Откройте процесс "Пример 9-1", перейдите на вкладку переменные, выделите переменные (за исключением полученный excel файл") и нажмите кнопку "Копировать" (см. Рис. 5.26).
      Lab4 r9 25a.png
      Рисунок 5.26 Копирование переменных

      Затем откройте процесс "Пример 9-2", перейдите на вкладку "Переменные" и нажмите кнопку "Вставить", переменные добавятся в список (см. Рис. 5.27).


      Lab4 r9 25b.png
      Рисунок 5.27 Вставка переменных
    43. Создайте формы
    44. Создайте форму "Выполнить задание перед чтением из Excel документа" вида представленного на рисунке 5.28
      Lab4 r9 26e.png
      Рисунок 5.28 Форма "Выполнить задание перед чтением из Excel документа"

      Создайте форму "Просмотреть данные считанные из Excel документа" вида представленного на рисунке 5.29


      Lab4 r9 27e.png
      Рисунок 5.29 Форма "Просмотреть данные считанные из Excel документа"

      Используйте компонент "Отобразить переменную" для переменных: "специальность", "номер курса", "дата создания документа".

      Используйте компонент "Отобразить связанные списки" для переменной "перечень дисциплин".

    45. Создайте обработчик
    46. Выберите класс обработчика "Excel: Прочесть данные из файла" в задаче сценария "Прочесть данные из файла"
      Lab4 r9 28.png
      Рисунок 5.30 Выбор класса обработчика

      Запустите конфигуратор обработчика, для этого кликните на "Конфигурация" в свойствах задачи сценария "Прочесть данные из файла".

      Используйте конфигурацию, представленную на рисунке 5.31


      Lab4 r9 29.png
      Рисунок 5.31 Конфигурация "Чтение из файла Excel"

      Т.е. предполагается чтение из файла C:\file.xlsx, который был создан при выполнении бизнес-процесса "Пример 9-1" использующего задачу Excel бота - "Записать данные в файл".

      Считанные по соответствующим адресам значения будут сохранены непосредственно в переменные бизнес-процесса "Пример 9-2".

      Замечание. Во время выполнения экземпляра бизнес-процесса потребуется обязательное наличие файла для чтения/записи данных в указанной в конфигурации папке - C:\file.xlsx

    47. Сохраните бизнес-процесс
    48. Экспортируйте бизнес-процесс на сервер
    49. Войдите в систему под пользователем Administrator, пароль –wf
    50. Дайте права "Чтение", "Запуск", "Чтение экземпляра" на процесс "Пример 9-2" для группы "Группа МИБ-1"
    51. Войдите в систему под пользователем входящим в группу "Группа МИБ-1", например Гусеницын
    52. Запустите экземпляр бизнес-процесса "Пример 9-2" и доведите его до завершения.
    53. В задании "Просмотреть данные считанные из Excel документа" будут выведены считанные из файла C:\file.xlsx в переменные процесса данные (см. рис. 5.32)
      Lab4 r9 30e.png
      Рисунок 5.32 Задание "Просмотреть данные считанные из Excel документа"

      Считанные значения соответствуют введенным данным во время выполнения процесса "Пример 9-1".

      Задание для самостоятельной работы

      Создайте новую задачу Excel бота - "Прочитать данные из файла" с формальными параметрами.

      В качестве обработчика в данной задаче используйте "Excel: Прочесть данные из файла".

      Добавьте формальные параметры задачи в соответствии с рисунком 5.33


      Lab4 r9 31.png
      Рисунок 5.33 Формальные параметры задачи "Прочитать данные из файла" Excel бота

      Используйте конфигурацию представленную на рисунке 5.34


      Lab4 r9 32.png
      Рисунок 5.34 Конфигурация обработчика "Excel: Прочесть данные из файла" в задаче

      Создайте на основе процесса "Пример 9-2" новый процесс "Пример 9-3", в соответствии с рисунком 5.35

      Можно воспользоваться функцией копирования процесса (см. Практическое занятие "Изучение перспективы потока управления", Задание для самостоятельной работы, рис. 2.16, 2.17)


      Lab4 r9 33e.png
      Рисунок 5.35 Схема бизнес-процесса "Пример 9-3"

      В отличии от "Пример 9-2", вместо задачи сценария "Прочесть данные из файла" используется элемент Действие, с выбранной ролью "Excel бот".

      Создайте Роли:

      • Студент - инициализируется пользователем запустившим процесс
      • Excel бот - используется инициализатор роли ботом "Excel бот"

      Замечание. Если использовалась функция копирования процесса, то "Студент" уже будет в списке ролей, и ее создавать не требуется.


      Создайте переменные:

      • специальность - Строка
      • номер курса - Целое число
      • перечень дисциплин - Список(Строка)
      • дата создания документа - Дата

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


      В узле "Прочесть данные из файла" сделайте привязку к задаче "Прочитать данные из файла" Excel бота (см. Практическое занятие 9, рис. 5.17).

      Установите соответствие между переменными процесса и задачей (см. Рис. 5.36)


      Lab4 r9 34.png
      Рисунок 5.36 Привязка параметров задачи к переменным процесса "Пример 9-3"

      Сохраните и экспортируйте процесс "Пример 9-3".

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

      Дайте на процесс "Пример 9-3" права на запуск, чтение и чтение экземпляра для "Группа МИБ-1".

      Запустите периодическую активацию ботов.

      Запустите новый экземпляр процесса под пользователем входящим в "Группа МИБ-1". Доведите его до завершения.

      Проверьте, что Excel бот выполнил задание "Прочесть данные из файла", и значения выведенные на форму в задании "Вывод данных" соответствуют данным из файла C:\file.xlsx

      Замечание. Все действия аналогичны действиям при создании и выполнении процессов "Пример 9-1" и "Пример 9-2"

      Требования к представлению результатов занятия

      В результате выполнения лабораторной работы должны быть представлены преподавателю отчет и файл с данными archive.datafile (как получить файл данных), содержащие разработанные на занятии бизнес-процессы.

      В отчете должны содержаться следующие данные:

      1) Скриншоты основных действий, совершенных на занятии, с пояснениями

      2) Скриншоты, содержащие маршруты точек управления для экземпляров бизнес-процессов, доведенных до завершения.

      3) Скриншоты, содержащие созданные на занятии переменные и основные формы

      Контрольные вопросы

      1. Где задается имя Excel-файла, в который обработчик будет записывать данные?
      2. Где задается путь к Excel-файлу, в который обработчик будет записывать данные?
      3. Где задается имя и путь к Excel-файлу, из которого обработчик будет читать данные?
      4. Как создается задача бота с формальными параметрами

      Ссылки

      1. Документация Runa WFE [официальный сайт проекта]. URL: http://runawfe.ru/rus/Документация