Опубликован: 24.09.2015 | Уровень: для всех | Доступ: платный | ВУЗ: Московский институт стали и сплавов
Практическое занятие 9:

Таймеры и обработчики

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

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

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

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

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

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

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

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

1. Откройте среду разработки.

2. Создайте новый проект - Занятие 9

3. Создайте новый бизнес-процесс. Название процесса – "Пример 9-1"

4. Добавьте элементы на схему бизнес-процесса в соответствии с рис. 14.1

Схема бизнес-процесса "Пример 9-1"

увеличить изображение
Рис. 14.1. Схема бизнес-процесса "Пример 9-1"

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

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

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

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

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

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

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

Создание перехода из таймера, присоединенного к узлу

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

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

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

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

5. Создайте роли

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

  • Студент
  • Преподаватель

Роль "Студент" будет инициализирована пользователем, запустившим процесс, поэтому не требует инициализатора.

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

Инициализация роли с помощью отношения

Рис. 14.4. Инициализация роли с помощью отношения

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

6. Свяжите с начальным узлом бизнес-процесса роль "Студент", с остальными узлами свяжите роли в соответствии с рис. 14.1

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

В процессе "Пример 9-1" используются следующие переменные:

  • Вопросы - переменная формата Список(Строк), вводится Преподавателем в узле "Ввести данные тестирования"
  • Ответы - переменная формата Список(Строк), вводится Студентом в узле "Выполнить тестирование"
  • Дата и время окончания тестирования - переменная формата Дата со временем, определяется в обработчике "Выполнить формулу" задачи сценария
  • Длительность тестирования - переменная формата Целое число, вводится Преподавателем в узле "Ввести данные тестирования"
Переменные бизнес-процесса "Пример 9-1"

Рис. 14.5. Переменные бизнес-процесса "Пример 9-1"

8. Выберите класс обработчика в задачи сценария "Определение даты и времени окончания тестирования"

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

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

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

Здесь используется функция current_date_time(), определяющая текущую дату и время, к результату данной функции прибавляется значение переменной "Длительность тестирования" (задано в минутах). Полученное значение сохраняется в переменной "Дата и время окончания тестирования"

Определение Даты и времени окончания тестирования с помощью обработчика

Рис. 14.6. Определение Даты и времени окончания тестирования с помощью обработчика

9. Настройте таймер в узле "Выполнить тестирование"

Выделите таймер, перейдите в его свойства, выберите поле "Задержка" (см. рис. 14.7)

Вызов настройки задержки таймера

Рис. 14.7. Вызов настройки задержки таймера

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

Задержка таймера

Рис. 14.8. Задержка таймера

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

Выбор единицы измерения

Рис. 14.9. Выбор единицы измерения

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

Замечание. Задержка должна содержать только знак и непосредственно значение задержки. Использование пробелов и других символов недопустимо.

Ввод задержки таймера

Рис. 14.10. Ввод задержки таймера

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

Выбор базовой даты

Рис. 14.11. Выбор базовой даты

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

10. Создайте графические формы

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

Кликните на узел "Ввести данные тестирования" графа процесса "Пример 9-1" правой кнопкой мыши и выберите команду "Форма" > "Создать форму" (левой кнопкой мыши)

(Подробнее см. "Изучение перспективы данных" ).

На данной форме Преподаватель задает длительность тестирования (в минутах) и вводит список вопросов.

Поместите на форму два экземпляра компонента форм - "Ввод переменной" для ввода значений в переменные "Длительность тестирования" и "Вопросы" соответственно (см. рис. 14.12)

(Подробнее см. "Изучение перспективы операций" ).

Форма "Ввести данные тестирования"

Рис. 14.12. Форма "Ввести данные тестирования"

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

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

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

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

Валидатор "Диапазон числа" для переменной "Длительность тестирования"

Рис. 14.13. Валидатор "Диапазон числа" для переменной "Длительность тестирования"

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

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

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

Форма "Выполнить тестирование"

Рис. 14.14. Форма "Выполнить тестирование"
Редактировать связанные списки для переменной "Ответы"

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

Аналогично создайте остальные формы согласно рисункам рис. 14.16, рис. 14.17, рис. 14.18

Форма "Уведомление для преподавателя о закрытии тестирования"

увеличить изображение
Рис. 14.16. Форма "Уведомление для преподавателя о закрытии тестирования"
Форма "Уведомление для студента о закрытии тестирования"

увеличить изображение
Рис. 14.17. Форма "Уведомление для студента о закрытии тестирования"

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

Форма "Ознакомиться с выполненным тестированием"

Рис. 14.18. Форма "Ознакомиться с выполненным тестированием"

11. Загрузите бизнес-процесс на RunaWFE сервер

Загрузите разработанный бизнес-процесс на сервер, используя пункт меню "Файл/Экспорт процесса" (Подробнее см. "Изучение перспективы потока управления" ).

Войдите в web-интерфейс RunaWFE под пользователем Administrator.

После загрузки необходимо настроить обладателей полномочий на данный процесс.

Для "Пример 9-1" нужно добавить в обладатели полномочий группу "Группа МИБ-1" с правами на чтение, чтение экземпляра и запуск, а также группу "Преподаватели" с правами на чтение и чтение экземпляра (Подробнее см. "Изучение интерфейса системы RunaWFE" ).

12. Запустите бизнес-процесс "Пример 9-1" и доведите экземпляр процесса до завершения.

Описание порядка выполнения бизнес-процесса взаимодействия:

Студент из группы "Группа МИБ-1" запускает процесс "Пример 9-1", по отношению "Преподаватель" выбирается соответствующий Преподаватель данного Студента. Преподаватель вводит список вопросов для тестирования, а также задает длительность тестирования в минутах. Срабатывает обработчик который определяет Дату и время окончания тестирования на основе текущей даты/времени и выбранной длительности тестирования. Студент получает задание "Выполнить тестирование", где отвечает на тестовые вопросы. Создается таймер. Если Студент не выполнит задание до "Дата и время окончания тестирования" + 1 минута, то таймер сработает, и задание "Выполнить тестирование" будет просрочено. Тестирование будет закрыто, Преподаватель и Студент получат соответствующие уведомления. В случае же если студент успеет выполнить задание за отведенное время, Преподаватель получит уведомление со списком введенных Студентом ответов на тестовые вопросы.

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

Выполнение бизнес-процессов по шагам:

Для запуска процесса "Пример 9-1" войдите в систему под пользователем из группы "Группа МИБ-1", например "Мухин" и кликните на имя процесса в общем списке бизнес-процессов (См. рис. 14.19)

Запуск бизнес-процесса "Пример 9-1"

Рис. 14.19. Запуск бизнес-процесса "Пример 9-1"

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

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

Отношение "Преподаватель"

Рис. 14.20. Отношение "Преподаватель"
Задание, соответствующее узлу "Ввести данные тестирования"

Рис. 14.21. Задание, соответствующее узлу "Ввести данные тестирования"

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

Ввод данных тестирования

Рис. 14.22. Ввод данных тестирования

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

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

Определение даты и времени окончания тестирования

Рис. 14.23. Определение даты и времени окончания тестирования

Как видно из рис. 14.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-х минут (см. рис. 14.24) т.е. пока не сработает таймер.

Задача "Выполнить тестирование"

Рис. 14.24. Задача "Выполнить тестирование"

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

Задача "Выполнить тестирование" просрочена

Рис. 14.25. Задача "Выполнить тестирование" просрочена

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

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

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

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

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

Для этого можно воспользоваться функцией копирования процесса (подробнее см. "Изучение перспективы потока управления" ), после чего внести изменения в соответствии со схемой изображенной на рис. 14.26.

Схема бизнес-процесса "Пример 9-2"

увеличить изображение
Рис. 14.26. Схема бизнес-процесса "Пример 9-2"

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

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

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

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

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

Переменные бизнес-процесса "Пример 9-2"

Рис. 14.27. Переменные бизнес-процесса "Пример 9-2"

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

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

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

Форма "Ввести данные тестирования"

Рис. 14.28. Форма "Ввести данные тестирования"

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

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

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

Валидатор "Диапазон даты относительно текущей"

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

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

Форма узла "Ознакомиться с датой и временем проведения тестирования"

увеличить изображение
Рис. 14.30. Форма узла "Ознакомиться с датой и временем проведения тестирования"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ввод данных преподавателем

Рис. 14.32. Ввод данных преподавателем

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

Преподавателю должны быть представлены отчет и файл с данными archive.datafile, полученный командой "Система/Выгрузить файл с данными/Экспортировать", содержащие разработанные на занятии бизнес-процессы.

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

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

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

  1. Что такое Таймер? Как он используется?
  2. Что такое Обработчик? Как он используется?
  3. Можно ли поместить Таймер на переход?
  4. Можно ли присоединить Обработчик к Параллельному шлюзу?
Александр Шальных-Булатов
Александр Шальных-Булатов

Вижу по теме информацию о том, что преподавателю нужно отправить отчет и контрольный файл.

Всего вопросов 2.

1. Куда и как отправлять преподавателю контрольный файл?

2. Какой отчет, о чем писать?

Инна Инна
Инна Инна

Та же проблема, что и у Марины. Содержание черного окошка и версию Java отправила на указанный почтовый адрес.

 

Жанна Одайкина
Жанна Одайкина
Россия, Курск, РФЭИ, 2015
Андрей Частухин
Андрей Частухин
Россия