在使用jbpm4.x进行业务实例开发中,最后遇到了如何判断流程实例运转结束判断的问题。
当业务实例相对应的流程实例运转完毕之后,相应的,需要对业务实例信息做状态标记,表示该业务实例信息已经形成了最终的流程审批意见,可以根据具体的结果进行相应的任务处理。
这样,就涉及到了如何判断流程实例已经运转完成的判断。当然,根据现在的实际开发情况,需要写出一个公用的接口方法,用于判断某流程已经结束,而不是针对某具体流程来独立编写代码来完成。
在jbpm4.x之前的版本,有专门的API来做判断:
ProcessInstance processInstance = executionService.findProcessInstanceById(processInstanceId); if (processInstance != null) { return processInstance.isEnded(); }
但是在JBPM4.x之后,加入了历史流程处理,将已经流转完毕的流程实例数据全部移入相对应的历史资源记录表中。流程信息表中,只保留当前运转信息,提高流程实例运行效率。
这样产生的问题就是,当流程实例完成之后,通过 executionService.findProcessInstanceById(processInstanceId)来获取流程实例,是根本不会获取到对应的流程实例的,因为对应的信息已然不存在,如果执行相应的isEnded方法,只会获得一个空指针异常信息。
这样,就只有到历史表中,去查找相应的流程实例信息了。但是当获取到对应流程实例信息之后,问题也来了。jbpm4.x的处理方式是,当启动一个流程实例后,在流程实例信息表中,和对应历史表中,都会有相应的一条流程实例信息。
这样意味着,即使你从历史信息中获取到了对应的流程信息,也不能就确认,该流程实例已经运转结束。而且历史流程实体对象中,没有提供相应的isEnded方法用来判断。
这样,只好自己动手来想办法来处理了。
第一种方式是判断历史流程实例中,结束时间是否已经赋值。
通过流程实例信息观察,发现,若历史流程实例已经完成流转,则对其流程实例信息中endtime(结束时间)记录时间信息,标记该流程完成时间。
这样,在获取流程实例之后,在判断该流程实例的endtime值是否为空,不为空,就可以判断该流程已经完成了运转。
historyProcessInstance.getEndTime() != null
第二种方法是判断历史流程实例的状态,这种方法显得更规范些。
HistoryProcessInstance类有一个静态实例属性 STATE_ENDED,不论流程实例最终走到了那个结束的节点,是否是正常结束,还是异常结束,只要该流程实例结束,最后的状态都可以该属性相匹配。
historyProcessInstance.getState().equals(HistoryProcessInstance.STATE_ENDED);
暂时就是这两种解决方法了。
相关推荐
JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM...
jboss jbpm4最新开发包 采用了pvm框架
JBPM4.chm jbpm4 帮助文档,英文版javaDoc
jbpm jbpm4.3.jar DDDDDDDD
JBPM采购申请系统源代码+全套流程+JBPM的详细介绍2.zip JBPM采购申请系统源代码+全套流程+JBPM的详细介绍2.zip JBPM采购申请系统源代码+全套流程+JBPM的详细介绍2.zip JBPM采购申请系统源代码+全套流程+JBPM的详细...
jbpm4实例源码,可直接运行
从jBPM 3升级到jBPM 4 1.7. 报告问题 2. 安装配置 2.1. 发布 2.2. 必须安装的软件 2.3. 快速上手 2.4. 安装脚本 2.5. 依赖库和配置文件 2.6. JBoss 2.7. Tomcat 2.8. Signavio基于web的流程编辑器 2.9....
JBPM4 开发文档 实例 流程 JBPM4 开发文档 实例 流程 JBPM4 开发文档 实例 流程
jbpm4实例代码。。。。。。。。。。。。。
JBPM4.4工作流用户手册(适合于初始学JBPM4的人),本用户下还有JBPM4.4开发指南(适合于有点经验的人),2011-03-28参考自http://www.family168.com/tutorial/jbpm4.0/html/index.html,可直接浏览网站, ...
[使用JBoss.jBPM的业务流程管理][英文文字版]Business.Process.Management.with.JBoss.jBPM
JBPM采购申请系统——09_任务实例与任务分配.7z JBPM采购申请系统——09_任务实例与任务分配.7z JBPM采购申请系统——09_任务实例与任务分配.7z JBPM采购申请系统——09_任务实例与任务分配.7z JBPM采购申请系统——...
jeecg-jbpm-framework 20130202.zipjeecg-jbpm-framework 20130202.zipjeecg-jbpm-framework 20130202.zipjeecg-jbpm-framework 20130202.zipjeecg-jbpm-framework 20130202.zipjeecg-jbpm-framework 20130202....
jbpm4 的 实例 jbpm初学者入门的捷径
JBPM是一个扩展性很强的工作...在这个版本里包括一个JBPM流程设计器的Eclipse插件,和一个用JBOSS作为服务器的示例流程等相关文件。解压jbpm-starters-kit-3.1.2.rar到某个特定目录,这里我们首先用到的是包里的JBPM目
jbpm实例详解,这是一个有关jbpm的例子以及解释,详细介绍了jbpm的基础开发实现。
jbpm所南的新sql脚本mysql.identity.script.jbpm321
5.1. 流程定义,流程实例和执行 5.2. ProcessEngine流程引擎 5.3. Deploying a process部署流程 5.4. 删除流程定义 5.5. 启动一个新的流程实例 5.5.1. 最新的流程实例 5.5.2. 指定流程版本 5.5.3. 使用key ...
jta.jar 下载 jbpm发布时会用到
JBPM流程引擎设计 工作流资料JBPM流程引擎设计 工作流资料JBPM流程引擎设计 工作流资料JBPM流程引擎设计 工作流资料JBPM流程引擎设计 工作流资料