-
Notifications
You must be signed in to change notification settings - Fork 0
Transformer ‐ User
The following documentation outlines the basic transformation behavior and constraints. It details the supported elements and transformation rules.
You can find the Swagger documentation here. Please take note that Swagger only works if the XML does not contain any line breaks and all quotation marks are escaped with a backslash as shown in the examples. Furthermore, the error cases are not correctly displayed in Swagger. For a better experience please use the Bruno Collection which you can find here.
The sections below explain which BPMN elements are transformed into which Petri/workflow net elements.
While Petri nets have a mathematical foundation, BPMN diagrams have fewer semantic constraints compared to Petri nets. As a result, not all BPMN constructs can be easily converted to Petri nets and some may require specific constraints. The input BPMN must adhere to the following constraints to ensure a successful transformation:
- BPMN Standard 2.0
- Syntactically correct XML, e.g., only supported tags or matching opening/closing tag names
- All OR-gates that are opened should be closed. Depending on the complexity and amount of gates used, this may not always be necessary, but in certain cases, the transformation could fail or be incorrect.
- Subprocesses must have exactly one start and end flow
- Multiple input or output flows are only allowed for gateways
- Unsupported elements are not allowed
BPMN | Petrinet |
---|---|
There are no equivalent mappings for OR Gates. OR Gates will be replaced with a combination of AND and XOR Gates before the actual transformation, and these new elements will be transformed with the rules described above. Beware that the replacement uses a heuristic which could fail for overly complex diagrams. See an example under this table. | |
Event and following task combination |
|
Event and following task combination |
|
Example for Handling OR-Gateways
BPMN:
Transformed Petri net:
The transformation rules shown above include only a subset of all possible BPMN elements. Many BPMN elements cannot be transformed because there are no equivalent elements in the Petri/workflow net standard. This includes elements that are part of the control flow, such as ExtensionElements or BusinessRuleTasks. If such an element is encountered the transformation will fail.
There are also elements like TextAnnotations that are not part of the control flow. While these elements cannot be transformed, they can be ignored without affecting the basic function of the BPMN diagram.
Compared to the BPMN to Petrinet transformation, nearly all Petrinet and Workflow extension elements can be easily converted to BPMN elements. Because of this, the rules and constraints are simpler.
- Syntactically correct
- Semantically correct
- Subprocesses must have at least one connected path from start to end
Petrinet | BPMN |
---|---|
Zero incoming arcs |
|
Zero outgoing arcs |
|
Exactly one incoming and outgoing arc |
Will be removed if not part of a gateway. |
Silent transition |
Will be removed if not part of a gateway. |
More than one outgoing and/or incoming arc |
|
More than one outgoing and/or incoming arc |
|
Split with implicit task (named gateway). |
|
Join with implicit task (named gateway). |
|
Join/split with implicit task (named gateway). |
If the Petrinet contains WoPeD-specific workflow operators, they will be handled with the following logic:
Workflow Net | BPMN |
---|---|
Elements without roles in Unkown Participant lane. |
|
Trigger transition as task. |
|
Trigger transition as task. |
|
ID | Ausnahme | Beschreibung | Exceptionparameter |
---|---|---|---|
0 | UnexpectedError | Unerwarteter Fehler | ---- |
1 | NotSupportedBPMNElement | BPMN-Element wird nicht unterstützt | Name von Element |
2 | MissingEnvironmentVariable | Fehlende Umgebungsvariable | Name von Variable |
3 | TokenCheckUnsuccessful | Token-Überprüfung nicht erfolgreich | ---- |
4 | UnexpectedQueryParameter | Unerwarteter Abfrageparameter | Name von Query Parameter |
5 | UnnamedLane | Für jede Lane muss ein Name existieren | ---- |
6 | UnknownIntermediateCatchEvent | Unbekannten Intermediate-Event-Typ benutzt | ---- |
7 | WrongSubprocessDegree | Subprozesse müssen genau 1 Ein- und Ausgang besitzen | ---- |
8 | ORGatewayDetectionIssue | Fehler bei der SPLIT-JOIN Erkennung eines OR-Gateways | ---- |
9 | SubprocessWrongInnerSourceSinkDegree | Im Subprozess darf Quelle keinen eingehenden und Senke keinen ausgehenden Bogen besitzen | ---- |
10 | UnknownResourceOrganizationMapping | Die Ressourcen müssen zur selben Organisation gehören | ---- |
11 | InvalidInputXML | Ungültiger Eingabe-XML-Inhalt | ---- |
12 | PrivateInternalException | Interne Fehler, die nicht für Benutzer sichtbar sein sollen | ---- |
13 | InternalTransformationException | Interne Fehler während der Transformation | ---- |
14 | NoRequestTokensAvailable | Aktuell keine Token für ein Transformations-Request verfügbar | ---- |