doc/BPM/notation/BPMN/Mapping-BPMN-to-EPC.md
2025-11-18 11:31:43 +03:00

304 lines
9.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### Mapping BPMN to EPC
#### info
- https://www.businessstudio.ru/help/docs/current/doku.php/ru/csdesign/bpmodeling/bpmn_notation
- https://www.businessstudio.ru/help/docs/current/doku.php/ru/csdesign/bpmodeling/epc_notation
### Ответ 1
# Маппинг шлюзов BPMN в нотацию EPC
## 1. Exclusive Gateway (XOR) → Оператор XOR в EPC
### Разделяющий XOR (Exclusive Decision)
**BPMN**:
```
[ ]→〈X〉→{A}
→{B}
```
**EPC**:
```
(Event1)→[Function]→(Event2)─XOR─→[Function A]→...
└─→[Function B]→...
```
**Комментарий**: В EPC оператор XOR после события указывает на исключающее ИЛИ - будет выполнена только одна из последующих функций. Условия выбора пути указываются в виде событий или текстовых аннотаций.
### Сходящийся XOR (Exclusive Merge)
**BPMN**:
```
{A}→〈X〉→[ ]
{B}→ ↗
```
**EPC**:
```
...→[Function A]→(Event1)─XOR─→[Next Function]→...
...→[Function B]→(Event2)─┘
```
**Комментарий**: Сходящийся XOR объединяет альтернативные пути. В EPC это реализуется через оператор XOR, который ожидает одно из возможных предыдущих событий.
## 2. Parallel Gateway (AND) → Оператор AND в EPC
### Разделяющий AND (Parallel Fork)
**BPMN**:
```
[ ]→〈+〉→{A}
→{B}
```
**EPC**:
```
(Event)→[Function]→(Event2)─AND─→[Function A]→...
└─→[Function B]→...
```
**Комментарий**: Оператор AND в EPC активирует все исходящие пути одновременно, что соответствует параллельному выполнению в BPMN.
### Сходящийся AND (Parallel Join)
**BPMN**:
```
{A}→〈+〉→[ ]
{B}→ ↗
```
**EPC**:
```
...→[Function A]→(Event1)─AND─→[Next Function]→...
...→[Function B]→(Event2)─┘
```
**Комментарий**: Сходящийся AND требует завершения всех входящих потоков перед продолжением процесса.
## 3. Inclusive Gateway (OR) → Комбинация операторов в EPC
### Разделяющий OR (Inclusive Decision)
**BPMN**:
```
[ ]→〈O〉→{A}
→{B}
→{C}
```
**EPC**:
```
(Event)→[Function]→(Gateway Event)─OR─→[Function A]→...
├─→[Function B]→...
└─→[Function C]→...
```
**Комментарий**: В EPC нет нативного оператора OR, поэтому используются комбинации XOR и AND, либо расширенные нотации с явным указанием условий.
### Сходящийся OR (Inclusive Merge)
**BPMN**:
```
{A}→〈O〉→[ ]
{B}→ ↗
{C}→ ↗
```
**EPC**:
```
...→[Function A]→(Event1)─\
...→[Function B]→(Event2)─OR─→[Next Function]→...
...→[Function C]→(Event3)─/
```
**Комментарий**: Сложность маппинга заключается в том, что EPC не имеет прямого аналога сходящегося OR. Часто используется комбинация событий и условий.
## 4. Event-Based Gateway → Комбинация событий в EPC
**BPMN**:
```
[ ]→〈◇〉→⚡Timer→{A}
→✉Message→{B}
```
**EPC**:
```
(Start Event)→(Wait State)─XOR─→(Timer Event)→[Function A]→...
└─→(Message Event)→[Function B]→...
```
**Комментарий**: Event-Based Gateway отображается через ожидающее событие с последующим оператором XOR, где каждое исходящее событие представляет триггер.
## 5. Complex Gateway → Пользовательские правила в EPC
**BPMN**:
```
{A}→〈*〉→[ ]
{B}→ ↗
{C}→ ↗
```
**EPC**:
```
...→[Function A]→(Event1)─\
...→[Function B]→(Event2)─[Complex Rule Function]→[Next Function]→...
...→[Function C]→(Event3)─/
```
**Комментарий**: Для Complex Gateway в EPC создается специальная функция, которая инкапсулирует сложную логику объединения потоков.
## Ключевые ограничения маппинга:
1. **Семантические различия**: EPC ориентирована на события, а BPMN - на потоки управления
2. **Отсутствие прямых аналогов**: Не все шлюзы BPMN имеют точные соответствия в EPC
3. **Визуальное представление**: EPC использует операторы как отдельные элементы, а не узлы соединения
4. **Условные переходы**: В EPC условия часто привязаны к событиям, а не к операторам
Маппинг требует адаптации модели с учетом бизнес-логики и конкретных требований процесса.
### Mermaid
# Маппинг шлюзов BPMN в EPC (Mermaid.js)
## 1. Exclusive Gateway (XOR)
### Разделяющий XOR
```mermaid
flowchart TD
A[Функция] --> B{ }
B --> C[Функция A]
B --> D[Функция B]
style B fill:#000000
style B color:#ffffff
```
**Комментарий**: В EPC черный крест (XOR) указывает на исключающий выбор - выполняется только одна ветвь.
### Сходящийся XOR
```mermaid
flowchart TD
A[Функция A] --> C{ }
B[Функция B] --> C
C --> D[Следующая функция]
style C fill:#000000
style C color:#ffffff
```
## 2. Parallel Gateway (AND)
### Разделяющий AND
```mermaid
flowchart TD
A[Функция] --> B{ }
B --> C[Функция A]
B --> D[Функция B]
style B fill:#000000
style B color:#ffffff
```
**Комментарий**: В EPC для AND используется тот же символ, но логика определяется контекстом - все пути выполняются параллельно.
### Сходящийся AND
```mermaid
flowchart TD
A[Функция A] --> C{ }
B[Функция B] --> C
C --> D[Следующая функция]
style C fill:#000000
style C color:#ffffff
```
## 3. Inclusive Gateway (OR)
### Разделяющий OR
```mermaid
flowchart TD
A[Функция] --> B(( ))
B --> C[Функция A]
B --> D[Функция B]
B --> E[Функция C]
style B fill:#000000
style B color:#ffffff
style B stroke:#000000
style B stroke-width:2px
```
**Комментарий**: В EPC OR часто представляется как пустой круг или комбинация операторов, активирующая одну или несколько ветвей.
## 4. Event-Based Gateway
```mermaid
flowchart TD
A[Функция] --> B{◇}
B --> C[⚡ Таймер]
B --> D[✉️ Сообщение]
B --> E[🔄 Ошибка]
C --> F[Обработка таймера]
D --> G[Обработка сообщения]
E --> H[Обработка ошибки]
style B fill:#ffffff
style B color:#000000
style B stroke:#000000
style B stroke-width:2px
```
**Комментарий**: Event-Based Gateway отображается через ожидание различных событий-триггеров.
## 5. Комбинированные операторы EPC
### Комплексная логика
```mermaid
flowchart TD
A[Начальная функция] --> B{XOR}
B --> C[Функция A]
B --> D[Функция B]
C --> E{AND}
D --> E
E --> F[Функция C]
E --> G[Функция D]
F --> H((Конечное событие))
G --> H
style B fill:#000000
style E fill:#000000
style B color:#ffffff
style E color:#ffffff
```
## 6. Полный пример процесса
```mermaid
flowchart TD
Start((Старт)) --> A[Проверить заявку]
A --> B{XOR}
B --> C[Одобрить заявку]
B --> D[Отклонить заявку]
C --> E{AND}
E --> F[Уведомить клиента]
E --> G[Обновить БД]
F --> H((Заявка одобрена))
G --> H
D --> I((Заявка отклонена))
style B fill:#000000
style E fill:#000000
style B color:#ffffff
style E color:#ffffff
```
## Особенности маппинга в Mermaid:
1. **XOR оператор** - черный ромб/прямоугольник
2. **AND оператор** - черный ромб (контекст определяет логику)
3. **События** - круги
4. **Функции** - прямоугольники
5. **Поток управления** - стрелки
Mermaid не имеет нативной поддержки EPC, но может эмулировать основные конструкции через стандартные элементы flowcharts.