Это старая версия документа.


Задание условий перехода к следующему шагу имитации в точке слияния веток процесса

Слияние веток процесса возможно в двух случаях:

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

Слияние параллельных веток после разветвления

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

Invalid Link
Рисунок 1. Диаграмма с параллельными ветками, объединенными в точке слияния

Задание времени синхронизации для экземпляров процессов в нотации ЕРС

На диаграмме процесса в нотации ЕРС в качестве точки слияния параллельных веток процесса используются операторы. Время синхронизации задается в окне свойств каждого оператора (Рис.2).

Invalid Link
Рисунок 2. Задание времени синхронизации для оператора

Оператор «И»

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

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

Оператор «ИЛИ»

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

Если время синхронизации в операторе не задано, каждая ветка экземпляра процесса, входящая в оператор, запускает дальнейшее выполнение экземпляра процесса.

Оператор «Исключающее ИЛИ»

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

Задание времени синхронизации для процессов в нотациях Процесс, Процедура

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

Время синхронизации задается для всех диаграмм процессов в нотациях Процесс, Процедура один раз в параметре «Время синхронизации для Процессов/Процедур» (меню ФСА → Параметры ФСА).

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

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

Задание времени синхронизации для процессов в нотации BPMN

 

Эксклюзивный шлюз (Исключающее ИЛИ, XOR)

При слиянии с использованием эксклюзивного шлюза (XOR) шлюз просто пропускает токены через себя: Задача 3 будет выполнена 2 раза (например, где-то разветвились по AND, а слияние с синхронизацией не нужно). Т.е. без синхронизации. Время синхронизации игнорировать.

 




=
Рис.3.Слияние по XOR

Слияние без шлюза нужно обрабатывать как XOR.

Неэксклюзивный шлюз (ИЛИ)

Объединяющие неэксклюзивные шлюзы используются для объединения нескольких альтернативных и параллельных маршрутов в один. Для шлюза может быть задано время синхронизации.

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

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

Invalid Link
Рис.4.Слияние по OR

Комплексный шлюз

При имитации комплексный шлюз нужно обрабатывать как неэксклюзивный шлюз (ИЛИ).

Invalid Link
Рис.5. Слияние как по OR

 

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

В качестве примера рассмотрим процесс обслуживания клиента (Рис.6).

Invalid Link
Рисунок 6. Диаграмма процесса «Обслуживание клиента»

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

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

Для моделирования данной ситуации в точке слияния веток процесса в окне свойств оператора «ИЛИ» необходимо задать время синхронизации (Рис.7).

Invalid Link
Рисунок 7. Задание времени синхронизации для оператора слияния OR

В результате, в случае, если компания будет изготавливать для клиента оба продукта, возможны 2 ситуации:

  • Если разность между временем окончания изготовления каждого из продуктов составит не более 8 часов, отправка будет осуществлена 1 раз.
  • Если разность между временем окончания изготовления каждого из продуктов составит 8 часов и более, каждый продукт будет отправлен клиенту отдельно.

Слияние независимо стартовавших экземпляров разных процессов

Для слияния по AND для всех нотаций принимается, что токен, порожденный стартом одного экземпляра стартового события на одной ветке,  должен обязательно дождаться токен, порожденный стартом другого стартового события на другой ветке. Ожидание производится по стандартным правилам, принятым для данной нотации. (Они описаны выше). Совет: старайтесь задать стартовые события на одной и другой ветке таким образом, чтобы частота их возникновения совпадала. Иначе, экземпляры токенов «разъедутся» во времени и имитация даст неверные результаты.

Для слияния по XOR для всех нотаций слияние работает на пропуск токена, никоим образом его не обрабатывая.

Слияние по ИЛИ не реализовано в связи с тем, что невозможно определить, какие токены в точке слияния необходимо слить вместе, а какие оставить раздельными.

Пример использования переменных

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

Invalid Link
Рисунок 8. Параллельные ветки, запущенные в рамках разных экземпляров процесса

Для того чтобы процесс «Сборка изделия» начал выполняться в момент, когда возникнут события «Деталь 1 сформирована», «Деталь 2 закуплена», можно:

  1. Преобразовать диаграмму к виду:
    Invalid Link
    Рисунок 9. Преобразованная диаграмма процесса
  2. В списке «Переменные» объекта «Деталь 1» задать переменную x (Тип переменной - Целый, Стартовое значение = 0, Тип материального ресурса - Глобальный).
  3. В списке «Действия с переменными» процесса «Формирование детали 1» задать действие: x=1 (Момент совершения операции - В конце процесса).
  4. В списке «Условия» события «Деталь 2 закуплена» задать логическое выражение: x=1.
  5. В списке «Условия» события «Деталь 2 не закуплена» задать логическое выражение: x!=1.
  6. Для вспомогательного процесса задать минимальное время выполнения, равное шагу имитации.
  7. В списке «Действия с переменными» процесса «Сборка изделия» задать действие: x=0 (Момент совершения операции - В начале процесса).

Процесс «Сборка изделия» начнет выполняться только тогда, когда выполнятся оба события: «Деталь 1 сформирована» и «Деталь 2 закуплена».

Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki