PrintMessageWork work1 = new PrintMessageWork("foo"); PrintMessageWork work2 = new PrintMessageWork("hello"); PrintMessageWork work3 = new PrintMessageWork("world"); PrintMessageWork work4 = new PrintMessageWork("ok"); PrintMessageWork work5 = new PrintMessageWork("nok"); ExecutorService executorService = Executors.newFixedThreadPool(2); WorkFlow workflow = aNewSequentialFlow() // flow 4 .execute(aNewRepeatFlow() // flow 1 .named("print foo 3 times") .repeat(work1) .times(3) .build()) .then(aNewConditionalFlow() // flow 3 .execute(aNewParallelFlow(executorService) // flow 2 .named("print 'hello' and 'world' in parallel") .execute(work2, work3) .build()) .when(WorkReportPredicate.COMPLETED) .then(work4) .otherwise(work5) .build()) .build(); WorkFlowEngine workFlowEngine = aNewWorkFlowEngine().build(); WorkContext workContext = new WorkContext(); WorkReport workReport = workFlowEngine.run(workflow, workContext); executorService.shutdown();
这不是一个非常有用的工作流程,但是只是为了给你一个简单的流程编写工作流。 你可以在中找到关于所有这一切的更多细节。
为什么容易流?
由于缺少一个可以编排 Callable Java对象的简单开源工作流引擎,因这里创建了简单流程。 为什么每个工作流引擎都在尝试实现 BPMN? BPMN没有什么问题,但是它并不容易( 538页规范是什么)? )。对于 BPEL插件来说,同样的东西。
目前有好的工作流引擎,但是由于它们试图实现 BPMN,它们并不容易使用,而且常常被误用。 大多数的BPMN概念对于许多应用都不是必需的,在重引擎之上构建这样的应用程序是不有效的。
简单流程尝试提供简单的自然api替代方法,以及大多数小型/中小型应用程序的基本流。 如果你的业务流程需要一个 for,那么简单的流程可以能不是你的选择。

