Automation of processes is one of the most important tasks in business software. NS applications have relied on the 'workflow' component for most of the functionality associated with this. While it has served us well for quite some time, there are several shortcomings which we wanted to address.
The processAutomation component is the natural successor of the workflow component. The biggest issue with the workflow component is that all work executions happens in so-called engines. These are essentially timers which fetch all dataElements in a specific status, and execute all work required in this status. This approach introduces quite some latency and doesn't scale well in performance. Another disadvantage is the runtime-configuration in the database, which is tedious to configure and can be difficult to maintain.
We aim to solve these issues with a queue-based design in which processes can be specifically scheduled and executed evenly over the available resources. Instead of using runtime-configuration, this component relies heavily on information present in the model, especially the workflow metamodel.