Java "workflow"设计

标签 java workflow

<分区>

我想问一下“工作流合并”的设计。我有几个彼此不太相似的工作流程。然而,有时我想把它们结合起来,稍微修改一下。 让我举个例子:

Workflow 1 - Trip

A1 (pack the bag) -> A2 (leave the house) -> A3 (catch the bus) -> A4 ...

Workflow 2 - Daily plant watering

B1 (turn the water on) -> B2 (leave the house) -> B3 (water the plants) -> B4 (enter the house) -> B5 (turn the water off)

星期天,我想去旅行,我也需要给植物浇水。所以我想创建类似 A1 -> B1 to B5 -> A2... 的东西。我还想有可能告诉我的 friend 完成浇水,这就像 A1 -> B1 到 B2 -> C1(将任务传递给 friend ) -> A3 ... 如您所见,流程很简单 - 没有 fork 和连接,我不需要这样的功能。我所需要的只是创建一个线性命令列表,并可以轻松地将它们合并在一起。目前所有代码片段都是 Java 方法(我想让它们类似于原子流)。

我的方法的主要目标应该是避免一遍又一遍地输入相同的代码。该流程可能有数百个步骤。我想声明类似执行流程 A,但不是运行 A2 和 A3,而是执行 B2 到 B6 并继续 A

我有两个主要问题:

  • 是否有任何框架已经支持它?如果有,它对我的​​目的来说是不是太复杂了?
  • 如果没有,实现此类事情的最佳方式是什么?

注意:您能否具体说明我的问题有什么不清楚的地方?

最佳答案

我个人觉得不需要使用任何特定的框架就可以实现需求。您可以按如下方式设计应用程序:

  1. TaskPerformer:具有名为 performTask 的方法的接口(interface)。表示要执行的任务。

  2. BagPackTask:实现 TaskPerformer 的具体类。还定义了包含打包代码的 performTask 方法。

  3. WaterPlantsTask:另一个实现 TaskPerformer 的具体类。还定义了包含浇花代码的 performTask 方法。 同样,每个任务都有一个类,它实现 Taskperformer 并使用 performTask 方法定义任务的行为。

  4. 工作流:将用于执行两个或多个任务的类,并允许您混合和匹配现有任务。该类将包含一个 TaskPerformer 列表,并且该类的构造函数将有一个 List 参数来请求执行任务。该类将包含一个 executeWorkflow 方法,该方法将遍历 List 并调用列表中每个元素的 performTask 方法。换句话说,此类可用于执行在实例化期间通过其 executeWorkflow 方法传递给其构造函数的所有任务。请务必注意,您在列表中插入元素的顺序就是任务执行的顺序。

使用这种方法,您无需使用任何 if-else 条件来确定要执行的任务。您可以根据需要在多少个 Workflow 实例中重用您的 TaskPerformer 实现。你会得到一个 super 干净的设计。如果您需要任何说明,请告诉我,因为我认为这种设计应该可以解决您的问题。在接受任何答案之前澄清你所有的疑问是个好主意:)

关于Java "workflow"设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12839701/

相关文章:

javascript - 需要在 NetSuite 工作流程期间提示用户输入文本

java - Gradle 无法检测到 osdetector 插件

java.lang.NumberFormatException : Invalid long: ""

java - 具有更多控制的本地化日期/时间

sharepoint - 如何更改共享点工作流任务状态?

workflow - 请确认 : Is Windows Workflow Foundation a good horse to be backing right now?

java - 如何将大表放入内存中?

java - 如何对 Spring bean 隐藏方法?

workflow - 如何使用 GitHub 操作跳过矩阵配置?

workflow - 工作流程中的 Dynamics CRM 当前日期占位符