spiff-arena/doc/bpmn/index.rst
Dan fec5934d38 Squashed 'SpiffWorkflow/' changes from 0e61be85c..11e4b4f96
11e4b4f96 fix two incorrectly names attributes in node parser
abec918a8 Merge pull request #291 from rachfop/fix-grammar
a597f9ce9 Fixes grammar, typos, and spellings
00ffaf067 Assure that when something goes wrong calling a service task that we get as much good information about the problem as possible.
c044b5646 Fix that dreadful unknown "KeyError" exception that was cropping up. Adding a bit of detail to the spiffworkflow exceptions when a duplicate process model is found. Disable the submit button on tasks after you click submit (avoid the double click and give users a better experience)

git-subtree-dir: SpiffWorkflow
git-subtree-split: 11e4b4f96f03a036bd29632f1560e347a4e69aae
2023-02-14 16:51:09 -05:00

79 lines
2.1 KiB
ReStructuredText

BPMN Workflows
==============
The basic idea of SpiffWorkflow is that you can use it to write an interpreter
in Python that creates business applications from BPMN models. In this section,
we'll develop a model of an example process and as well as a
simple workflow runner.
We expect that readers will fall into two general categories:
- People with a background in BPMN who might not be very familiar Python
- Python developers who might not know much about BPMN
This section of the documentation provides an example that (hopefully) serves
the needs of both groups. We will introduce the BPMN elements that SpiffWorkflow
supports and show how to build a simple workflow runner around them.
SpiffWorkflow does heavy-lifting such as keeping track of task dependencies and
states and providing the ability to serialize or deserialize a workflow that
has not been completed. The developer will write code for displaying workflow
state and presenting tasks to users of their application.
All the Python code and BPMN models used here are available in an example
project called `spiff-example-cli <https://github.com/sartography/spiff-example-cli>`_.
Quickstart
----------
Check out the code in `spiff-example-cli <https://github.com/sartography/spiff-example-cli>`_
and follow the instructions to set up an environment to run it in.
Run the sample workflow we built up using our example application with the following
command:
.. code-block:: console
./run.py -p order_product \
-d bpmn/{product_prices,shipping_costs}.dmn \
-b bpmn/{multiinstance,call_activity_multi}.bpmn
For a full description of program options:
.. code-block:: console
./run.py --help
The code in the workflow runner and the models in the bpmn directory of the
repository will be discussed in the remainder of this tutorial.
Supported BPMN Elements
-----------------------
.. toctree::
:maxdepth: 3
tasks
gateways
organization
events
multiinstance
spiff-extensions
Putting it All Together
-----------------------
.. toctree::
:maxdepth: 2
synthesis
Features in More Depth
----------------------
.. toctree::
:maxdepth: 2
advanced