jbpm4工作流详解
- 格式:pdf
- 大小:166.74 KB
- 文档页数:3
jbpm4⼯作流详解
jBPM4的学习流程 1>jBPM4通过org.jbpm.pvm.internal.ant.JbpmDeployTask通过读取jbpm.cfg.xml中的JDBC数据连接信息 2>对jbpm4的数
据库表简单介绍 3>通过ProcessEngine类的贯穿来获取服务接⼝(Service API)来认识所有的常⽤类 4>对流程定义语⾔中活动⼏个常⽤的介
绍 5>事件的介绍 JBPM:部署流程定义 jBPM4通过org.jbpm.pvm.internal.ant.JbpmDeployTask通过读取jbpm.cfg.xml中的JDBC数据连接信
息直接将业务流程部署到数据库中。 它不仅可以部署单个业务流程,也可以部署⼀组业务流程归档到服务器上。 jbpm⾸先扫描业务流程归
档中所有以.jpdl.xml结尾的⽂件,并解析,然后⽤来发起流程实例,业务流程归档中所有其他资源也会在部署
过程中被持久化到数据库中。所有这些资源被统⼀编号保存在数据库表jbpm4_lob中 我们可以通过jbpm4提供的
RepositoryService.getResourceAsStream API随时访问这些资源。
jbpm4的数据库表简单介绍
JBPM4_DEPLOYMENT 流程定义表 JBPM4_DEPLOYPROP 流程定义属性表
JBPM4_EXECUTION 流程实例表 JBPM4_HIST_ACTINST 流程活动(节点)实例表
JBPM4_HIST_DETAIL 流程历史详细表
JBPM4_HIST_PROCINST 流程实例历史表
JBPM4_HIST_TASK 流程任务实例历史表 JBPM4_HIST_VAR 流程变量(上下⽂)历史表
JBPM4_ID_GROUP ⾓⾊表 JBPM4_ID_MEMBERSHIP ⽤户⾓⾊表 JBPM4_ID_USER ⽤户表 JBPM4_JOB 定时表 JBPM4_LOB 存储表
JBPM4_PARTICIPATION 参与者表 JBPM4_SWIMLANE 泳道表 JBPM4_TASK 任务表 JBPM4_VARIABLE 上下⽂表
(1)JBPM4_DEPLOYMENT、(2)JBPM4_DEPLOYPROP及(3)JBPM4_LOB: 存储 上传⼀个包含png和jpdl.xml的zip包 的相关数
据 jbpm4_deployment表多了⼀条记录 jbpm4_deployprop表多了四条记录,对应langid,pdid,pdkey,pdversion jbpm4_lob 表多了⼆条记录,保
存流程图png图⽚和jpdl.xml (4)JBPM4_HIST_PROCINST与(5)JBPM4_HIST_ACTINST 分别存放的是Process Instance、ActivityInstance的历史记录。 (6)JBPM4_EXECUTION 主要是存放JBPM4的执⾏信息,Execution机制代替了JBPM3的Token机制
(7)JBPM4_TASK 存放需要⼈来完成的Activities,需要⼈来参与完成的Activity被称为Task。 (8)JBPM4_PARTICIPATION 存放Participation的信息,Participation的种类有Candidate、 Client、Owner、Replaced Assignee和Viewer。⽽具体的
Participation既可以是单⼀⽤户,也可以是⽤户组。 (9)JBPM4_SWIMLANE Swim Lane是⼀种Runtime Process Role。通过Swim
Lane,多个Task可以⼀次分配到同⼀Actor⾝上。 (10)JBPM4_VARIABLE 存的是进⾏时的临时变量。 (11)JBPM4_HIST_DETAIL 保
存Variable的变更记录。 (12)JBPM4_HIST_VAR 保存历史的变量。 (13)JBPM4_HIST_TASK Task的历史信息。
(14)JBPM4_ID_GROUP(15)JBPM_ID_MEMBERSHIP(16)JBPM4_ID_USER 这三张表很常见了,基本的权限控制,关于⽤户认
证⽅⾯建议还是⾃⼰开发⼀套,JBPM4的功能太简单了,使⽤中有很多需要难以满⾜。 (17)JBPM4_JOB 存放的是Timer的定义。
(18)JBPM4_PROPERTY
流程定义、流程实例和执⾏(executions)的概念 流程定义:是对业务过程步骤的描述,在jbpm4中它表现为若⼲个“活动”节点,通过“转移”线
条串联 流程实例:是表⽰流程定义在运⾏时特有的执⾏例程 执⾏:⼀个实例在其⽣命周期中,最典型的特征就是具有指向当前执⾏活动的
指针“执⾏”它在jbmp3中被称为“token”在jbpm4中被称
为“executions”
常⽤类: ProcessEngine:所有的服务接⼝都是通过ProcessEngine对象获得的。 1》ProcessEngine通过Configuration类构
建,Configuration以单例模式获取ProcessEngine对象。 2》ProcessEngine是线程安全的,所有的线程和请求都可以使⽤同⼀个ProcessEngine对象。
ProcessEngine对象的实现⽅式: 1)⽅式⼀:使⽤classpath根⽬录下的默认配置⽂件jbpm.cfg.xml创建⼀个单例的ProcessEngine。
ProcessEngine processEngine = Configuration.getProcessEngine(); 2)⽅式⼆:指定其他位置的jBPM配置⽂件,如src根⽬录config包下
的my-jbpm-cfg.xml。
ProcessEngine processEngine = new Configuration().setResource("config/my-jbpm-cfg.xml").buildProcessEngine(); 2.通过ProcessEngine
对象获取各种服务接⼝
1)获取RepositoryService接⼝。 RepositoryService repositoryService = processEngine.getRepositoryService(); RepositoryService---
-流程资源服务接⼝。提供对流程定义的部署、查询、删除和流程图查看等操作。 2)获取ExecutionService接⼝。 ExecutionService
executionService = processEngine.getExecutionService(); ExecutionService----流程执⾏服务接⼝。提供启动流程实例、推进、删除等
操作。 3)获取TaskService接⼝。 TaskService taskService = processEngine.getTaskService(); TaskService----⼈⼯任务服务接⼝。提供
对任务的创建、提交、查询、保存、删除等操作。 4)获取HistoryService接⼝。 HistoryService historyService =processEngine.getHistoryService(); HistoryService----流程历史服务接⼝。提供对任务的管理操作。提供对流程历史库中历史流程实
例、历史活动实例等记录的查询。 5)获取ManagementService接⼝。 ManagementService managementService =processEngine.getManagementService(); ManagementService----流程管理控制服务接⼝。 6)获取IdentityService接⼝。
IdentityService identityService = processEngine.getIdentityService(); IdentityService----⾝份认证服务接⼝。提供对流程⽤户、⽤户组管
理。
ProcessInstance类 --流程实例类 获得流程实例: ProcessInstance processInstance = executionService.findProcessInstanceById(id); StringprocessDefinitionId = processInstance.getProcessDefinitionId(); 获得流程定义: ProcessDefinition processDefinition =
repositoryService.createProcessDefinitionQuery().processDefinitionId
(processDefinitionId).uniqueResult(); ActivityCoordinates 类:流程图活动点坐标 ActivityCoordinates ac =
repositoryService.getActivityCoordinates(processInstance.getProcessDefinitionId(), activityNames.iterator().next());
jBPM流程语⾔的定义: jPDL(jBPM Process Define Language,jBPM流程定义语⾔) (流程)元素是每个流程的顶级元
素。 start --- 开始活动 state --- 状态活动 decision --- 判断活动 fork-join --- 分⽀/聚合活动 end --- 结束活动 task --- ⼈⼯任务活动 sub-process--- ⼦流程活动 custom --- ⾃定义活动
start(开始活动) 即流程的⼊⼝,在⼀个流程的定义⾥必须有且只有⼀个start活动,start活动必须有⼀个流出转移(transition),这个转移会在同
过
start活动的时候开始执⾏。 流程通
过start标签开始,通过transition流出转移,通过to属性指定下⼀个活动节点。 state(状态活动)当需要流程受到某些特定的外部⼲预后在继续
运⾏,⽽这之前流程“陷⼊”⼀个中断“等待”状态,您需要的就是state
活动,当流程运⾏到state活动时,会⾃动陷⼊等待状态(waiting state),也就是说流程引擎在收到外部触发信号之前会⼀直使流程实例
在此state活动等待,从某⽅⾯来说,task活动可以说是⼀种特殊化的state活动,同任务结点不同的是,状态结点不会向任务列表添加任
务实例,在进⼊该结点时,通过node-enter事件向外部系统发送⼀个消息,然后结点进⼊等待状态;当外部系统完成处理,并回送⼀个消
息,这将导致触发⼀个signal()⽅法的运⾏,该⽅法重新激活正在等待的流程继续下⾏jBPM中使⽤ExecutionService来控制对state的
sign操作。 decision(判断活动) decision活动可以拥有多个流出转移,当流程实例到达decision活动时,会根据“最先匹配成功的⼀个条件”⾃