Mistral/Design

Basic Architecture

 * Engine - handle control and data flow of workflow executions. Computes which tasks are ready and places them in a queue. Passes the data from task to task, deals with condition transitions, etc. Passes Key concepts of Mistral Engine design explained here: https://wiki.openstack.org/wiki/Mistral/POC
 * Task Executors - execute task Actions. Pick up the tasks from the queue, run actions, and send results back to the engine.
 * API server - exposes REST API to operate and monitor workflow executions.
 * Scheduler - triggers workflows on events (e.g., periodic cron event)
 * Persistence - stores workflow definitions, current execution states, and past execution results.

Discussion
There is no final decision on the service design. It is actively discussed in mailing lists, IRC #openstack-mistral and etherpads:
 * https://etherpad.openstack.org/p/MistralDesignAndDependencies
 * https://etherpad.openstack.org/p/TaskFlowAndMistral
 * https://etherpad.openstack.org/p/MistralQuestionsBeforeImplementation
 * https://etherpad.openstack.org/p/MistralRoadmap
 * https://etherpad.openstack.org/p/TaskServiceDesign
 * https://etherpad.openstack.org/p/MistralAPISpecification
 * https://etherpad.openstack.org/p/MistralDSLSpecification