- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JBPM高手进阶手册
Jbpm
一启动流程
1、初始化:websale中jbpmContext的创建是在filter中完成的,其类为 org.jbpm.webapp.filter.JbpmContextFilter。该filter在init方法中初始化 jbpmConfigurationResource及jbpmContextName两个string。每个http request,均由filter创建jbpmContext,代码为:JbpmConfiguration jbpmConfiguration=getJbpmConfiguration();JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(jbpmContextName);bean中通过JbpmContext.getCurrentJbpmContext()获取当前的JbpmContext实例。比如HomeBean初始化代码:...public HomeBean() {??? this.jbpmContext = JbpmContext.getCurrentJbpmContext();??? this.graphSession = jbpmContext.getGraphSession();??? this.taskMgmtSession = jbpmContext.getTaskMgmtSession();}...2、启动流程启动流程执行HomeBean的startProcessInstance方法:? public String startProcessInstance() {??? // 从http request获取processDefinitionId参数,装载流程定义(jsfHelper是一个工具类,集合了一些jsf常用的功能)??? long processDefinitionId = JsfHelper.getId(processDefinitionId);??? ProcessDefinition processDefinition = graphSession.loadProcessDefinition(processDefinitionId);??? // 创建新的流程实例??? ProcessInstance processInstance = new ProcessInstance(processDefinition);??? // 创建任务实例??? TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createStartTaskInstance();??? // 保存流程实例和任务实例??? jbpmContext.save(processInstance);??? ??? // 设置taskBean??? taskBean.initialize(taskInstance);??? ??? //跳转到task.jsp??? return task;? }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 { Li
文档评论(0)