mirror of
https://github.com/bpmbpm/doc.git
synced 2026-05-01 04:50:44 +00:00
5.3 KiB
5.3 KiB
1 Задача
По кнопке включается станок, который работает по таймеру 20 минут (это первый процесс). И есть внешний сигнал на выходе второго процесса, по внешнему сигналу станок прекращает работу. Покажи схему в нотации markdown для размещения на github.
Описание задачи
- Процесс 1: По нажатию кнопки включается станок, который работает по таймеру 20 минут.
- Процесс 2: Есть внешний сигнал, который может остановить станок до истечения таймера.
BPMN-диаграмма в Markdown (для GitHub)
Для размещения на GitHub удобно использовать Mermaid — популярный синтаксис для визуализации диаграмм в Markdown.
flowchart TD
Start([Старт])
ButtonPress{{Нажата кнопка?}}
MachineOn[Включить станок]
TimerEvent([Таймер: 20 минут])
ExternalSignal([Внешний сигнал: Остановить станок])
StopMachine[Остановить станок]
End([Конец])
Start --> ButtonPress
ButtonPress -- Да --> MachineOn
MachineOn --> ParallelSplit
ParallelSplit{{Параллельный шлюз}}
ParallelSplit --> TimerEvent
ParallelSplit --> ExternalSignal
TimerEvent -- По истечении 20 мин --> StopMachine
ExternalSignal -- По сигналу --> StopMachine
StopMachine --> End
Пояснения к схеме
- Параллельный шлюз (
ParallelSplit) используется для одновременного ожидания двух событий: истечения таймера и внешнего сигнала. - Станок останавливается при наступлении любого из событий (таймер или внешний сигнал).
- Диаграмма легко вставляется в README.md на GitHub с помощью блока ```mermaid.
Кратко о BPMN-элементах
- Стартовое событие — начало процесса.
- Задача — действие (включить станок).
- Параллельный шлюз — позволяет слушать несколько событий одновременно.
- Промежуточное событие — таймер или внешний сигнал.
- Конечное событие — завершение процесса 5.
2 BPMN-схема
Корректная BPMN-схема в Markdown (Mermaid) для GitHub
Вы правы: предыдущий пример был в стиле flowchart, а не BPMN. В Mermaid поддержка BPMN ограничена, но с 2023 года появилась базовая поддержка BPMN-диаграмм. Вот как можно изобразить ваш процесс с использованием BPMN-нотации в Mermaid для GitHub:
bpmn
startEvent(id=start, name="Старт")
task(id=turnOn, name="Включить станок")
parallelGateway(id=gw1, name="Ожидание события")
intermediateCatchEvent(id=timer, name="Таймер 20 мин", eventDefinitionType=timer)
intermediateCatchEvent(id=signal, name="Внешний сигнал", eventDefinitionType=signal)
task(id=turnOff, name="Остановить станок")
endEvent(id=end, name="Конец")
start --> turnOn --> gw1
gw1 --> timer --> turnOff
gw1 --> signal --> turnOff
turnOff --> end
Пояснения к BPMN-элементам
- startEvent — старт процесса.
- task — действия: включение и остановка станка.
- parallelGateway — параллельное ожидание двух событий.
- intermediateCatchEvent с типом timer — ожидание истечения 20 минут.
- intermediateCatchEvent с типом signal — ожидание внешнего сигнала.
- endEvent — завершение процесса.
Почему именно так
- В BPMN для выбора между событиями (таймер или сигнал) используется event-based gateway (событийный шлюз), но в Mermaid пока нет его поддержки, поэтому используется parallelGateway как ближайший аналог для иллюстрации одновременного ожидания событий.
- Такая схема наглядно показывает, что станок выключается либо по таймеру, либо по внешнему сигналу.
Если нужна схема в виде BPMN XML или SVG для профессиональных инструментов (например, Camunda Modeler), дайте знать!