"Join" control allowing to synchronize multiple workflow routes

Registered by Renat Akhmerov

We should be able to mark a task with a special property ("join"?) so that workflow execution stops at this task till active inbound routes have finished.

The syntax can be like:

my_join_task:
  join: <all> | [task1, task2, ...]

If we specify 'all' then 'my_join_task' won't be started till all inbound tasks are completed. Alternatively, if we provide a list of task then 'my_join_task' will be started once all the specified inbound tasks are completed, not necessarily all. In this case, behaviour is similar to http://www.workflowpatterns.com/patterns/control/new/wcp30.php

If we specify [task1, task2] out of more tasks with transtion to "join", we must only execute "join" once, when task1 and task2 satisfy, and ignore the rest of the tasks (so that the "join" task only executes once).

Blueprint information

Status:
Complete
Approver:
Renat Akhmerov
Priority:
High
Drafter:
Renat Akhmerov
Direction:
Approved
Assignee:
Renat Akhmerov
Definition:
Approved
Series goal:
Accepted for juno
Implementation:
Implemented
Milestone target:
milestone icon 2015.1
Started by
Renat Akhmerov
Completed by
Renat Akhmerov

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/mistral-direct-workflow-join-control,n,z

Addressed by: https://review.openstack.org/138644
    Working on "join": implement basic test for full join

Addressed by: https://review.openstack.org/138666
    Working on "join": add "join" property into task specification

Addressed by: https://review.openstack.org/138707
    Working on "join": first basic implementation of full join

Addressed by: https://review.openstack.org/138975
    Adding "std.noop" action (can be useful for testing)

Addressed by: https://review.openstack.org/138977
    Adding "std.fail" action that always throws ActionException

Addressed by: https://review.openstack.org/139027
    Working on "join": making "full join" work with incoming errors

Addressed by: https://review.openstack.org/139577
    Working on "join": making "full join" work with conditional transitions

Addressed by: https://review.openstack.org/139606
    Working on "join": added a test for numbered partial join

Addressed by: https://review.openstack.org/139618
    Working on "join": implementing partial join with numeric cardinality

Addressed by: https://review.openstack.org/139917
    Working on "join": fixing "partial join" test with new "noop" engine command

Addressed by: https://review.openstack.org/139922
    Working on "join": adding a test to verify that join triggers once

Addressed by: https://review.openstack.org/139926
    Working on "join": making "join" trigger only once

Addressed by: https://review.openstack.org/139930
    Working on "join": removing array type from "join" JSON schema

Addressed by: https://review.openstack.org/140251
    Working on "join": allowed value "one" for "join" property

Addressed by: https://review.openstack.org/140256
    Working on "join": making "one" join value work (discriminator)

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.