Repository navigation
Functional requirements
-
Create a Flexible DSL for BPMN Process Definitions
- As a developer, I want to design a flexible, human-readable Domain-Specific Language (DSL) that supports defining BPMN elements (e.g., events, tasks, gateways) so that users can easily describe their BPMN processes.
- Issue: #35
-
Enforce Rules for BPMN Connections in the DSL
- As a developer, I want to ensure that the DSL enforces correct rules for BPMN connections between tasks, events, and gateways to avoid invalid process definitions.
- Issue: #37
-
Support Flow, Conditions, and Optional Attributes in the DSL
- As a developer, I want the DSL to support defining flow sequences, conditions for decision points, and optional attributes like descriptions, timeouts, or error handlers.
- Issue: #38
-
Support Pools and Lanes in the DSL
- As a developer, I want the DSL to support Pools and Lanes so that users can define participants and categorize activities by roles or departments.
- Issue: #13
-
Support Data Objects and Data Stores in the DSL
- As a developer, I want the DSL to support the inclusion of Data Objects and Data Stores to represent the data used or produced during the process.
- Issue: #27
-
Define BPMN Process Using the Predefined DSL
- As a user, I want to define a BPMN process using a predefined human-readable DSL so that I can easily describe workflows with tasks, events, gateways, pools, lanes.
- Issue: #35
-
Validate DSL Input Files/Definitions
- As a user, I want the system to validate DSL input files to ensure they conform to the defined syntax and rules, so that BPMN processes can be correctly generated.
- Issue: #39
-
Provide Error Feedback for Invalid DSL Files
- As a user, I want the system to provide meaningful error feedback when the DSL files contain syntax or rule violations, helping me correct my definitions.
- Issue: #29
-
Parse the DSL into an Intermediate BPMN Representation
- As a system, I want to parse the input files written in the DSL and convert them into an intermediate BPMN semantic representation so that I can process them further.
- Issue: #2
-
Apply Transformation Rules During Parsing
- As a parser, I want to apply transformation rules to ensure each DSL element (StartEvent, Task, Gateway, etc.) is accurately converted into a structured, intermediate BPMN representation.
- Issue: #40
-
Handle Optional Attributes in the Parsing Process
- As a parser, I want to handle optional attributes in the input (such as descriptions or conditions) and appropriately convert them into BPMN elements.
- Issue: #41
-
Assign X-Y Coordinates to Nodes
- As a system, I want to assign precise X-Y coordinates to each BPMN node (task, event, gateway, etc.) to position them correctly in the diagram.
- Issue: #42
-
Back-Edge Elimination
- As a system, I want to perform back-edge elimination on the intermediate BPMN representation to ensure correct flow direction in the layout.
- Issue: #43
-
Layering BPMN Elements
- As a system, I want to organize BPMN elements (events, tasks, gateways) into distinct layers, ensuring that the layout is clear and visually comprehensible.
- Issue: #44
-
Crossing Minimization
- As a system, I want to minimize crossing lines between elements in the diagram to improve diagram readability.
- Issue: #45
-
Assign X-Y Coordinates to Edge-Bend Points
- As a system, I want to assign coordinates to edge-bend points to control the layout of connectors between elements in the diagram.
- Issue: #46
-
Store Layout Annotations
- As a system, I want to store the layout annotations (X-Y positions of elements and flows) after the layouting process, so that the generated diagrams remain consistent.
- Issue: #47
-
Validate Layout Annotations
- As a system, I want to validate the layout annotations to ensure the generated diagram follows the correct BPMN standards and is visually clear.
- Issue: #48
-
Generate BPMN XML from Intermediate Representation
- As a system, I want to convert the intermediate BPMN representation (with layout annotations) into a BPMN XML file so that users can access it in a standard format.
- Issue: #33
-
Export BPMN XML File to Visual Format (SVG or Another Format)
- As a user, I want to export the BPMN XML file to a visual format like SVG, so I can view the diagrams directly without relying on specialized tools.
- Issue: #50
-
Ensure BPMN XML Conforms to Standards
- As a system, I want to ensure that the BPMN XML generated from the intermediate representation conforms to the official BPMN standards, so it is interoperable with other tools.
- Issue: #49
-
Meaningful Error Messages and Feedback
- As a user, I want the system to provide meaningful error messages for incorrect inputs, such as invalid BPMN flows or incorrect event types.
- Issue: #29
-
Improve Error Handling in Parsing and Layouting
- As a system, I want to improve error handling in the parsing and layouting phases, providing clear feedback when there are issues with the BPMN process definition.
- Issue: #51
-
Add Support for Timer, Signal, and Error Events
- As a user, I want to add Timer Events (time-based triggers), Signal Events (broadcast and receive), and Error Events (exception handling) to my BPMN processes.
- Issue: #15
-
Handle Complex BPMN Flows (e.g., Subprocesses)
- As a user, I want the system to handle complex BPMN flows, including subprocesses, nested activities, and multi-instance tasks.
- Issue: #8