spring 工作流引擎
几个月前,在处理一个公司项目时,我们需要开发REST服务,该服务用于根据客户端应用程序发送的数据发送电子邮件。 在开发此服务期间,我们决定创建简单的工作流引擎,该引擎将为发送电子邮件收费,但该引擎也可用于任何类型的简单流。
在本文中,我将逐步说明如何实现可处理序列流的简单工作流引擎。
为了实现此工作流引擎,我们使用了spring框架,但是无论使用哪种框架,也可以不使用任何框架,如何在任何框架上实现该想法都应相同。
我们将从对序列工作流程模式的简短介绍开始,然后,我们将研究所需的接口,最后,我们将从使用Spring实现工作流程引擎开始。
序列工作流程模式
序列工作流程模式描述了其中每个步骤(动作)一步一步地完成的工作流程。 在下一张图片上,您可以看到它的外观:
流中将要处理的每个动作都共享相同的上下文,这使流的参与者之间可以共享信息。 使用公共上下文的想法是因为每个步骤都应该彼此独立,并且应该将它们作为其他流程的一部分轻松添加。
如果要获取有关序列工作流程模式的更多信息,请访问: 序列模式 。
定义所需的界面
下一步是创建一组接口,使我们可以轻松创建工作流程并定义工作流程操作。
我们可以从Workflow界面开始。 该接口负责处理工作流程操作,实际上它定义了我们的工作流程引擎应该执行的操作。 这是一个非常简单的界面,只有一种方法“ processWorkflow”。
此方法由工作流引擎调用,用于为工作流提供可在工作流内部使用的初始对象,它表示每个工作流的起点。
package ba.codecentric.workflow;
import java.util.Map;
/**
* Process email workflow.
*
* @author igor.madjeric
*
*/
public interface Workflow {
/**
* Method for processing workflow.
*
* @param parameters
* maps of object which are needed for workflow processing
* @return true in case that workflow is done without