JBPM 流程监控的实现
JBPM 流程监控的实现
JBPM 是 JBOSS 公司的一个开源工作流产品,它功能强大,商业工作流所提供的功能
它基本上都有。然而在 JBPM 中没有提供流程监控的功能的相关 API,这点让很多使用
JBPM 做企业应用的开发人员颇为头疼。
其实,在 JBPM 中我们可以通过手工编码的方式来实现商业工作流中所具有的流程监
控功能。
所谓的流程监控就是要实现可以看到当前系统中发布了多少个流程;每一个流程产生
了多少个流程实例,有哪些流程实例结束了,哪些处于活动状态,哪些挂起了;同时对于
每一个流程实例当前走到什么位置了(流程的进度状况)等等。通过查看 JBPM 的 API 我
们发现 API 里并没有提供实现该功能现成的接口,不过我们可以通过自己手工编码的方式
来拿到我们需要的监控信息。
通 过 查 看 JBPM 的 表 , 我 们 知 道 要 实 现 流 程 监 控 功 能 就 是 把 JBPM 当 中 的
JBPM_PROCESSDEFINITION(已发布的流程表),JBPM_PROCESSINSTANCE(流程
实例表),JBPM_TASKINSTANCE(流程产生的任务实例表)这三张表串联起来就可以实
现我们所要的监控功能。
首先我们要拿到所有的已发布的流程表的最后一个版本的信息,关于这一块我们可以
通过 JbpmContext 来实现:
JbpmConfiguration config = JbpmConfiguration.getInstance();
JbpmContext jbpm=config.createJbpmContext();
try {
List ls=jbpm.getGraphSession().findLatestProcessDefinitions();
......
} catch (Exception e) {
throw e;
}finally{
jbpm.close();
}
上面代码中的List ls=jbpm.getGraphSession().findLatestProcessDefinitions();是
JbpmContext提供的拿到所有的最后一个版本的所有的流程定义信息。
拿到所有的最后一个版本的流程定义信息后,接下来我们需要根据每一个流程定义的
第 1 页 共 8 页