Contribute Media
A thank you to everyone who makes this possible: Read More

Declarative Business Process Management and Async Generators


BPM engines typically execute BPMN diagrams produced by a process engineer using a GUI. WorkScheme instead defines and interprets a functional domain-specific language based on a subset of Scheme. It also provides BPMN output via compilation to graphviz's dot and inclusion within Sphinx documentation of the process.

Defining features of BPM are supported: concurrency of independent tasks (using asyncio); and persistence of state (pickling a stackless interpreter). Business tasks are provided by imported Python modules.

A novel use for async generators is found as elegantly allowing for complex interaction between process and task. An example is two-phase commit for user interaction, improving robustness versus existing solutions.


Improve this page