Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

2年前关闭。



Improve this question




我想问一下设计“工作流合并”的问题。我有几个工作流程彼此不太相似。但是,有时我想将它们结合起来,对它们进行很小的修改。
让我给你举个例子 :



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

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

我有两个主要问题:
  • 是否有任何框架已支持此功能?如果有的话,就我的目的而言是否太复杂了?
  • 如果没有,那么实现这种事情的最佳方法是什么?

  • 注意:能否请您说明我的问题有何不清楚之处?

    最佳答案

    我个人认为可以不使用任何特定框架就可以实现该要求。您可以按以下方式设计应用程序:

  • TaskPerformer:具有名为performTask的方法的接口(interface)。表示要执行的任务。
  • BagPackTask:一个实现TaskPerformer的具体类。还定义了performTask方法,该方法包含用于包装袋子的代码。
  • WaterPlantsTask:另一个实现TaskPerformer的具体类。还定义了performTask方法,该方法包含用于浇灌植物的代码。
    同样,每个任务都有一个类,该类实现Taskperformer并使用performTask方法定义该任务的行为。
  • Workflow:一个类,将用于执行两个或多个任务,并允许您混合和匹配现有任务。该类将包含TaskPerformer列表,并且该类的构造函数将具有List参数以要求Tasks执行。该类将包含一个executeWorkflow方法,该方法将遍历List并调用列表中每个元素的performTask方法。换句话说,该类可用于通过实例化其executeWorkflow方法来执行实例化过程中传递给其构造函数的所有任务。重要的是要注意,在列表中插入元素的顺序就是执行任务的顺序。

  • 使用这种方法,您无需具有任何if-else条件来确定要执行的任务。您可以根据需要在多个Workflow实例中重用TaskPerformer实现。您将获得一个 super 干净的设计。让我知道您是否需要任何说明,因为我认为这种设计应该可以解决您的问题。在接受任何答案之前先弄清所有疑问是一个好主意:)

    10-06 07:28