mirror of
https://github.com/bpmbpm/doc.git
synced 2026-04-30 20:40:50 +00:00
53 lines
8.3 KiB
Markdown
53 lines
8.3 KiB
Markdown
## subprocess.md
|
||
### Types
|
||
Есть типы процессов:
|
||
- процесс \ подпроцесс; это условность, т.к. подпроцесс - это тоже процесс (как и система \ подсистема). Любой Подпроцесс имеет тип отношения Nesting of Elements ([archimate](https://online.visual-paradigm.com/ru/diagrams/templates/archimate-diagram/application-process-view-nesting/) и т.п.) к верхнеуровневому (который не обязательно материнский)
|
||
- подпроцесс: вложенный дочерний или вложенный внешний. Вложенный - в смысле "вложенный в верхнеуровневый процесс" (как родной или как чужой, но все равно вложенный - nesting). Все дочерние процессы мы ищем в ветке ниже материнского процесса в дереве процессов. В тоже время: внешний процесс - находится совсем в другой ветке дерева процессов.
|
||
- дочерний \ (родительский - материнский), т.е. материнский процесс - всегда детализируемый (по определению).
|
||
Если процесс имеет подпроцессы, то он "детализируемый", если не имеет подпроцессов - то он элементарный (атомарный, неделимый). В ARIS EPC - признак "детализированный процесс" - справа от иконки "function" пиктограмма [Lower-level \ detailed level](https://ariscommunity.com/system/files/cs-aris-epc-en-24.pdf) и соответсвенно сама иконка кликабельная (хотя мне куда больше нравится исходная шееровская легенда \ отрисовка иконок).
|
||
- внешний процесс: приемный (чужой) или внучатый (связь через поколения), но все равно он не дочерний.
|
||
|
||
mermaid
|
||
```
|
||
1.2.1>Процесс 1.2.1] --> 1.2.2>Процесс 1.2.2] --> 1.2.1.1>Процесс 1.2.2.1]--> 3.3.3>Процесс 3.3.3] --> 1.2.2_>Процесс 1.2.1]
|
||
```
|
||
|
||
``` mermaid
|
||
flowchart LR
|
||
1.2(Заголовок схемы: Процесс 1.2)
|
||
1.2.1>Процесс 1.2.1] --> 1.2.2>Процесс 1.2.2] --> 1.2.1.1>Процесс 1.2.2.1]--> 3.3.3>Процесс 3.3.3] --> 1.2.2_>Процесс 1.2.1]
|
||
|
||
```
|
||
Рис. 1. Схема процесса 1.2 (его подпроцессы, последовательно выполняемые). [Online](https://mermaid.live/edit#pako:eNptUL1OwzAQfpXoJpDSyHaSknjoAiMssCEjZCVuUymxK-MIShQJFhYeoq_AAGt5BeeN6qQqFBTf4Lvvvu_-GshULoDCvFSPWcG18S6vmcQBObEbu7Wf9rt7sdvuzX51r87evb-A_fAc95RJzz3nBXhmN8eEPXjnTSazwSVjefKbx-MV-ho9JQyc_ScM4FGL-_EeTLoxmQQfFnqZAzW6Fj5UQle8D6Hpt2BgClEJBtS5uZjzujQMmGydbMXlrVLVQalVvSiAznn54KJ6lXMjLpZ8oXn1g_LaqJu1zA4akS-N0lf7mw-nd3WEzIU-V7U0QONpPDQC2sAT0CQNyBRFGEUIETSNz3xYA42igKAoTFOCEkTc3_rwPEyGggSjMA4JTmOUYhIl7Q5IMbPf)
|
||
|
||
Процесс 1.2 имеет подпроцессы (детализацию), т.е. отношение типа "имеет вложения \ nesting" к подроцессам:
|
||
1.2.1, 1.2.2, 1.2.1.1, 3.3.3, 1.2.1 (они вложены в процесс 1.2)
|
||
При этом: все пречисленные процессы {1.2.1, 1.2.2, 1.2.1.1, 3.3.3, 1.2.1} являются вложенными в процесс 1.2, т.е. его подпроцессами (подсистемами).
|
||
Допустим, что только 1.2.1 имеет подпроцессы, например, 1.2.1.1, 1.2.1.2.
|
||
Таким образом, 1.2.1 - детализируемый процесс, а все остальные перечисленные - элементарные (нет детализации).
|
||
Определение: Подпроцесс считается дочерним (обратно - материнским), если он имеет одну степень потомства, в данном случае, отличется на 1 по иерархии.
|
||
Примеры: 1.2 имеет дочерний 1.2.1, а 1.2.1 имеет дочерний 1.2.1.1.
|
||
|
||
"По хорошему" - на диаграмме нужно каждый VAD-кораблик обозначать цветом, закрепленным за типом. Например, зеленый - элементарный дочерний процесс, ярко - зеленый - детализируемый дочерний, а внешний - синим. Всего три цвета определяют тип подпроцесса (в границах процесса).
|
||
|
||
### Tuple vs Set
|
||
Есть понятие схемы процессов (читай кортежи) и дерево процессов (читай множество). Схема процесса позиционирует (присваивает идентификатор, при этом процессы 1.2.1 на схеме процесса 1.2 будут иметь разные идентификаторы). Дерево процессов - это множество, образующее дерево.
|
||
Схема процесса - Кортеж (Tuple) - Упорядочен (элементы имеют индекс) и может содержать повторяющиеся элементы (1.2.1). Дерево процессов - Множество (Set) - порядок не важен и содержит только уникальные элементы.
|
||
Что в дереве, что в схеме идет отсылка на главный элеиент, но в схеме это "nesting", а в дереве это "имеет родителя" (строгая иерархия).
|
||
|
||
Собственно это было показано как [дерево процессов vs дерево схем процессов](https://github.com/bpmbpm/SemanticBPM/wiki/%D0%9C%D0%B5%D1%82%D0%B0%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C-%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D0%B2)
|
||
с цветовым обозначением VAD - кораблика (по типу), с отсылкой на схему деления и с формализацией в RDF (turtle).
|
||
|
||
### process call
|
||
Понятие "вызвать процесс \ подпроцесс" - это просто передать ему на вход маркер (workflow input). Никакого отношения к отношению "имеет родителя" и "вложен в процесс" он (вызвать процесс) не имеет.
|
||
На схеме VAD это отношение типа hasNext (имеет следующего), т.е. передача маркера слежующему в эстафете (процессе). Понятно, что если в детализируемый процесс попадает маркер (бегунок, фишка), то он передается на вход первого подпроцесса и далее бежит до конца процесса. Однако механика передачи маркера, что родному подпроцессу, что чужому (включая внучатого) - одинаковая.
|
||
|
||
Все изложенное относится и к BPNM, но в VAD и EPC это более интуитивно понятно. Хорошо бы иметь общую (корневую, верхнеуровневую) "онтологию процесса" / "МетаМодель процесса" на коком либо формализме (в т.ч. DSL), которая бы четко формализовала "механику процесса" (и визуализировала), а ее уже потом тиражировать на VAD, EPC, BPMN, archimate и т.п. В идеале - через математический формализм (например, теорию множеств).
|
||
|
||
## miscellaneous
|
||
### mermaid
|
||
- https://habr.com/ru/articles/652867/
|
||
- Ужас: >xxx] сделали, а нормальный VAD не додумали [xxx>
|
||
### EPC
|
||
- https://habr.com/ru/articles/143273/
|
||
|