Workflows are XML DSL scripts that describe the steps that conductor need to perform in order to deploy specified environment. All workflow constructs are just ordinary DSL functions similar to those described above.
Usually workflows extract some data from input environment definition (Object Model) and then invoke one of the actions with these data as a input arguments.
Actions are:
Heat commands that update or delete Heat Stack: <update-cf-stack>, <delete-cf-stack>
Send command to Murano Agent: <send-command>
Report state to API: <report>
Workflow logic can be described in 6 steps:
Choose a node (set of nodes) to update. If none of the nodes can be updated we are done.
According to the current state of node (that is a part of input Object Model) choose appropriate command to execute (update Heat stack or issue PowerShell command)
Select appropriate information from Object Model and substitute it into chosen template
Execute command
Update Object Model according to command execution result
Go to step 1