Update ai_EPC-FSM.md

This commit is contained in:
Dmitry 2025-11-28 21:24:16 +03:00 committed by GitHub
parent ba1129560e
commit 8b420b3197
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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 (поддержка кастомных правил преобразования).