`
liuwei1981
  • 浏览: 752866 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:156234
社区版块
存档分类
最新评论

4.判断jbpm流程实例流转完毕

 
阅读更多

在使用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采购申请系统——08_JBPM流程节点.7z JBPM...

    jbpm4.jar 下载

    jboss jbpm4最新开发包 采用了pvm框架

    JBPM4.chm jbpm4 帮助文档,英文版javaDoc

    JBPM4.chm jbpm4 帮助文档,英文版javaDoc

    jbpm jbpm4.3.jar

    jbpm jbpm4.3.jar DDDDDDDD

    JBPM采购申请系统源代码+全套流程+JBPM的详细介绍2.zip

    JBPM采购申请系统源代码+全套流程+JBPM的详细介绍2.zip JBPM采购申请系统源代码+全套流程+JBPM的详细介绍2.zip JBPM采购申请系统源代码+全套流程+JBPM的详细介绍2.zip JBPM采购申请系统源代码+全套流程+JBPM的详细...

    jbpm4实例源码,可直接运行

    jbpm4实例源码,可直接运行

    jBPM 4.4中文用户手册

    从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请假实例代码

    jbpm4实例代码。。。。。。。。。。。。。

    JBPM4.4用户手册.doc

    JBPM4.4工作流用户手册(适合于初始学JBPM4的人),本用户下还有JBPM4.4开发指南(适合于有点经验的人),2011-03-28参考自http://www.family168.com/tutorial/jbpm4.0/html/index.html,可直接浏览网站, ...

    使用JBoss.jBPM的业务流程管理

    [使用JBoss.jBPM的业务流程管理][英文文字版]Business.Process.Management.with.JBoss.jBPM

    JBPM采购申请系统——09_任务实例与任务分配.7z

    JBPM采购申请系统——09_任务实例与任务分配.7z JBPM采购申请系统——09_任务实例与任务分配.7z JBPM采购申请系统——09_任务实例与任务分配.7z JBPM采购申请系统——09_任务实例与任务分配.7z JBPM采购申请系统——...

    jeecg-jbpm-framework 20130202.zip

    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 实例

    jbpm4 的 实例 jbpm初学者入门的捷径

    jbpm的一个实例

    JBPM是一个扩展性很强的工作...在这个版本里包括一个JBPM流程设计器的Eclipse插件,和一个用JBOSS作为服务器的示例流程等相关文件。解压jbpm-starters-kit-3.1.2.rar到某个特定目录,这里我们首先用到的是包里的JBPM目

    jbpm开发实例详解

    jbpm实例详解,这是一个有关jbpm的例子以及解释,详细介绍了jbpm的基础开发实现。

    jbpm所南的新sql脚本mysql.identity.script.jbpm321

    jbpm所南的新sql脚本mysql.identity.script.jbpm321

    jBPM4.3用户指南

    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 \hibernate

    jta.jar 下载 jbpm发布时会用到

    JBPM流程引擎设计 工作流资料

    JBPM流程引擎设计 工作流资料JBPM流程引擎设计 工作流资料JBPM流程引擎设计 工作流资料JBPM流程引擎设计 工作流资料JBPM流程引擎设计 工作流资料

Global site tag (gtag.js) - Google Analytics