JBPM高手进阶手册.doc
文本预览下载声明
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
显示全部