Skip to content

Functional requirements

luckasw edited this page Dec 2, 2024 · 11 revisions

Development of the DSL

Must Haves

  1. 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
  2. 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

Should Haves

  1. 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
  2. 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
  3. 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

Defining and Validating BPMN Processes Using DSL

Must Haves

  1. 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
  2. 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

Should Haves

  1. 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

Parser

Must Haves

  1. 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

Should Haves

  1. 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
  2. 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

Layouting the BPMN Representation

Must Haves

  1. 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
  2. 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
  3. 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
  4. Crossing Minimization

    • As a system, I want to minimize crossing lines between elements in the diagram to improve diagram readability.
    • Issue: #45
  5. 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

Generating Layout Annotations

Should Haves

  1. 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
  2. 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

BPMN XML Generation and Exporting

Must Haves

  1. 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

Should Haves

  1. 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
  2. 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

Error Handling and Additional Attributes

Must Haves

  1. 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

Should Haves

  1. 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
  2. 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
  3. 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

Clone this wiki locally