状态是JBPM的一个核心概念,也是业务流程的基本元素,状态代表了一种对外部参与者的依赖。定义状态时需要指定该状态的执行者,也就是该状态依赖的外部参与者。多个状态可能依赖同一个参与者,工作流管理系统根据这些信息构建该参与者的任务列表。
版本控制机制可归结为以下几条原则:
a)当一个流程存档被部署时,将在JBPM数据库中创建一个新的流程定义。
b)当一个被命名的流程定义被部署,部署器将分配一个版本号。为了分配版本号,部署器将查询同名流程定义的最高版本号,并且在其上加1.
c)当一个新的版本被部署,新的流程实例以新版本启动,而老的流程实例则以老的流程定义继续执行,直到它结束为止。
d)JBPM甚至能够对与一个流程相关的程序逻辑进行版本控制,通过在流程存档中包括java类,JBPM能够将每个流程定义的类分离。
为了把复杂的企业经营过程定义成工作流引擎可以理解的形式化信息及工作流管理系统可以管理的工作流,需要建立计算机化的工作流模型。为了全面描述经营过程,工作流模型通常又包含三个子模型,分别是过程模型、资源模型和组织模型。过程模型描述经营过程中的活动以及活动之间的关系,资源模型描述活动所需要的软硬件资源,而组织模型描述活动的执行实体。过程模型是工作流模型的核心,比较常见的过程建模方法有Petri网、活动图、状态图等。
一个业务流程的定义process-definition,有一个流程定义名称,其流程内容主要由下面七个部分组成:
1,swimlane,泳道,它们被用于任务分配,一个泳道可以被视为一个参与者在这一流程中的角色名称。
2,start-state,流程的起始状态,所有的流程实例都是从这个状态开始的,没有起始状态的流程是合法的,但不能被执行;
3,node-elements,包含一系统流程定义的节点,这些节点类型包括
end-state
|state
|node
|task-node
|process-state
|super-state
|fork
|join
|decision
没有流程定义的流程是合法的,但不能被执行;
4,action-elements,全局定义的动作,可以在事件和转换中引用,为了被引用,这些动作必须被指定名称;包括
action
|script
|create-timer
|cancel-timer
5,event,事件,服务于动作的流程事件;
6,task,全局定义的任务,可以在动作中使用;
7,exception-handler,一个异常处理器列表,用于这个流程定义中的委托类所抛出的所有异常。
在JPDL包含的这些元素中,node-elements中定义的为一系统的包含各种类型的node-elements,这些node-elements描述了整个流程包含的各个状态,以及状态之间的转换。即相当于流程的过程模型。
而在这些node-elements的状态转换时,可以调用相应的action-elements,node-elements也有支持的event类型,所以能够调用相应的event,在event中,也可以调用相应的action-elements。而action是指实现用户指定的行为,通过实现org.jbpm.graph.def.ActionHandler接口来实现。所以可以在流程中,得到用户的或者其他应用程序的资源。
当node-element为task-node时,即流程包含的任务,可以为这些任务指定任务的执行者,通过swimlane属性直接指定或者通过assignment来实现一个委托,即实现一个org.jbpm.taskmgmt.def.AssignmentHandler接口来分派任务执行者。
因此使用JPDL,可以从过程模型,资源模型,组织模型来完整的描述一个业务流程。