mirror of
https://github.com/bpmbpm/doc.git
synced 2026-04-29 03:50:46 +00:00
304 lines
9.6 KiB
Markdown
304 lines
9.6 KiB
Markdown
### 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.
|