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


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

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

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

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


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

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

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

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

Оператор «И»

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

Рис.4. Задание времени синхронизации для оператора слияния OR

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

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

Управление ходом процесса в точке слияния при помощи переменных

В точке слияния веток процесса время синхронизации запускается для каждого экземпляра процесса отдельно. Это означает, что процесс «Сборка изделия», представленный на Рис.5, никогда не выполнится, т.к. ветки процесса, которые объединяются в операторе «И», выполняются в рамках разных экземпляров процесса.

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

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

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

1. Преобразовать диаграмму к виду:

Преобразованная диаграмма процесса

Рис.6. Преобразованная диаграмма процесса

2. В списке «Переменные» объекта «Деталь 1» задать переменную x (Тип переменной – Целый, Стартовое значение = 0, Тип материального ресурса - Глобальный).

3. В списке «Действия с переменными» процесса «Формирование детали 1» задать действие: x=1 (Момент совершения операции – В конце процесса).

4. В списке «Условия» события «Деталь 2 закуплена» задать логическое выражение: x=1.

5. В списке «Условия» события «Деталь 2 не закуплена» задать логическое выражение: x!=1.

6. Для вспомогательного процесса задать минимальное время выполнения (см. fca_process_options), равное шагу имитации.

7. В списке «Действия с переменными» процесса «Сборка изделия» задать действие: x=0 (Момент совершения операции – В начале процесса).

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

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