<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">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).<div><br></div><div><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">* 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. </div></blockquote></div><div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br></div></div><div>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.</div><div><br><div>
<div>Renat Akhmerov</div><div>@ Mirantis Inc.</div><div><br></div><br class="Apple-interchange-newline">

</div>
<br><div><div>On 20 Jun 2014, at 12:33, Dmitri Zimine <<a href="mailto:dzimine@stackstorm.com">dzimine@stackstorm.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><a href="https://review.openstack.org/#/c/100390/">https://review.openstack.org/#/c/100390/</a><div><br></div><div>Angus asked: </div><div></div><div>>Why do we even need "start: <start-task>"?</div><div>>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 </div><div>>follow upwards until you find a task that is not referenced by anything.</div><div><br></div><div>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. </div><div><br></div><div>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. </div><div><br></div><div>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. </div><div><br></div><div>How should we proceed? Options I can think of: </div><div><br></div><div>* Drop ‘reverse flow’ right now, stabilize ‘direct flow', reintroduce ‘reverse flow’ later (next cycle).</div><div>This will give us a clean final API on a good set of functionality, [almost] immediately. </div><div><br></div><div>* Introduce two workflow types and correspondent API changes/additions on the current code base, before refactoring. </div><div><br></div><div>* 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. </div><div><br></div><div>Other options? Opinions? Requests?</div><div><br></div><div>DZ>  </div><div><br></div><div><br></div><div>[1] Direct flow has dependencies expressed by on-success/on-error/on-finish keyword on an upstream task</div><div>[2] Reverse flow is where dependencies are expressed by requires keyword on a downstream, dependent task</div><div>[3] <a href="https://etherpad.openstack.org/p/mistral-post-POC-questions">https://etherpad.openstack.org/p/mistral-post-POC-questions</a></div><div><br></div></div>_______________________________________________<br>OpenStack-dev mailing list<br><a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev<br></blockquote></div><br></div></body></html>