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

8.3 KiB
Raw Blame History

subprocess.md

Types

Есть типы процессов:

  • процесс \ подпроцесс; это условность, т.к. подпроцесс - это тоже процесс (как и система \ подсистема). Любой Подпроцесс имеет тип отношения Nesting of Elements (archimate и т.п.) к верхнеуровневому (который не обязательно материнский)
  • подпроцесс: вложенный дочерний или вложенный внешний. Вложенный - в смысле "вложенный в верхнеуровневый процесс" (как родной или как чужой, но все равно вложенный - nesting). Все дочерние процессы мы ищем в ветке ниже материнского процесса в дереве процессов. В тоже время: внешний процесс - находится совсем в другой ветке дерева процессов.
  • дочерний \ (родительский - материнский), т.е. материнский процесс - всегда детализируемый (по определению).
    Если процесс имеет подпроцессы, то он "детализируемый", если не имеет подпроцессов - то он элементарный (атомарный, неделимый). В ARIS EPC - признак "детализированный процесс" - справа от иконки "function" пиктограмма Lower-level \ detailed level и соответсвенно сама иконка кликабельная (хотя мне куда больше нравится исходная шееровская легенда \ отрисовка иконок).
  • внешний процесс: приемный (чужой) или внучатый (связь через поколения), но все равно он не дочерний.

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]
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

Процесс 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 дерево схем процессов с цветовым обозначением VAD - кораблика (по типу), с отсылкой на схему деления и с формализацией в RDF (turtle).

process call

Понятие "вызвать процесс \ подпроцесс" - это просто передать ему на вход маркер (workflow input). Никакого отношения к отношению "имеет родителя" и "вложен в процесс" он (вызвать процесс) не имеет.
На схеме VAD это отношение типа hasNext (имеет следующего), т.е. передача маркера слежующему в эстафете (процессе). Понятно, что если в детализируемый процесс попадает маркер (бегунок, фишка), то он передается на вход первого подпроцесса и далее бежит до конца процесса. Однако механика передачи маркера, что родному подпроцессу, что чужому (включая внучатого) - одинаковая.

Все изложенное относится и к BPNM, но в VAD и EPC это более интуитивно понятно. Хорошо бы иметь общую (корневую, верхнеуровневую) "онтологию процесса" / "МетаМодель процесса" на коком либо формализме (в т.ч. DSL), которая бы четко формализовала "механику процесса" (и визуализировала), а ее уже потом тиражировать на VAD, EPC, BPMN, archimate и т.п. В идеале - через математический формализм (например, теорию множеств).

miscellaneous

mermaid

EPC