JBPM4 基本流程
初学JBPM,简单总结基本的开发流程如下:
?
第1步、初始化ProcessEngine
ProcessEngine processEngine = new Configuration().buildProcessEngine();?
第2步、获得RepositoryService,并读取资源,发布管理流程
RepositoryService repositoryService = processEngine.getRepositoryService();//repositoryService.createDeployment().addResourceFromClasspath("leave.jpdl.xml").deploy();ZipInputStream zis = new ZipInputStream(this.getClass().getResourceAsStream("/leave.zip"));repositoryService.createDeployment().addResourcesFromZipInputStream(zis).deploy();
?
第3步、获得ExecutionService,并调用其startProcessInstanceBy***()方法启动一个流程实例
ExecutionService executionService = processEngine.getExecutionService();//可提供参数:Map map = new HashMap();map.put("owner",(String)session.getAttribute("userName"));//也可使用variables提供变量,variables在流程创建和启动时使用//Map<String,Object> variables//executionService.setVariable(variables);//设置流程变量。executionService.startProcessInstanceById(id, map);
?
第4步、IdentityService对象向的方法可向流程中添加参与者,用户组,用户组与参与者的对应
?
第5步、TaskService对象 获取参与者的任务列表?
List<Task> listTasks=taskService.getTask(taskId);task=listTasks.get(0);String taskId = task.getId();
?
第6步、调用TaskService的completeTask方法,根据taskId执行任务(可选:可调用setVariables方法设置参数):
//设置参数Map map = new HashMap();map.put("day",day);map.put("reason",reason);ts.setVariables(taskId,map);//执行任务ts.completeTask(taskId);
?
PS:利用Query方法获得各种所需列表的例子:
//流程定义ListList<ProcessDefinition> pdList = repositoryService.createProcessDefinitionQuery().list();//流程实例ListList<ProcessInstance> piList = executionService.createProcessInstanceQuery().list();//任务ListList<Task> taskList = taskService.findPersonalTasks(userName);//历史流程实例ListList<HistoryProcessInstance> historyList = processEngine.getHistoryService().createHistoryProcessInstanceQuery().list();?
?
1 楼 HWlail 2012-04-28 第一步出现 java.lang.NullPointerException 打印Configuration 有值 LZ 怎么解决