doc/METAMODEL/PROCESS/subprocess.md
2025-10-23 23:44:44 +03:00

53 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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/