Ex4pmEngine.POWL (ex4pm v26.9.9)

Copy Markdown View Source

POWL 2.0 (Partially Ordered Workflow Language) Engine. Exact Mathematical Realization of:

  • [BPM25] Kourani, Park, van der Aalst (2025). Unlocking Non-Block-Structured Decisions: Inductive Mining with Choice Graphs. BPM 2025, LNCS 16044, pp. 144–161.
  • [PETRI25] Kourani, Park, van der Aalst (2025). Hierarchical Decomposition of Separable Workflow-Nets. PETRI NETS 2025, LNCS 15714, pp. 242–264.

Represents process models as hierarchical, sound-by-construction operator trees:

  • Activity: Leaf node executing a labeled transition $t \in T$ with $l(t) \in \Sigma$.
  • Silent: Silent transition $t$ with $l(t) = \tau$ (skip).
  • Sequence: Strict linear composition $\times(T_1, T_2, \dots, T_n)$.
  • Choice: Exclusive branching $\oplus(T_1, T_2, \dots, T_n)$ or ChoiceGraph $G = (N, E)$.
  • ChoiceGraph: POWL 2.0 directed choice graph $G = (N, E)$ with artificial delimiters $▷, □$.
  • Loop: Iterative repeat $\circlearrowleft(body, redo)$ / $\looparrowright$.
  • PartialOrder: Concurrency constrained by explicit poset edges $(nodes, order\_edges)$ with order-preserving shuffle $\prec\hspace{-0.6em}\odot$.

Every valid POWL 2.0 tree is mathematically guaranteed to be 1-safe sound without reachability anomalies.

Summary

Functions

Constructs a leaf activity node.

Constructs an exclusive choice composition of child nodes.

Constructs a POWL 2.0 Choice Graph node $G = (N, E)$ with delimiters $▷, □$

Constructs a loop composition with body and redo branches.

Constructs a POWL model from a map of nodes and a designated root node id.

Constructs a partially ordered workflow node with explicit precedence edges.

Constructs a sequential composition of child nodes.

Constructs a silent tau transition node.

Translates a POWL tree into a mathematically sound Workflow Net (Petri Net). Returns %{places: [...], transitions: %{...}, initial_marking: [...], final_marking: [...]} or {:ok, %WorkflowNet{}}.

Functions

activity(id, label)

Constructs a leaf activity node.

choice(id, children)

Constructs an exclusive choice composition of child nodes.

choice_graph(id, nodes, edges)

Constructs a POWL 2.0 Choice Graph node $G = (N, E)$ with delimiters $▷, □$:

  • Definition 1 [BPM25, p. 7]
  • Definition 3.6 [PETRI25, p. 8]

compile_to_net_map(root)

loop(id, body_node, redo_node)

Constructs a loop composition with body and redo branches.

new(nodes, opts \\ [])

Constructs a POWL model from a map of nodes and a designated root node id.

partial_order(id, nodes, order_edges)

Constructs a partially ordered workflow node with explicit precedence edges.

sequence(id, children)

Constructs a sequential composition of child nodes.

silent(id \\ nil)

Constructs a silent tau transition node.

to_workflow_net(root)

Translates a POWL tree into a mathematically sound Workflow Net (Petri Net). Returns %{places: [...], transitions: %{...}, initial_marking: [...], final_marking: [...]} or {:ok, %WorkflowNet{}}.