Различия

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

Ссылка на это сравнение

ru:simulation_fca:technology:stages_simulation_fca:jump_step [2015/11/24 12:23]
belkin [Задание времени синхронизации для процессов в нотации BPMN]
— (текущий)
Строка 1: Строка 1:
-====== Моделирование слияния веток процесса ====== 
- 
-Слияние веток процесса возможно в двух случаях: 
- 
-  - Слияние параллельных веток, которые возникли в результате ветвления, и эти ветки  принадлежат одному экземпляру процесса. 
-  - Слияние веток, независимо стартовавших по разным событиям.  
-===== Слияние веток после ветвления ===== 
- 
-После оператора ветвления имитация исполняет параллельные ветки экземпляра процесса одновременно. Параллельно выполняемые ветки экземпляра процесса могут снова объединиться в операторе слияния (//Рис.1//). Продолжительность имитации каждой параллельной ветки, в общем случае, будет разной, следовательно, в оператор слияния токены, порожденные оператором ветвления,  придут  в разное время. Токен, пришедший по первой ветке экземпляра процесса, может ожидать в  точке слияния прихода следующего токена, а может запустить выполнение процесса далее без ожидания. Это будет зависеть от используемого оператора слияния и параметра //время синхронизации//. 
- 
-\\ 
- 
-[{{ ru/simulation_fca/technology/stages_simulation_fca/jump_step/jump_step_001.png?nolink | Рисунок 1. Диаграмма с параллельными ветками}}] 
- 
-\\ 
- 
-==== Задание времени синхронизации для экземпляров процессов в нотации ЕРС ==== 
- 
-На диаграмме процесса в нотации ЕРС в качестве точки слияния параллельных веток процесса используются операторы. Время синхронизации задается в **Окне свойств** каждого оператора (//Рис.2//). 
- 
-\\ 
- 
-[{{ ru/simulation_fca/technology/stages_simulation_fca/jump_step/jump_step_002.png?nolink |Рисунок 2. Задание времени синхронизации для оператора}}] 
- 
-\\ 
- 
-=== Оператор «И» === 
- 
-Если в качестве оператора слияния используется оператор «И», дальнейшее выполнение экземпляра процесса продолжится только в случае, если выполнятся все ветки, входящие в этот оператор. Выполнение одной из веток запускает время синхронизации, в течение которого экземпляр процесса ожидает выполнения остальных веток. Если по окончании времени синхронизации остальные ветки экземпляра процесса не выполнились, выполнение экземпляра процесса останавливается. 
- 
-Если время синхронизации в операторе не задано, после выполнения одной из веток экземпляр процесса будет ожидать выполнения остальных веток до окончания имитации. 
- 
-=== Оператор «ИЛИ» === 
- 
-Если в качестве оператора слияния используется оператор «ИЛИ», выполнение одной из веток, входящей в оператор, запускает дальнейшее выполнение экземпляра процесса и время синхронизации. Если в течение времени синхронизации выполняются другие ветки экземпляра процесса, дальнейшее выполнение экземпляра процесса они не запускают. По истечении времени синхронизации цикл повторяется снова. 
- 
-Если время синхронизации в операторе не задано, каждая ветка экземпляра процесса, входящая в оператор, запускает дальнейшее выполнение экземпляра процесса. 
- 
-=== Оператор «Исключающее ИЛИ» === 
- 
-Если в качестве оператора слияния используется оператор «Исключающее ИЛИ», вне зависимости от значения времени синхронизации каждая ветка экземпляра процесса, входящая в этот оператор, запускает дальнейшее выполнение экземпляра процесса. 
- 
-==== Задание времени синхронизации для процессов в нотациях Процесс, Процедура ==== 
- 
-На диаграммах процессов в нотациях Процесс, Процедура в качестве точки слияния параллельных веток выступает блок процесса, у которого есть несколько входящих стрелок «Связь предшествования». 
- 
-Время синхронизации задается для всех диаграмм процессов в нотациях Процесс, Процедура один раз в параметре «Время синхронизации для Процессов/Процедур» (**Главное меню** -> **Анализ процессов** -> **Параметры ФСА**). 
- 
-В течение времени синхронизации экземпляр процесса будет ожидать выполнения всех веток, входящих в точку слияния. Дальнейшее выполнение экземпляра процесса продолжится, только если в течение времени синхронизации выполнятся все ветки экземпляра процесса. Если этого не произойдет, по окончании времени синхронизации выполнение экземпляра процесса остановится. 
- 
-Если значение времени синхронизации не установлено, после выполнения одной из веток экземпляр процесс будет ожидать выполнения остальных веток в точке слияния до окончания имитации. 
- 
-==== Задание времени синхронизации для процессов в нотации BPMN ==== 
-  
-=== Эксклюзивный шлюз (Исключающее ИЛИ, XOR) === 
- 
- 
-Если в качестве оператора слияния используется Эксклюзивный шлюз (XOR), вне зависимости от значения времени синхронизации каждая ветка экземпляра процесса, входящая в этот оператор, запускает дальнейшее выполнение экземпляра процесса. Тот же механизм используется для случая, когда оператор слияния отсутствует. 
- 
-\\ 
- 
-| {{ ru/simulation_fca/technology/stages_simulation_fca/jump_step/jump_step_204.png?nolink }} | \\ \\ \\ \\ \\ =  |{{ ru/simulation_fca/technology/stages_simulation_fca/jump_step/jump_step_206.png?nolink }} | 
-|  Рисунок 3. Слияние по XOR  ||| 
- 
-\\ 
- 
-=== Неэксклюзивный шлюз (ИЛИ) === 
- 
-Неэксклюзивный шлюз слияния потоков используются для объединения нескольких параллельных веток в одну. Для шлюза может быть задано время синхронизации. 
- 
-Окончание выполнения одной из сливающихся веток, запускает дальнейшее выполнение экземпляра процесса и стартует время синхронизации. Если в течение времени синхронизации завершают выполнение другие ветки экземпляра процесса, то дальнейшее выполнение экземпляра процесса они не запускают. По истечении времени синхронизации цикл повторяется снова. 
- 
-Если время синхронизации для шлюза не задано, каждая ветка экземпляра процесса, входящая в шлюз, запускает дальнейшее выполнение экземпляра процесса. 
- 
-\\ 
- 
-| {{ ru/simulation_fca/technology/stages_simulation_fca/jump_step/jump_step_208.png?nolink }} | \\ \\ \\ \\ \\ =  |{{ ru/simulation_fca/technology/stages_simulation_fca/jump_step/jump_step_210.png?nolink }} | 
-|  Рисунок 4. Слияние по OR  ||| 
- 
-\\ 
- 
-=== Комплексный шлюз === 
- 
-Комплексный шлюз {{ru/simulation_fca/technology/stages_simulation_fca/jump_process/jump_process_167.png?nolink}} обрабатывается в процессе имитации как неэксклюзивный шлюз (ИЛИ). 
- 
-\\ 
-=== Параллельный шлюз === 
- 
-Параллельный шлюз {{ru/simulation_fca/technology/stages_simulation_fca/jump_process/jump_process_172.png?nolink}} обрабатывается в процессе имитации как оператор AND в нотации EPC. 
-==== Пример использования времени синхронизации для управления ходом процесса в точке слияния веток процесса ==== 
- 
-В качестве примера рассмотрим процесс обслуживания клиента (//Рис.5//). 
- 
-\\ 
- 
-[{{ ru/simulation_fca/technology/stages_simulation_fca/jump_step/jump_step_005.png?nolink |Рисунок 5. Диаграмма процесса «Обслуживание клиента»}}] 
- 
-\\ 
- 
-По условиям примера клиент может обратиться в компанию для приобретения либо продукта А, либо продукта Б, либо для приобретения обоих продуктов. После выяснение информации о том, какой продукт необходим клиенту, сотрудники компании изготавливают этот продукт и отправляют его клиенту. Изготовление каждого продукта занимает разное время. Поэтому если клиенту необходимо оба продукта, то изготовленные продукты могут быть отправлены клиенту либо оба сразу, либо по отдельности по мере изготовления каждого. 
- 
-Возможна ситуация, когда один из продуктов уже изготовлен, а до окончания изготовления второго продукта осталось не более 8 часов. В этом случае целесообразно подождать изготовления второго продукта и отправить весь заказ клиенту сразу. 
- 
-Для моделирования данной ситуации в точке слияния веток процесса в окне свойств оператора «ИЛИ» необходимо задать время синхронизации (//Рис.6)//. 
- 
-\\ 
- 
-[{{ ru/simulation_fca/technology/stages_simulation_fca/jump_step/jump_step_012.png?nolink |Рисунок 6. Задание времени синхронизации для оператора слияния OR}}] 
- 
-\\ 
- 
-В результате, в случае, если компания будет изготавливать для клиента оба продукта, возможны 2 ситуации: 
- 
-  * Если разность между временем окончания изготовления каждого из продуктов составит не более 8 часов, отправка будет осуществлена 1 раз. 
-  * Если разность между временем окончания изготовления каждого из продуктов составит 8 часов и более, каждый продукт будет отправлен клиенту отдельно. 
-===== Слияние веток, независимо стартовавших по разным событиям ===== 
- 
-Для слияния по AND для всех нотаций принимается, что токен, порожденный стартом одного экземпляра стартового события на одной ветке,  должен обязательно дождаться токен, порожденный стартом другого стартового события на другой ветке. Ожидание производится по стандартным правилам, принятым для данной нотации (они описаны выше). Токены объединяются по принципу "первый с первым". Например, если есть 100 токенов процесса А, ожидающих в точке слияния, то первый пришедший токен процесса В продолжит выполнение самого раннего экземпляра процесса А.  
-Поэтому рекомендуется задавать стартовые события на одной и другой ветке таким образом, чтобы частота их возникновения совпадала. Иначе экземпляры объединяемых токенов «разъедутся» со временем и имитация может дать неверные результаты. 
- 
-Для имитации ситуаций, когда один токен, порожденный стартовым событием одной ветки, должен объединиться со всеми токенами, порожденными другим стартовым событием другой ветки (см. //Рис.7//), в **Окне свойств** стартовых событий необходимо заполнить параметр "Область действия".  
- 
-\\ 
- 
-[{{ ru/simulation_fca/technology/stages_simulation_fca/jump_step/jump_step_015.png?nolink |Рисунок 7. Диаграмма процесса «Подготовка и отправка писем» в нотации EPC}}] 
- 
-\\ 
- 
- 
-По умолчанию, параметр "Область действия" скрыт . Его можно вывести на показ с помощью пункта меню **Настройка колонок** (**Окно свойств** события → вкладка **Параметры ФСА** -> кнопка **Действия** -> **Настройка колонок**). Параметр может принимать значения:  
-  * Глобальное, 
-  * Локальное.  
-Локальное событие возникает в одном экземпляре процесса. Глобальное событие возникает во всех экземплярах соответствующих процессов, которые созданы в имитации на момент возникновения этого события. Для рассматриваемого примера событие "Возникла необходимость отправить письмо" является Локальным, а событие "Пришел курьер" - Глобальным. Все токены, порожденные событием "Возникла необходимость отправить письмо", дойдя до оператора AND, будут ожидать токена, порожденного событием  "Пришел курьер", и только после возникновения события "Пришел курьер", выполнение процесса продолжится. 
- 
-В нотации BPMN диаграмма, изображенная на //Рис.7//, будет иметь следующий вид (//Рис.8//): 
- 
-\\ 
- 
-[{{ ru/simulation_fca/technology/stages_simulation_fca/jump_step/jump_step_016.png?nolink |Рисунок 8. Диаграмма процесса «Подготовка и отправка писем» в нотации BPMN}}] 
- 
-\\ 
- 
- 
-Для слияния по XOR для всех нотаций слияние работает на пропуск токена, никоим образом его не обрабатывая. 
- 
-Слияние по ИЛИ не реализовано в связи с тем, что невозможно определить, какие токены в точке слияния необходимо слить вместе, а какие оставить раздельными. 
-==== Пример использования переменных ==== 
- 
-Для имитации сложных взаимодействий между ветками процессов можно использовать переменные. 
- 
-\\ 
- 
-[{{ ru/simulation_fca/technology/stages_simulation_fca/jump_step/jump_step_013.png?nolink |Рисунок 9. Параллельные ветки, запущенные в рамках разных экземпляров процесса}}] 
- 
-\\ 
- 
-Для того чтобы процесс "Сборка изделия" начал выполняться в момент, когда возникнут события "Деталь 1 сформирована", "Деталь 2 закуплена", можно: 
- 
-  - Преобразовать диаграмму к виду: \\ [{{ ru/simulation_fca/technology/stages_simulation_fca/jump_step/jump_step_014.png?nolink |Рисунок 10. Преобразованная диаграмма процесса}}] 
-  - На вкладке **Переменные** объекта "Деталь 1" задать переменную x (Тип переменной - Целый, Стартовое значение = 0, Тип материального ресурса - Глобальный). 
-  - На вкладке **Действия с переменными** процесса "Формирование детали 1" задать действие: x=1 (Момент совершения операции - В конце процесса). 
-  - На вкладке **Условия** события "Деталь 2 закуплена" задать логическое выражение: x=1. 
-  - На вкладке **Условия** события "Деталь 2 не закуплена" задать логическое выражение: x!=1. 
-  - Для вспомогательного процесса задать минимальное время выполнения, равное шагу имитации. 
-  - На вкладке **Действия с переменными** процесса "Сборка изделия" задать действие: x=0 (Момент совершения операции - В начале процесса). 
- 
-Процесс "Сборка изделия" начнет выполняться только тогда, когда выполнятся оба события: "Деталь 1 сформирована" и "Деталь 2 закуплена". 
- 
- 
- 
- 
- 
-[<contextnavigator>] 
- 
  
Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki