Files
md_to_gost/md2gost/diagrams/BPMN.puml
T
Igor20264 b38661f588
Python application / build (push) Has been cancelled
Update 0.4.0
- Add\Rework UI
- Add Split Table and Listing
- Add Support Customazeble schems
2026-09-04 22:28:39 +03:00

1127 lines
27 KiB
Plaintext
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.
' md2gost BPMN 2.0 macros for PlantUML
' Notation: OMG BPMN 2.0.2 (formal/2013-12-09), Ch. 7 graphical elements,
' Ch. 10 Process (events, activities, gateways), Ch. 9 Collaboration (pools, message flow).
' PlantUML cannot attach boundary events to the activity border or draw a true
' double-circle; thickness + stereotypes approximate start / intermediate / end.
' Gateways use hexagon — in this renderer it reads as a BPMN diamond.
'
' Usage (scheme ```bpmn / ```uml-bpmn wraps @startuml + this include):
' Pool(company, "Компания") {
' Lane(op, "Оператор") {
' Start(s)
' UserTask(t, "Проверить")
' XOR(gw)
' End(e)
' Flow(s, t)
' Flow(t, gw)
' CondFlow(gw, e, "нет")
' }
' }
!ifndef BPMN_PUML
!define BPMN_PUML
hide stereotype
skinparam shadowing false
skinparam linetype polyline
skinparam nodesep 28
skinparam ranksep 42
skinparam defaultTextAlignment center
skinparam wrapWidth 140
skinparam ArrowColor #212121
skinparam Padding 2
' ---------------------------------------------------------------------------
' Sprites (event / task markers, BPMN 2.0 Table 7.27.4)
' ---------------------------------------------------------------------------
sprite $bpmnMsg [16x11/16] {
0000000000000000
0FFFFFFFFFFFFFF0
0F000000000000F0
0FF0000000000FF0
0F0FF000000FF0F0
0F000FFFFFF000F0
0F0000FFFF0000F0
0F000000000000F0
0F000000000000F0
0FFFFFFFFFFFFFF0
0000000000000000
}
sprite $bpmnMsgFill [16x11/16] {
0000000000000000
0FFFFFFFFFFFFFF0
0FFFFFFFFFFFFFF0
0FFFFFFFFFFFFFF0
0FFFFFFFFFFFFFF0
0FFF0FFFFFF0FFF0
0FF000FFFF000FF0
0F00000FF00000F0
0F000000000000F0
0FFFFFFFFFFFFFF0
0000000000000000
}
sprite $bpmnTimer [16x10/16] {
000000FFFF000000
0000FF0000FF0000
000F000FF000F000
00F0000FF0000F00
00F0000FF0000F00
00F0000FFFF00F00
00F0000000000F00
000F00000000F000
0000FF0000FF0000
000000FFFF000000
}
sprite $bpmnError [16x9/16] {
0000000FF0000000
000000FF00000000
00000FFFFF000000
0000FF0000000000
000FFFFF00000000
000000FF00000000
00000FF000000000
0000FF0000000000
000FF00000000000
}
sprite $bpmnSignal [16x8/16] {
00000000F0000000
0000000FFF000000
000000FF0FF00000
00000FF000FF0000
0000FF00000FF000
000FF0000000FF00
00FF000000000FF0
0FFFFFFFFFFFFFFF
}
sprite $bpmnSignalFill [16x8/16] {
00000000F0000000
0000000FFF000000
000000FFFFF00000
00000FFFFFFF0000
0000FFFFFFFFF000
000FFFFFFFFFFF00
00FFFFFFFFFFFFF0
0FFFFFFFFFFFFFFF
}
sprite $bpmnTerminate [16x9/16] {
00000FFFFFF00000
000FFFFFFFFFF000
00FFFFFFFFFFFF00
0FFFFFFFFFFFFFF0
0FFFFFFFFFFFFFF0
0FFFFFFFFFFFFFF0
00FFFFFFFFFFFF00
000FFFFFFFFFF000
00000FFFFFF00000
}
sprite $bpmnEscalation [16x9/16] {
00000000F0000000
0000000FFF000000
000000FF0FF00000
00000FF000FF0000
0000FFFFFFFFF000
000000F000F00000
000000F000F00000
000000F000F00000
000000FFFFF00000
}
sprite $bpmnComp [16x7/16] {
00F0000F00000000
0FF000FF00000000
FFF00FFF00000000
FFFF0FFFF0000000
FFF00FFF00000000
0FF000FF00000000
00F0000F00000000
}
sprite $bpmnLink [16x7/16] {
0000000000000000
00000000000F0000
00000000000FF000
0FFFFFFFFFFFFF00
00000000000FF000
00000000000F0000
0000000000000000
}
sprite $bpmnCond [16x10/16] {
0FFFFFFFFFF00000
0F00000000FF0000
0F00000000F0F000
0F00000000FFF000
0F00FFFF0000F000
0F0000000000F000
0F00FFFF0000F000
0F0000000000F000
0F00FFFF0000F000
0FFFFFFFFFFFF000
}
sprite $bpmnMulti [16x8/16] {
00000000F0000000
000000FF0FF00000
00000F00000F0000
0000F0000000F000
000F000000000F00
000F000000000F00
0000F0000000F000
00000FFFFFFF0000
}
sprite $bpmnParMulti [16x9/16] {
00000FFFFFF00000
000FF000000FF000
00F0000FF0000F00
0F00000FF00000F0
0F00FFFFFFFF00F0
0F00000FF00000F0
00F0000FF0000F00
000FF000000FF000
00000FFFFFF00000
}
sprite $bpmnCancel [16x11/16] {
0FF0000000000FF0
00FF00000000FF00
000FF000000FF000
0000FF0000FF0000
00000FF00FF00000
000000FFFF000000
00000FF00FF00000
0000FF0000FF0000
000FF000000FF000
00FF00000000FF00
0FF0000000000FF0
}
sprite $bpmnUser [16x10/16] {
000000FFFF000000
00000FFFFFF00000
00000FFFFFF00000
000000FFFF000000
0000000000000000
0000FFFFFFFF0000
000FF000000FF000
000FF000000FF000
000FF000000FF000
000FF000000FF000
}
sprite $bpmnService [16x9/16] {
000000FFFF000000
0000FFF00FFF0000
000FF0FFFF0FF000
00FF00FFFF00FF00
00F0000000000F00
00FF00FFFF00FF00
000FF0FFFF0FF000
0000FFF00FFF0000
000000FFFF000000
}
sprite $bpmnScript [16x9/16] {
0FFFFFFFFFF00000
0F00000000FF0000
0F00000000F0F000
0F00FFFF00FFF000
0F0000000000F000
0F00FFFF0000F000
0F0000000000F000
0F00FFFF0000F000
0FFFFFFFFFFFF000
}
sprite $bpmnManual [16x7/16] {
000000000FF00000
00000000FFFF0000
0000FF0FF0FF0000
000FFFFFFFFFF000
000FFFFFFFFFF000
0000FFFFFFFF0000
00000FFFFFF00000
}
sprite $bpmnRule [16x7/16] {
0FFFFFFFFFFFFFF0
0F000F000F0000F0
0FFFFFFFFFFFFFF0
0F000F000F0000F0
0FFFFFFFFFFFFFF0
0F000F000F0000F0
0FFFFFFFFFFFFFF0
}
sprite $bpmnPlusBox [12x9/16] {
FFFFFFFFFFFF
F0000000000F
F0000FF0000F
F0000FF0000F
F0FFFFFFFF0F
F0000FF0000F
F0000FF0000F
F0000000000F
FFFFFFFFFFFF
}
sprite $bpmnLoop [16x7/16] {
0000FFFFFF000000
000F000000F00000
00F000000000000F
0F00000000000FF0
0F000000000F0000
00F0000000F00000
000FFFFFF0000000
}
sprite $bpmnAdhoc [16x5/16] {
0000000000000000
0FF0000FFF000FF0
000FF0F000FF0000
00000F00000F0000
0000000000000000
}
sprite $bpmnMIPar [13x5/16] {
00F000F000F00
00F000F000F00
00F000F000F00
00F000F000F00
00F000F000F00
}
sprite $bpmnMISeq [13x7/16] {
0000000000000
0FFFFFFFFFFF0
0000000000000
0FFFFFFFFFFF0
0000000000000
0FFFFFFFFFFF0
0000000000000
}
' ---------------------------------------------------------------------------
' Skin (colours are conventional, not mandated by the spec)
' ---------------------------------------------------------------------------
skinparam circle<<bpmnStart>> {
BackgroundColor #C8E6C9
BorderColor #2E7D32
BorderThickness 1.5
FontSize 10
}
skinparam circle<<bpmnStartNI>> {
BackgroundColor #C8E6C9
BorderColor #2E7D32
BorderThickness 1.5
BorderStyle dashed
FontSize 10
}
skinparam circle<<bpmnInter>> {
BackgroundColor #FFF3E0
BorderColor #EF6C00
BorderThickness 2
FontSize 10
}
skinparam circle<<bpmnThrow>> {
BackgroundColor #FFE0B2
BorderColor #E65100
BorderThickness 2
FontSize 10
}
skinparam circle<<bpmnEnd>> {
BackgroundColor #FFCDD2
BorderColor #B71C1C
BorderThickness 3.5
FontSize 10
}
skinparam circle<<bpmnBoundary>> {
BackgroundColor #FFF3E0
BorderColor #EF6C00
BorderThickness 2
FontSize 9
}
skinparam circle<<bpmnBoundaryNI>> {
BackgroundColor #FFF3E0
BorderColor #EF6C00
BorderThickness 2
BorderStyle dashed
FontSize 9
}
skinparam hexagon<<bpmnGW>> {
BackgroundColor #FFF8E1
BorderColor #F9A825
BorderThickness 1.5
FontSize 12
}
skinparam rectangle<<bpmnTask>> {
RoundCorner 22
BackgroundColor #FFFFFF
BorderColor #1565C0
BorderThickness 1.4
FontSize 11
}
skinparam rectangle<<bpmnSubProcess>> {
RoundCorner 22
BackgroundColor #FAFAFA
BorderColor #1565C0
BorderThickness 1.4
FontSize 11
}
skinparam rectangle<<bpmnCall>> {
RoundCorner 22
BackgroundColor #FFFFFF
BorderColor #0D47A1
BorderThickness 3
FontSize 11
}
skinparam rectangle<<bpmnTransaction>> {
RoundCorner 22
BackgroundColor #FAFAFA
BorderColor #0D47A1
BorderThickness 2.5
FontSize 11
}
skinparam rectangle<<bpmnEventSub>> {
RoundCorner 22
BackgroundColor #FAFAFA
BorderColor #6A1B9A
BorderThickness 1.4
BorderStyle dashed
FontSize 11
}
skinparam rectangle<<bpmnPool>> {
RoundCorner 0
BackgroundColor #F5F5F5
BorderColor #212121
BorderThickness 1.6
FontSize 12
FontStyle bold
}
skinparam rectangle<<bpmnLane>> {
RoundCorner 0
BackgroundColor #FFFFFF
BorderColor #757575
BorderThickness 1
FontSize 11
}
skinparam rectangle<<bpmnBlackBox>> {
RoundCorner 0
BackgroundColor #EEEEEE
BorderColor #212121
BorderThickness 1.6
FontSize 12
FontStyle bold
}
skinparam rectangle<<bpmnGroup>> {
RoundCorner 8
BackgroundColor transparent
BorderColor #9E9E9E
BorderThickness 1.2
BorderStyle dashed
FontSize 10
}
skinparam file<<bpmnData>> {
BackgroundColor #E3F2FD
BorderColor #1565C0
FontSize 10
}
skinparam database<<bpmnStore>> {
BackgroundColor #E8F5E9
BorderColor #2E7D32
FontSize 10
}
skinparam note {
BackgroundColor #FFFDE7
BorderColor #F9A825
FontSize 10
}
' ---------------------------------------------------------------------------
' Internals
' ---------------------------------------------------------------------------
!unquoted procedure $bpmnCircle($alias, $stereo, $icon, $label)
!if ($icon == "")
!if ($label == "")
circle " " as $alias <<$stereo>>
!else
circle "$label" as $alias <<$stereo>>
!endif
!else
!if ($label == "")
circle "<$$icon>" as $alias <<$stereo>>
!else
circle "<$$icon>\n$label" as $alias <<$stereo>>
!endif
!endif
!endprocedure
!unquoted procedure $bpmnGW($alias, $mark, $label)
!if ($label == "")
hexagon "$mark" as $alias <<bpmnGW>>
!else
hexagon "$mark\n$label" as $alias <<bpmnGW>>
!endif
!endprocedure
!unquoted procedure $bpmnRect($alias, $stereo, $icon, $label, $marker="")
!if ($icon == "")
!if ($marker == "")
rectangle "$label" as $alias <<$stereo>>
!else
rectangle "$label\n\n<$$marker>" as $alias <<$stereo>>
!endif
!else
!if ($marker == "")
rectangle "<$$icon> $label" as $alias <<$stereo>>
!else
rectangle "<$$icon> $label\n\n<$$marker>" as $alias <<$stereo>>
!endif
!endif
!endprocedure
' ---------------------------------------------------------------------------
' Swimlanes — BPMN 2.0 §9.2 Pool / §9.3 Lane
' Pool(...) { ... } Lane(...) { ... }
' ---------------------------------------------------------------------------
!unquoted procedure Pool($alias, $label)
rectangle "$label" as $alias <<bpmnPool>>
!endprocedure
!unquoted procedure Lane($alias, $label)
rectangle "$label" as $alias <<bpmnLane>>
!endprocedure
!unquoted procedure BlackBoxPool($alias, $label)
rectangle "$label" as $alias <<bpmnBlackBox>>
!endprocedure
!unquoted procedure Participant($alias, $label)
BlackBoxPool($alias, $label)
!endprocedure
!unquoted procedure Group($alias, $label)
rectangle "$label" as $alias <<bpmnGroup>>
!endprocedure
' ---------------------------------------------------------------------------
' Start events — §10.5.2 (None, Message, Timer, Conditional, Signal, Error,
' Escalation, Multiple, Parallel Multiple). Error/Escalation only in event sub-process.
' ---------------------------------------------------------------------------
!unquoted procedure Start($alias, $label="")
$bpmnCircle($alias, "bpmnStart", "", $label)
!endprocedure
!unquoted procedure StartEvent($alias, $label="")
Start($alias, $label)
!endprocedure
!unquoted procedure StartMessage($alias, $label="")
$bpmnCircle($alias, "bpmnStart", "bpmnMsg", $label)
!endprocedure
!unquoted procedure StartTimer($alias, $label="")
$bpmnCircle($alias, "bpmnStart", "bpmnTimer", $label)
!endprocedure
!unquoted procedure StartCondition($alias, $label="")
$bpmnCircle($alias, "bpmnStart", "bpmnCond", $label)
!endprocedure
!unquoted procedure StartConditional($alias, $label="")
StartCondition($alias, $label)
!endprocedure
!unquoted procedure StartSignal($alias, $label="")
$bpmnCircle($alias, "bpmnStart", "bpmnSignal", $label)
!endprocedure
!unquoted procedure StartError($alias, $label="")
$bpmnCircle($alias, "bpmnStart", "bpmnError", $label)
!endprocedure
!unquoted procedure StartEscalation($alias, $label="")
$bpmnCircle($alias, "bpmnStart", "bpmnEscalation", $label)
!endprocedure
!unquoted procedure StartMultiple($alias, $label="")
$bpmnCircle($alias, "bpmnStart", "bpmnMulti", $label)
!endprocedure
!unquoted procedure StartParallelMultiple($alias, $label="")
$bpmnCircle($alias, "bpmnStart", "bpmnParMulti", $label)
!endprocedure
!unquoted procedure StartNI($alias, $label="")
$bpmnCircle($alias, "bpmnStartNI", "", $label)
!endprocedure
!unquoted procedure StartMessageNI($alias, $label="")
$bpmnCircle($alias, "bpmnStartNI", "bpmnMsg", $label)
!endprocedure
!unquoted procedure StartTimerNI($alias, $label="")
$bpmnCircle($alias, "bpmnStartNI", "bpmnTimer", $label)
!endprocedure
!unquoted procedure StartSignalNI($alias, $label="")
$bpmnCircle($alias, "bpmnStartNI", "bpmnSignal", $label)
!endprocedure
' ---------------------------------------------------------------------------
' Intermediate catching / throwing — §10.5.4
' ---------------------------------------------------------------------------
!unquoted procedure Intermediate($alias, $label="")
$bpmnCircle($alias, "bpmnInter", "", $label)
!endprocedure
!unquoted procedure CatchMessage($alias, $label="")
$bpmnCircle($alias, "bpmnInter", "bpmnMsg", $label)
!endprocedure
!unquoted procedure ThrowMessage($alias, $label="")
$bpmnCircle($alias, "bpmnThrow", "bpmnMsgFill", $label)
!endprocedure
!unquoted procedure CatchTimer($alias, $label="")
$bpmnCircle($alias, "bpmnInter", "bpmnTimer", $label)
!endprocedure
!unquoted procedure CatchSignal($alias, $label="")
$bpmnCircle($alias, "bpmnInter", "bpmnSignal", $label)
!endprocedure
!unquoted procedure ThrowSignal($alias, $label="")
$bpmnCircle($alias, "bpmnThrow", "bpmnSignalFill", $label)
!endprocedure
!unquoted procedure CatchError($alias, $label="")
$bpmnCircle($alias, "bpmnInter", "bpmnError", $label)
!endprocedure
!unquoted procedure CatchEscalation($alias, $label="")
$bpmnCircle($alias, "bpmnInter", "bpmnEscalation", $label)
!endprocedure
!unquoted procedure ThrowEscalation($alias, $label="")
$bpmnCircle($alias, "bpmnThrow", "bpmnEscalation", $label)
!endprocedure
!unquoted procedure CatchCondition($alias, $label="")
$bpmnCircle($alias, "bpmnInter", "bpmnCond", $label)
!endprocedure
!unquoted procedure CatchLink($alias, $label="")
$bpmnCircle($alias, "bpmnInter", "bpmnLink", $label)
!endprocedure
!unquoted procedure ThrowLink($alias, $label="")
$bpmnCircle($alias, "bpmnThrow", "bpmnLink", $label)
!endprocedure
!unquoted procedure CatchCompensation($alias, $label="")
$bpmnCircle($alias, "bpmnInter", "bpmnComp", $label)
!endprocedure
!unquoted procedure ThrowCompensation($alias, $label="")
$bpmnCircle($alias, "bpmnThrow", "bpmnComp", $label)
!endprocedure
!unquoted procedure CatchCancel($alias, $label="")
$bpmnCircle($alias, "bpmnInter", "bpmnCancel", $label)
!endprocedure
!unquoted procedure CatchMultiple($alias, $label="")
$bpmnCircle($alias, "bpmnInter", "bpmnMulti", $label)
!endprocedure
!unquoted procedure ThrowMultiple($alias, $label="")
$bpmnCircle($alias, "bpmnThrow", "bpmnMulti", $label)
!endprocedure
!unquoted procedure CatchParallelMultiple($alias, $label="")
$bpmnCircle($alias, "bpmnInter", "bpmnParMulti", $label)
!endprocedure
' ---------------------------------------------------------------------------
' Boundary events — interrupting (solid) / non-interrupting (dashed). Attach()
' ---------------------------------------------------------------------------
!unquoted procedure BoundaryMessage($alias, $label="")
$bpmnCircle($alias, "bpmnBoundary", "bpmnMsg", $label)
!endprocedure
!unquoted procedure BoundaryTimer($alias, $label="")
$bpmnCircle($alias, "bpmnBoundary", "bpmnTimer", $label)
!endprocedure
!unquoted procedure BoundaryError($alias, $label="")
$bpmnCircle($alias, "bpmnBoundary", "bpmnError", $label)
!endprocedure
!unquoted procedure BoundaryEscalation($alias, $label="")
$bpmnCircle($alias, "bpmnBoundary", "bpmnEscalation", $label)
!endprocedure
!unquoted procedure BoundarySignal($alias, $label="")
$bpmnCircle($alias, "bpmnBoundary", "bpmnSignal", $label)
!endprocedure
!unquoted procedure BoundaryCancel($alias, $label="")
$bpmnCircle($alias, "bpmnBoundary", "bpmnCancel", $label)
!endprocedure
!unquoted procedure BoundaryCompensation($alias, $label="")
$bpmnCircle($alias, "bpmnBoundary", "bpmnComp", $label)
!endprocedure
!unquoted procedure BoundaryCondition($alias, $label="")
$bpmnCircle($alias, "bpmnBoundary", "bpmnCond", $label)
!endprocedure
!unquoted procedure BoundaryMessageNI($alias, $label="")
$bpmnCircle($alias, "bpmnBoundaryNI", "bpmnMsg", $label)
!endprocedure
!unquoted procedure BoundaryTimerNI($alias, $label="")
$bpmnCircle($alias, "bpmnBoundaryNI", "bpmnTimer", $label)
!endprocedure
!unquoted procedure BoundaryEscalationNI($alias, $label="")
$bpmnCircle($alias, "bpmnBoundaryNI", "bpmnEscalation", $label)
!endprocedure
!unquoted procedure BoundarySignalNI($alias, $label="")
$bpmnCircle($alias, "bpmnBoundaryNI", "bpmnSignal", $label)
!endprocedure
!unquoted procedure BoundaryConditionNI($alias, $label="")
$bpmnCircle($alias, "bpmnBoundaryNI", "bpmnCond", $label)
!endprocedure
!unquoted procedure Attach($activity, $event)
$activity -[hidden]down- $event
!endprocedure
!unquoted procedure Attach_R($activity, $event)
$activity -[hidden]right- $event
!endprocedure
' ---------------------------------------------------------------------------
' End events — §10.5.3 (None, Message, Error, Escalation, Cancel, Compensation,
' Signal, Multiple, Terminate)
' ---------------------------------------------------------------------------
!unquoted procedure End($alias, $label="")
$bpmnCircle($alias, "bpmnEnd", "", $label)
!endprocedure
!unquoted procedure EndEvent($alias, $label="")
End($alias, $label)
!endprocedure
!unquoted procedure EndMessage($alias, $label="")
$bpmnCircle($alias, "bpmnEnd", "bpmnMsgFill", $label)
!endprocedure
!unquoted procedure EndError($alias, $label="")
$bpmnCircle($alias, "bpmnEnd", "bpmnError", $label)
!endprocedure
!unquoted procedure EndEscalation($alias, $label="")
$bpmnCircle($alias, "bpmnEnd", "bpmnEscalation", $label)
!endprocedure
!unquoted procedure EndCancel($alias, $label="")
$bpmnCircle($alias, "bpmnEnd", "bpmnCancel", $label)
!endprocedure
!unquoted procedure EndCompensation($alias, $label="")
$bpmnCircle($alias, "bpmnEnd", "bpmnComp", $label)
!endprocedure
!unquoted procedure EndSignal($alias, $label="")
$bpmnCircle($alias, "bpmnEnd", "bpmnSignalFill", $label)
!endprocedure
!unquoted procedure EndMultiple($alias, $label="")
$bpmnCircle($alias, "bpmnEnd", "bpmnMulti", $label)
!endprocedure
!unquoted procedure EndTerminate($alias, $label="")
$bpmnCircle($alias, "bpmnEnd", "bpmnTerminate", $label)
!endprocedure
!unquoted procedure Terminate($alias, $label="")
EndTerminate($alias, $label)
!endprocedure
' ---------------------------------------------------------------------------
' Activities — §10.3 Task types + markers (loop, MI, compensation, ad-hoc)
' ---------------------------------------------------------------------------
!unquoted procedure Task($alias, $label, $type="none", $marker="")
!if ($type == "user")
$bpmnRect($alias, "bpmnTask", "bpmnUser", $label, $marker)
!elseif ($type == "service")
$bpmnRect($alias, "bpmnTask", "bpmnService", $label, $marker)
!elseif ($type == "script")
$bpmnRect($alias, "bpmnTask", "bpmnScript", $label, $marker)
!elseif ($type == "manual")
$bpmnRect($alias, "bpmnTask", "bpmnManual", $label, $marker)
!elseif ($type == "send")
$bpmnRect($alias, "bpmnTask", "bpmnMsgFill", $label, $marker)
!elseif ($type == "receive")
$bpmnRect($alias, "bpmnTask", "bpmnMsg", $label, $marker)
!elseif ($type == "rule")
$bpmnRect($alias, "bpmnTask", "bpmnRule", $label, $marker)
!elseif ($type == "businessrule")
$bpmnRect($alias, "bpmnTask", "bpmnRule", $label, $marker)
!else
$bpmnRect($alias, "bpmnTask", "", $label, $marker)
!endif
!endprocedure
!unquoted procedure UserTask($alias, $label, $marker="")
Task($alias, $label, "user", $marker)
!endprocedure
!unquoted procedure ServiceTask($alias, $label, $marker="")
Task($alias, $label, "service", $marker)
!endprocedure
!unquoted procedure ScriptTask($alias, $label, $marker="")
Task($alias, $label, "script", $marker)
!endprocedure
!unquoted procedure ManualTask($alias, $label, $marker="")
Task($alias, $label, "manual", $marker)
!endprocedure
!unquoted procedure SendTask($alias, $label, $marker="")
Task($alias, $label, "send", $marker)
!endprocedure
!unquoted procedure ReceiveTask($alias, $label, $marker="")
Task($alias, $label, "receive", $marker)
!endprocedure
!unquoted procedure BusinessRuleTask($alias, $label, $marker="")
Task($alias, $label, "rule", $marker)
!endprocedure
!unquoted procedure LoopTask($alias, $label)
Task($alias, $label, "none", "bpmnLoop")
!endprocedure
!unquoted procedure SubProcess($alias, $label)
$bpmnRect($alias, "bpmnSubProcess", "", $label, "bpmnPlusBox")
!endprocedure
!unquoted procedure SubProcessExpanded($alias, $label)
rectangle "$label" as $alias <<bpmnSubProcess>>
!endprocedure
!unquoted procedure CallActivity($alias, $label)
$bpmnRect($alias, "bpmnCall", "", $label, "bpmnPlusBox")
!endprocedure
!unquoted procedure Transaction($alias, $label)
$bpmnRect($alias, "bpmnTransaction", "", $label, "bpmnPlusBox")
!endprocedure
!unquoted procedure EventSubProcess($alias, $label)
rectangle "$label" as $alias <<bpmnEventSub>>
!endprocedure
!unquoted procedure AdHocSubProcess($alias, $label)
$bpmnRect($alias, "bpmnSubProcess", "", $label, "bpmnAdhoc")
!endprocedure
' ---------------------------------------------------------------------------
' Gateways — §10.6 (Exclusive, Parallel, Inclusive, Complex, Event-Based)
' ---------------------------------------------------------------------------
!unquoted procedure Exclusive($alias, $label="")
$bpmnGW($alias, "×", $label)
!endprocedure
!unquoted procedure XOR($alias, $label="")
Exclusive($alias, $label)
!endprocedure
!unquoted procedure Xor($alias, $label="")
Exclusive($alias, $label)
!endprocedure
!unquoted procedure Gateway($alias, $label="")
Exclusive($alias, $label)
!endprocedure
!unquoted procedure Parallel($alias, $label="")
$bpmnGW($alias, "+", $label)
!endprocedure
!unquoted procedure AND($alias, $label="")
Parallel($alias, $label)
!endprocedure
!unquoted procedure And($alias, $label="")
Parallel($alias, $label)
!endprocedure
!unquoted procedure Inclusive($alias, $label="")
$bpmnGW($alias, "○", $label)
!endprocedure
!unquoted procedure OR($alias, $label="")
Inclusive($alias, $label)
!endprocedure
!unquoted procedure Or($alias, $label="")
Inclusive($alias, $label)
!endprocedure
!unquoted procedure ComplexGW($alias, $label="")
$bpmnGW($alias, "*", $label)
!endprocedure
!unquoted procedure Complex($alias, $label="")
ComplexGW($alias, $label)
!endprocedure
!unquoted procedure EventBased($alias, $label="")
$bpmnGW($alias, "◇", $label)
!endprocedure
!unquoted procedure EventBasedGateway($alias, $label="")
EventBased($alias, $label)
!endprocedure
!unquoted procedure ExclusiveEventBased($alias, $label="")
$bpmnGW($alias, "◇", $label)
!endprocedure
!unquoted procedure ParallelEventBased($alias, $label="")
$bpmnGW($alias, "⊕", $label)
!endprocedure
' ---------------------------------------------------------------------------
' Connecting objects — §8.4.13 Sequence Flow, Message Flow, Association
' Default = slash; conditional = mini-diamond (label prefixes as stand-in)
' ---------------------------------------------------------------------------
!unquoted procedure Flow($from, $to, $label="")
!if ($label == "")
$from --> $to
!else
$from --> $to : $label
!endif
!endprocedure
!unquoted procedure Flow_R($from, $to, $label="")
!if ($label == "")
$from -right-> $to
!else
$from -right-> $to : $label
!endif
!endprocedure
!unquoted procedure Flow_L($from, $to, $label="")
!if ($label == "")
$from -left-> $to
!else
$from -left-> $to : $label
!endif
!endprocedure
!unquoted procedure Flow_D($from, $to, $label="")
!if ($label == "")
$from -down-> $to
!else
$from -down-> $to : $label
!endif
!endprocedure
!unquoted procedure Flow_U($from, $to, $label="")
!if ($label == "")
$from -up-> $to
!else
$from -up-> $to : $label
!endif
!endprocedure
!unquoted procedure SequenceFlow($from, $to, $label="")
Flow($from, $to, $label)
!endprocedure
!unquoted procedure CondFlow($from, $to, $cond)
$from --> $to : ◇ $cond
!endprocedure
!unquoted procedure DefaultFlow($from, $to, $label="")
!if ($label == "")
$from --> $to :
!else
$from --> $to : $label
!endif
!endprocedure
!unquoted procedure MessageFlow($from, $to, $label="")
!if ($label == "")
$from ..> $to
!else
$from ..> $to : $label
!endif
!endprocedure
!unquoted procedure MessageFlow_R($from, $to, $label="")
!if ($label == "")
$from -[dashed]right-> $to
!else
$from -[dashed]right-> $to : $label
!endif
!endprocedure
!unquoted procedure Assoc($from, $to, $label="")
!if ($label == "")
$from .. $to
!else
$from .. $to : $label
!endif
!endprocedure
!unquoted procedure Association($from, $to, $label="")
Assoc($from, $to, $label)
!endprocedure
!unquoted procedure DataAssoc($from, $to, $label="")
!if ($label == "")
$from ..> $to
!else
$from ..> $to : $label
!endif
!endprocedure
' ---------------------------------------------------------------------------
' Data / artifacts — §7.1.1.7 Data, Group, Text Annotation
' ---------------------------------------------------------------------------
!unquoted procedure DataObject($alias, $label)
file "$label" as $alias <<bpmnData>>
!endprocedure
!unquoted procedure DataInput($alias, $label)
file "▷ $label" as $alias <<bpmnData>>
!endprocedure
!unquoted procedure DataOutput($alias, $label)
file "$label ▷" as $alias <<bpmnData>>
!endprocedure
!unquoted procedure Collection($alias, $label)
file "$label\n<$bpmnMIPar>" as $alias <<bpmnData>>
!endprocedure
!unquoted procedure DataStore($alias, $label)
database "$label" as $alias <<bpmnStore>>
!endprocedure
!unquoted procedure Annotation($alias, $text)
note "$text" as $alias
!endprocedure
!unquoted procedure TextAnnotation($alias, $text)
Annotation($alias, $text)
!endprocedure
' ---------------------------------------------------------------------------
' Layout helpers
' ---------------------------------------------------------------------------
!unquoted procedure Lay_R($from, $to)
$from -[hidden]right-> $to
!endprocedure
!unquoted procedure Lay_L($from, $to)
$from -[hidden]left-> $to
!endprocedure
!unquoted procedure Lay_D($from, $to)
$from -[hidden]down-> $to
!endprocedure
!unquoted procedure Lay_U($from, $to)
$from -[hidden]up-> $to
!endprocedure
!procedure BPMN_HORIZONTAL()
left to right direction
!endprocedure
!procedure BPMN_VERTICAL()
top to bottom direction
!endprocedure
!procedure BPMN_ORTHO()
skinparam linetype ortho
!endprocedure
!procedure BPMN_POLYLINE()
skinparam linetype polyline
!endprocedure
!procedure BPMN_LEGEND()
legend right
<b>BPMN 2.0</b>
|= Элемент |= Смысл |
| тонкий круг | Start Event |
| двойная толщина | Intermediate |
| жирный круг | End Event |
| ● внутри конца | Terminate |
| скруглённый прямоугольник | Activity / Task |
| ромб × | Exclusive (XOR) |
| ромб + | Parallel (AND) |
| ромб ○ | Inclusive (OR) |
| ромб ◇ | Event-Based |
| сплошная стрелка | Sequence Flow |
| пунктир | Message Flow |
| | Default Flow |
| ◇ на стрелке | Conditional Flow |
endlegend
!endprocedure
!endif