graph LR
BPMN_Parser_Core["BPMN Parser Core"]
BPMN_Specification_Library["BPMN Specification Library"]
DMN_Parser["DMN Parser"]
DMN_Model_Engine["DMN Model & Engine"]
Validation_Exception_Handling["Validation & Exception Handling"]
BPMN_Parser_Core -- "Creates" --> BPMN_Specification_Library
BPMN_Parser_Core -- "Raises" --> Validation_Exception_Handling
DMN_Parser -- "Creates" --> DMN_Model_Engine
DMN_Parser -- "Raises" --> Validation_Exception_Handling
DMN_Model_Engine -- "Raises" --> Validation_Exception_Handling
BPMN_Specification_Library -- "Integrates with" --> DMN_Model_Engine
The Modeling & Parsing subsystem is crucial for transforming abstract BPMN and DMN definitions into concrete, executable specifications for the workflow engine. It acts as the bridge between the human-readable models and the machine-executable processes.
This is the primary entry point for ingesting BPMN XML files or strings. It orchestrates the parsing of various BPMN elements (processes, tasks, events, gateways) by delegating to specialized sub-parsers. It's responsible for the initial transformation of the raw XML into a structured, internal representation.
Related Classes/Methods:
SpiffWorkflow.bpmn.parser.BpmnParser(111:382)SpiffWorkflow.bpmn.parser.ProcessParser(27:155)SpiffWorkflow.bpmn.parser.node_parser(1:1)
A comprehensive collection of classes that define the internal, executable representations of all BPMN elements, including processes, tasks (User, Script, Service, Multi-Instance), gateways (Exclusive, Parallel, Inclusive), events (Message, Timer, Error, Signal), and data objects. These specifications encapsulate the behavior and attributes of each BPMN element, forming the blueprint for workflow execution.
Related Classes/Methods:
SpiffWorkflow.bpmn.specs.bpmn_process_spec(1:1)SpiffWorkflow.bpmn.specs.bpmn_task_spec(1:1)SpiffWorkflow.bpmn.specs.control(1:1)SpiffWorkflow.bpmn.specs.mixins(1:1)SpiffWorkflow.bpmn.specs.defaults(1:1)SpiffWorkflow.bpmn.specs.event_definitions(1:1)SpiffWorkflow.bpmn.specs.data_spec(1:1)
Responsible for parsing DMN XML files. It extracts decision tables, input/output definitions, and rules, converting them into an internal DMN model. This parser can also be integrated with BPMN parsing, particularly for Business Rule Tasks that reference DMN decisions.
Related Classes/Methods:
This component encompasses the internal, structured representation of a DMN model (including parsed decision tables, their inputs, outputs, and defined rules) and the core logic for evaluating these decision tables. It takes input data, applies the DMN rules, and produces a decision result that can then be used to guide the workflow's progression.
Related Classes/Methods:
SpiffWorkflow.dmn.specs.model.Decision(40:45)SpiffWorkflow.dmn.engine.DMNEngine(30:150)SpiffWorkflow.dmn.specs.business_rule_task_mixin(1:1)
A set of custom exception classes used throughout the parsing and execution phases. These exceptions are critical for signaling and reporting issues such as invalid BPMN/DMN model structures (validation errors) or failures during the execution of workflow tasks, ensuring robust error handling and clear feedback.
Related Classes/Methods: