mirror of
https://github.com/bpmbpm/doc.git
synced 2026-05-01 04:50:44 +00:00
Update ai_EPC-FSM.md
This commit is contained in:
parent
ba1129560e
commit
8b420b3197
1 changed files with 61 additions and 48 deletions
|
|
@ -5,89 +5,102 @@
|
|||
- Функция EPC → Состояние FSM.
|
||||
|
||||
### Ответ
|
||||
Перестроим соответствие между EPC и конечными автоматами согласно правилам:
|
||||
# Преобразование EPC в конечный автомат (FSM) по новым правилам
|
||||
|
||||
1. **Событие EPC → Переход FSM** (а не состояние, как раньше).
|
||||
2. **Функция EPC → Состояние FSM** (а не переход).
|
||||
3. **Логические операторы исключаем** — рассматриваем линейные цепочки без ветвлений.
|
||||
## Основные принципы соответствия
|
||||
|
||||
## Базовые принципы преобразования
|
||||
В новой схеме используются следующие правила отображения элементов:
|
||||
|
||||
В схеме:
|
||||
- **Состояние FSM** отражает *выполнение функции* из EPC.
|
||||
- **Переход FSM** инициируется *наступлением события* из EPC.
|
||||
- Последовательность «событие → функция → событие» в EPC превращается в «переход → состояние → переход» в FSM.
|
||||
- **Событие EPC** → **Переход FSM**
|
||||
- **Функция EPC** → **Состояние FSM**
|
||||
- **Логические операторы** (AND, OR, XOR) — исключаются (рассматриваются только линейные цепочки)
|
||||
|
||||
## Правила отображения
|
||||
## Правила преобразования
|
||||
|
||||
1. **Начальное событие EPC**
|
||||
→ Переход из начального псевдосостояния FSM в первое состояние (функция).
|
||||
→ Переход из начального псевдосостояния FSM в первое состояние (функция).
|
||||
|
||||
2. **Промежуточное событие EPC**
|
||||
→ Переход между состояниями (от предыдущей функции к следующей).
|
||||
→ Переход между состояниями (от предыдущей функции к следующей).
|
||||
|
||||
3. **Конечное событие EPC**
|
||||
→ Переход из последнего состояния FSM в конечное псевдосостояние.
|
||||
→ Переход из последнего состояния FSM в конечное псевдосостояние.
|
||||
|
||||
4. **Функция EPC**
|
||||
→ Состояние FSM, в котором выполняется соответствующая операция.
|
||||
→ Состояние FSM, в котором выполняется соответствующая операция.
|
||||
|
||||
## Формальная схема преобразования
|
||||
|
||||
Для цепочки EPC:
|
||||
Для цепочки EPC вида:
|
||||
```
|
||||
[\text{Событие}_1] \to (\text{Функция}_1) \to [\text{Событие}_2] \to (\text{Функция}_2) \to \ldots \to [\text{Событие}_n]
|
||||
[Событие₁] → (Функция₁) → [Событие₂] → (Функция₂) → ... → [Событиеₙ]
|
||||
```
|
||||
|
||||
Получаем FSM:
|
||||
- Состояния: $S_1, S_2, \ldots, S_{n-1}$, где $S_i$ соответствует $(\text{Функция}_i)$.
|
||||
- Переходы:
|
||||
- $S_{\text{нач}} \xrightarrow{\text{Событие}_1} S_1$
|
||||
- $S_1 \xrightarrow{\text{Событие}_2} S_2$
|
||||
- $\ldots$
|
||||
- $S_{n-1} \xrightarrow{\text{Событие}_n} S_{\text{кон}}$
|
||||
Получаем FSM со следующими элементами:
|
||||
|
||||
## Пример
|
||||
**Состояния** (соответствуют функциям):
|
||||
- $S_1$ — (Функция₁)
|
||||
- $S_2$ — (Функция₂)
|
||||
- ...
|
||||
- $S_{n-1}$ — (Функция$_{n-1}$)
|
||||
|
||||
**Исходная EPC‑цепочка**:
|
||||
**Переходы** (инициируются событиями):
|
||||
1. $S_{\text{нач}} \xrightarrow{\text{Событие}_1} S_1$
|
||||
2. $S_1 \xrightarrow{\text{Событие}_2} S_2$
|
||||
3. ...
|
||||
4. $S_{n-1} \xrightarrow{\text{Событие}_n} S_{\text{кон}}$
|
||||
|
||||
где:
|
||||
- $S_{\text{нач}}$ — начальное псевдосостояние FSM
|
||||
- $S_{\text{кон}}$ — конечное псевдосостояние FSM
|
||||
|
||||
## Пример преобразования
|
||||
|
||||
**Исходная EPC‑цепочка:**
|
||||
```
|
||||
[\text{Заказ получен}] \to (\text{Проверить оплату}) \to [\text{Оплата подтверждена}] \to (\text{Отправить товар}) \to [\text{Товар отправлен}]
|
||||
[Заказ получен] → (Проверить оплату) → [Оплата подтверждена] → (Отправить товар) → [Товар отправлен]
|
||||
```
|
||||
|
||||
**Полученный FSM**:
|
||||
- Состояния:
|
||||
- $S_1$: «Проверить оплату»
|
||||
- $S_2$: «Отправить товар»
|
||||
- Переходы:
|
||||
1. $S_{\text{нач}} \xrightarrow{\text{Заказ получен}} S_1$
|
||||
2. $S_1 \xrightarrow{\text{Оплата подтверждена}} S_2$
|
||||
3. $S_2 \xrightarrow{\text{Товар отправлен}} S_{\text{кон}}$
|
||||
**Полученный FSM:**
|
||||
|
||||
**Состояния:**
|
||||
- $S_1$: «Проверить оплату»
|
||||
- $S_2$: «Отправить товар»
|
||||
|
||||
**Переходы:**
|
||||
1. $S_{\text{нач}} \xrightarrow{\text{Заказ получен}} S_1$
|
||||
2. $S_1 \xrightarrow{\text{Оплата подтверждена}} S_2$
|
||||
3. $S_2 \xrightarrow{\text{Товар отправлен}} S_{\text{кон}}$
|
||||
|
||||
## Особенности и ограничения
|
||||
|
||||
1. **Линейность**
|
||||
Схема работает только для *последовательных* EPC без ветвлений, параллелизма и циклов. Для сложных случаев требуется расширение модели (например, добавление условий на переходах).
|
||||
Метод применим только для последовательных EPC без:
|
||||
- ветвлений
|
||||
- параллельных процессов
|
||||
- циклов
|
||||
|
||||
2. **Семантика состояний**
|
||||
Состояние FSM означает *активное выполнение функции*, а не ожидание события (как в классическом FSM). Это меняет интерпретацию:
|
||||
- В EPC событие «Оплата подтверждена» *завершает* функцию «Проверить оплату».
|
||||
- В FSM переход по событию «Оплата подтверждена» *выводит* из состояния «Проверить оплату».
|
||||
В отличие от классического FSM, состояние здесь означает *активное выполнение функции*, а не ожидание события.
|
||||
|
||||
3. **Инициализация**
|
||||
Начальное псевдосостояние FSM не имеет аналога в EPC — оно введено для формальной корректности автомата.
|
||||
Начальное псевдосостояние FSM ($S_{\text{нач}}$) введено формально — в EPC прямого аналога нет.
|
||||
|
||||
4. **Завершение**
|
||||
Конечное псевдосостояние FSM аналогично конечному событию EPC, но оформлено как целевой узел перехода.
|
||||
Конечное псевдосостояние ($S_{\text{кон}}$) соответствует конечному событию EPC.
|
||||
|
||||
## Рекомендации по применению
|
||||
|
||||
1. Используйте этот подход для:
|
||||
- Простых линейных процессов.
|
||||
- Моделирования этапов обработки, где важно выделить *время выполнения функций*.
|
||||
**Использовать метод рекомендуется для:**
|
||||
- простых линейных процессов;
|
||||
- моделирования этапов обработки с акцентом на время выполнения функций.
|
||||
|
||||
2. Для ветвлений/циклов:
|
||||
- Добавьте условия на переходах (например, $\text{Оплата подтверждена} \land \text{Склад готов}$).
|
||||
- Рассмотрите расширение до *Harel Statecharts* или *UML State Machines*.
|
||||
**Для сложных случаев (ветвления, циклы):**
|
||||
- добавляйте условия на переходах (например, $\text{Оплата подтверждена} \land \text{Склад готов}$);
|
||||
- рассмотрите переход к расширенным моделям:
|
||||
- Harel Statecharts;
|
||||
- UML State Machines.
|
||||
|
||||
3. Для автоматизации:
|
||||
- Применяйте инструменты вроде **YAKINDU Statechart Tools** или **PlantUML**, поддерживающие кастомные правила преобразования.
|
||||
**Инструменты для автоматизации:**
|
||||
- YAKINDU Statechart Tools;
|
||||
- PlantUML (поддержка кастомных правил преобразования).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue