jbpm4服务接口方法汇总

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Jbpm服务简介我们开发中主要会使用到PVM提供的几类服务:查看org.jbpm.api.ProcessEngine.java类,这个工厂类提供了所有对外发布的服务。包含:1)RepositoryServicegetRepositoryService();//获取与流程部署有关的方法:如部署一个流程定义的xml文件:processEngine.getRepositoryService().createDeployment().addResourceFromClasspath(“com/xx/jpdl/xx.jpdl.xml”);还可以部署zip压缩文件,其中zip压缩文件中要包含流程定义的xml文件以及自动生成图片。删除流程定:processEngine.getRepositoryService().deleteDeployment(java.lang.StringdeploymentId)创建一个流程部署的查询:processEngine.getRepositoryService().createDeploymentQuery()NewDeploymentcreateDeployment();ProcessDefinitionQuerycreateProcessDefinitionQuery();2)ExecutionServicegetExecutionService();获取一个管理流程执行的服务对象包含方法:根据流程定义ID启动一个流程实例,返回流程实例ID。我们在启动流程的时候会调用这个方法:startProcessInstanceById(StringprocessDefinationId)//启动流程实例并传入流程变量:ProcessInstancestartProcessInstanceById(StringprocessDefinitionId,MapString,Objectvariables);ProcessInstancestartProcessInstanceById(StringprocessDefinitionId);//传入执行ID触发流程执行:ProcessInstancesignalExecutionById(StringexecutionId);//若在流程定义某一个节点没有分支时(只有一个transition时),调用此方法,可将流程继续向下执行executionId为流程实例IdProcessInstancesignalExecutionById(StringexecutionId,StringsignalName);//若在流程定义某一个节点有多个分支时(有多个transition时),调用此方法,可将流程沿着transition所指的方向向下执行executionId为流程实例Id,signalName为流程定义中transition节点的name属性的值ProcessInstancesignalExecutionById(StringexecutionId,StringsignalName,MapString,?parameters);用于将流程沿着signalName方向(transition的name属性所指的方向)向下继续执行,在执行的过程中顺便传递参数parametersProcessInstancesignalExecutionById(StringexecutionId,MapString,?parameters);用于将流程向下继续执行,在执行的过程中顺便传递参数parameters其中可以根据流程实例ID获取Execution对象如:Executionexec=this.processEngine.getExecutionService().createProcessInstanceQuery().processInstanceId(processId).uniqueResult().findActiveExecutionIn(xiaojia);executionService.createProcessInstanceQuery().processInstanceId(id).uniqueResult()//创建一个流程实例的查询对象:ProcessInstanceQuerycreateProcessInstanceQuery();//浏览流程实例列表ListProcessInstancelist=executionService.createProcessInstanceQuery().processInstanceId(piid).list()ListProcessInstancelist=executionService.createProcessInstanceQuery().processDefinitionId(pdid).list()ListProcessInstancelist=executionService.createProcessInstanceQuery().processInstanceKey(pik).list()//结束一个流程实例,任何时候你都可以结束一个流程:voidendProcessInstance(StringprocessInstanceId,Stringstate);//删除流程实例executionService.deleteProcessInstance(processInstanceId)executionService.deleteProcessInstanceCascade(processInstanceId)还有其它方法,可以查看org.jbpm.api.ExecutionService源代码以及它的默认实现org.jbpm.pvm.internal.svc.ExecutionServiceImpl3)HistoryServicegetHistoryService();//获得历史流程实例记录和历史任务处理记录等信息当一个task完成后,它就会被删除并在HistoryTask表中重新创建。所以,查询历史处理的任务记录必须通过HistoryService处理。这里面只有查询方法,如使用查询指定流程实例的任务历史处理记录:processEngine.getHistroyService().createHistoryTaskService().executionId(processId).list();4)还有其它方法可以查看api。TaskServicegetTaskService();//任务处理Service这个服务提供了创建新任务:newTask(),任务授权:assignTask(..),完成任务:completeTask(..),添加任务批注:addTaskComment(..),查询指定用户的当前任务列表:findPersonalTasks(..),删除任务:deleteTask(..)Tasktask=taskService.createTaskQuery().processInstanceId(processInstance.getId()).uniqueResult();等。5)ManagementServicegetManagementService();//主要是JBPM提供的JOB服务voidexecuteJob(longjobDbid);JobQuerycreateJobQuery();6)IdentityServicegetIdentityService();//使用这个类可能需要重新实现IdentitySession接口,并配置到jbpm.cfg.xml文件中=========具体参照jbpm4项目jbpm4动态创建transitiontask1.动态创建执行路线transitionEnvironmentFactoryenvironmentFactory=(EnvironmentFactory)processEngine;Environmentenvironment=environmentFactory.openEnvironment();RepositorySessionrepositorySession=environment.get(RepositorySession.class);//指定流程定义IDprocessDefinitionId=baoxiao-1;ProcessDefinitionImplprocessDefinition=(ProcessDefinitionImpl)repositorySession.findProcessDefinitionById(processDefinitionId);ExecutionImplexecutionImpl=(ExecutionImpl)execution;Activityactivity=executionImpl.getActivity();ActivityImplactivityFind=processDefinition.findActivity(endActivityName);//判断在流程中是否有这个结点if(activityFind==null){System.err.println(在+processDefinitionId+中没有找到活动名称+endActivityName);returnfalse;}TransitionImpltransition=activityFind.createOutgoingTransition();transitionName=撤销;transition.setName(transitionName);//获取父节点ListTransitionintransitions=activity.getIncomingTransitions();transition.setDestination((ActivityImpl)intransitions.get(0).getSource());((ActivityImpl)activity).addOutgoingTransition(transition);System.out.println(已经动态添加完执行路线);//以下打印提示信息ListTransitiontransitions=activity.getOutgoingTransitions();System.out.println(out事务节点+transitions.size());for(Transitiont:transitions){System.out.println(t.getName()++t.getDbid()++t.getCondition()++t.getSource()++t.getDestination()+);}System.out.println(in事务节点+intransitions.size());for(Transitiont:intransitions){System.out.println(t.getName()++t.getDbid()++t.getCondition()++t.getSource()++t.getDestination()+);}2.动态创建taskTasktask=taskService.newTask();task.setAssignee();//此处设置任务相关信息,略taskService.saveTask(task);

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功