Just a clarification: “reverse” flow is what I usually call “dependency based 
flow” when we specify dependencies between tasks rather then direct transitions 
(do this then on success do that).

> * Put it off till the engine refactoring, factor the requirement of 
> supporting two modes into the refactoring. It will be easy to do, but takes 
> the longest. 


I personally would prefer this latest option since I don’t see any rush with 
refactoring the current API/impl to have two separate workflow types right now.

Renat Akhmerov
@ Mirantis Inc.



On 20 Jun 2014, at 12:33, Dmitri Zimine <dzim...@stackstorm.com> wrote:

> https://review.openstack.org/#/c/100390/
> 
> Angus asked: 
> >Why do we even need "start: <start-task>"?
> >Can't we parse the workbook and figure out what to run? Tasks at the bottom 
> >of the tree have no "on-{fail,success}" and then 
> >follow upwards until you find a task that is not referenced by anything.
> 
> Yes we can do this (patch almost ready). And It makes a perfect behavior for 
> a direct flow [1]: all the top-level tasks begin to execute in parallel, and 
> dependent tasks scheduled as dependencies resolve. No need to specify . 
> Parallel execution is a default, unless explicitly constrained by 
> on-success/on-error/on-finish. 
> 
> But for Reversed flow [2] it’s a BIG change of behavior. Instead of running 
> only a subflow to satisfy a target task, it will run all the tasks 
> (respecting dependencies). This is not practical. 
> 
> Eventually we want to support both direct and reverse as two types of 
> workflow, without mixing the two syntaxes within the same workflow. This will 
> require big refactoring (already planned). On the Atlanta summit we agreed to 
> temporarily drop reversed workflow and re-introduce it later. [3] The start 
> task in the API is a big pain for a direct flow. 
> 
> How should we proceed? Options I can think of: 
> 
> * Drop ‘reverse flow’ right now, stabilize ‘direct flow', reintroduce 
> ‘reverse flow’ later (next cycle).
> This will give us a clean final API on a good set of functionality, [almost] 
> immediately. 
> 
> * Introduce two workflow types and correspondent API changes/additions on the 
> current code base, before refactoring. 
> 
> * Put it off till the engine refactoring, factor the requirement of 
> supporting two modes into the refactoring. It will be easy to do, but takes 
> the longest. 
> 
> Other options? Opinions? Requests?
> 
> DZ>  
> 
> 
> [1] Direct flow has dependencies expressed by on-success/on-error/on-finish 
> keyword on an upstream task
> [2] Reverse flow is where dependencies are expressed by requires keyword on a 
> downstream, dependent task
> [3] https://etherpad.openstack.org/p/mistral-post-POC-questions
> 
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to