工作流(流程控制应用)
什么是工作流?
工作流是业务流程自动化。要素:任务(task),参与者(participant)
什么是工作流管理系统
要素:工作流的管理、工作流的调度执行、工作流引擎
工作流(系统)主要概念
流程定义:预先定义的业务流转逻辑
流程实例:业务的一次实际流转过程
参与者:任务的执行者
活动(任务):组成流程定义的节点
活动实例:组成流程实例的元素
流转:从一个节点到另一个节点这一行为
流转列表:当前需要办理的任务
工作流引擎:工作流的核心组件,对流程实例、任务实例以及状态进行管理
概念:ProcessDefinition
定义了流程的业务逻辑,包括业务节点和流转。是有向图结构。
<process-definition name="MyRequest"> <start-state name="SS_Request"> <transition name="" to="TN_WriteRequest"></transition> </start-state> <task-node name="TN_BossDecide"> <task name="Task_BossDecide"> <assignment class="com.myrequest.task.BossDecideAssignmentHandler"></assignment> </task> <transition name="Tr_BossApprove" to="Join_Request"> </transition> </task-node> <end-state name="end"/></process-definition>
概念:Actor
活动的参与者
JBPM目前只需要actor的ID
概念:Token
概念来自于petri网
是一个指针(运行期的概念),代表着一条执行路行径,指向当前流程中正在的节点
takens可能树结构,同一时刻,可能存在多个token,但是只有一个root taken
JBPM API:典型应用-流程定义操作
// 从 jbpm.cfg.xml 取得 jbpm 的配置 JbpmConfiguration config = JbpmConfiguration.getInstance(); // 创建一个 jbpm 容器 JbpmContext jbpmContext = config.createJbpmContext(); // 由 processdefinition.xml 生成相对应的流程定义类 ProcessDefinition InputStream is = new FileInputStream("src/main/jpdl/simple/processdefinition.xml"); ProcessDefinition processDefinition = ProcessDefinition.parseXmlInputStream(is); // 利用容器的方法将流程定义数据部署到数据库上 jbpmContext.deployProcessDefinition(processDefinition); // 关闭 jbpmContext jbpmContext.close();