{"repo":"rstanziale/ez-flow","free":true,"listed":false,"github":"https://github.com/rstanziale/ez-flow","clone":"git clone https://github.com/rstanziale/ez-flow.git","description":"Library for a workflow engine","language":"TypeScript","stars":16,"topics":["typescript","workflow"],"license":"MIT","category":"workflow-automation","readme_excerpt":"ez-flow It's a library implementing a simple workflow engine. This library was heavily inspired to j-easy/easy-flows in the Java world. Installation Usage A Workflow is a collection of Work Units must be run tu achieve a given purpose. Each Work unit implements a behaviour and interacts with outer environment and the other units by the means of a Context exchanged between them. You can place each unit in a flow applying some logic to control it. That is you can place unit in a sequential flow, in a conditional one, in a parallel one and so on. At the end of this \"chain\" we obtain the final result. In this library are actually available the following flow constructs: - Sequential Flow - Conditional Flow - Iterative Flow - Parallel Flow How to apply a flow? Suppose you have defined a work unit called PrintMessageWork that implements Work . It takes a message and its call method prints it: Now suppose to create the following workflow: - Print \"foo\" 3 times - Then print \"hello\" and \"world\" in parallel - Then if both \"hello\" and \"world\" have been successfully printed, finally print \"ok\", otherwise print \"nok\". This workflow can be illustrated as follows: - flow1 is a RepeatFlow of work1 which prints \"foo\" 3 times. - flow2 is a ParallelFlow of work2 and work3 which prints \"hello\" and \"world\" in parallel - flow3 is a ConditionalFlow . It first executes flow2 , then if flow2 is completed, it executes work4 (print \"ok\"), otherwise executes work5 (print \"nok\") - flow4 is a SequentialFl","default_branch":null,"files":null,"tree":[],"storefront":"/r/rstanziale","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/rstanziale/ez-flow/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}