activiti5 package cn.com.helloworld;import java.util.List;import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService;import or
package cn.com.helloworld; import java.util.List; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.repository.Deployment; import org.activiti.engine.repository.DeploymentBuilder; import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.junit.Test; public class HelloWorld { //获取流程引擎对象 //getDefaultProcessEngine方法内部会自动读取名为activiti.cfg.xml文件的配置信息 ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine(); /**部署流程定义*/ @Test public void deploymentProcessDefinition(){ //与流程定义和部署对象相关的Service RepositoryService repositoryService=processEngine.getRepositoryService(); DeploymentBuilder deploymentBuilder=repositoryService.createDeployment();//创建一个部署对象 deploymentBuilder.name("helloWorld入门程序");//添加部署的名称 deploymentBuilder.addClasspathResource("diagrams/MyProcess.bpmn");//从classpath的资源加载,一次只能加载一个文件 deploymentBuilder.addClasspathResource("diagrams/MyProcess.png");//从classpath的资源加载,一次只能加载一个文件 Deployment deployment=deploymentBuilder.deploy();//完成部署 //打印我们的流程信息 System.out.println("流程Id:"+deployment.getId()); System.out.println("流程Name:"+deployment.getName()); } /**启动流程引擎*/ @Test public void startProcessInstance(){ //获取流程启动Service RuntimeService runtimeService=processEngine.getRuntimeService(); //使用流程定义的key,key对应bpmn文件对应的id, //(也是act_re_procdef表中对应的KEY_字段),默认是按照最新版本启动 String processDefinitionkey="HelloWorld";//流程定义的key就是HelloWorld //获取流程实例对象 ProcessInstance processInstance=runtimeService.startProcessInstanceByKey(processDefinitionkey); System.out.println("流程实例ID:"+processInstance.getId());//流程实例ID System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId());//流程定义ID } /**查询当前的个人任务(实际就是查询act_ru_task表)--张三*/ @Test public void findMyPersonalTask1(){ String assignee="张三"; //获取事务Service TaskService taskService=processEngine.getTaskService(); ListtaskList=taskService.createTaskQuery()//创建任务查询对象 .taskAssignee(assignee)//指定个人任务查询,指定办理人 .list();//获取该办理人下的事务列表 if(taskList!=null&&taskList.size()>0){ for(Task task:taskList){ System.out.println("任务ID:"+task.getId()); System.out.println("任务名称:"+task.getName()); System.out.println("任务的创建时间:"+task.getCreateTime()); System.out.println("任务办理人:"+task.getAssignee()); System.out.println("流程实例ID:"+task.getProcessInstanceId()); System.out.println("执行对象ID:"+task.getExecutionId()); System.out.println("流程定义ID:"+task.getProcessDefinitionId()); System.out.println("#############################################"); } }else{ System.out.println("暂无待办任务"); } } /**完成我的任务*/ @Test public void completeMyPersonalTask1(){ String taskId="32504";//上一次我们查询的任务ID就是304 TaskService taskService=processEngine.getTaskService(); taskService.complete(taskId);//完成taskId对应的任务 System.out.println("完成ID为"+taskId+"的任务"); } /**查询当前的个人任务(实际就是查询act_ru_task表)--李四*/ @Test public void findMyPersonalTask2(){ String assignee="李四"; //获取事务Service TaskService taskService=processEngine.getTaskService(); List taskList=taskService.createTaskQuery()//创建任务查询对象 .taskAssignee(assignee)//指定个人任务查询,指定办理人 .list();//获取该办理人下的事务列表 if(taskList!=null&&taskList.size()>0){ for(Task task:taskList){ System.out.println("任务ID:"+task.getId()); System.out.println("任务名称:"+task.getName()); System.out.println("任务的创建时间:"+task.getCreateTime()); System.out.println("任务办理人:"+task.getAssignee()); System.out.println("流程实例ID:"+task.getProcessInstanceId()); System.out.println("执行对象ID:"+task.getExecutionId()); System.out.println("流程定义ID:"+task.getProcessDefinitionId()); System.out.println("#############################################"); } }else{ System.out.println("暂无待办任务"); } } /**完成我的任务*/ @Test public void completeMyPersonalTask2(){ String taskId="35011";//上一次我们查询的任务ID就是304 TaskService taskService=processEngine.getTaskService(); taskService.complete(taskId);//完成taskId对应的任务 System.out.println("完成ID为"+taskId+"的任务"); } /**查询当前的个人任务(实际就是查询act_ru_task表)--李四*/ @Test public void findMyPersonalTask3(){ String assignee="王五"; //获取事务Service TaskService taskService=processEngine.getTaskService(); List taskList=taskService.createTaskQuery()//创建任务查询对象 .taskAssignee(assignee)//指定个人任务查询,指定办理人 .list();//获取该办理人下的事务列表 if(taskList!=null&&taskList.size()>0){ for(Task task:taskList){ System.out.println("任务ID:"+task.getId()); System.out.println("任务名称:"+task.getName()); System.out.println("任务的创建时间:"+task.getCreateTime()); System.out.println("任务办理人:"+task.getAssignee()); System.out.println("流程实例ID:"+task.getProcessInstanceId()); System.out.println("执行对象ID:"+task.getExecutionId()); System.out.println("流程定义ID:"+task.getProcessDefinitionId()); System.out.println("#############################################"); } }else{ System.out.println("暂无待办任务"); } } /**完成我的任务*/ @Test public void completeMyPersonalTask3(){ String taskId="37502";//上一次我们查询的任务ID就是304 TaskService taskService=processEngine.getTaskService(); taskService.complete(taskId);//完成taskId对应的任务 System.out.println("完成ID为"+taskId+"的任务"); } /**查看流程定义 * id:(key):(version):(随机值) * name:对应流程文件process节点的name属性 * key:对应流程文件process节点的id属性 * version:发布时自动生成的。如果是第一次发布的流程,version默认从1开始; * 如果当前流程引擎中已存在相同的流程,则找到当前key对应的最高版本号,在最高版本号上加1*/ @Test public void queryProcessDefinition() throws Exception{ //获取仓库服务对象,使用版本的升级排列,查询列表 List pdList=processEngine.getRepositoryService() .createProcessDefinitionQuery() //添加查询条件 //.processDefinitionId(processDefinitionId) //.processDefinitionKey(processDefinitionKey) //.processDefinitionName(processDefinitionName) //排序(可以按照id/key/name/version/Cagetory排序) .orderByProcessDefinitionVersion().asc() //.count() //.listPage(firstResult, maxResults) //.singleResult() .list();//总的结果集数量 //便利集合,查看内容 for (ProcessDefinition pd:pdList) { System.out.println("id:"+pd.getId()); System.out.println("name:"+pd.getName()); System.out.println("key:"+pd.getKey()); System.out.println("version:"+pd.getVersion()); System.out.println("resourceName:"+pd.getDiagramResourceName()); System.out.println("###########################################"); } } /**删除流程*/ @Test public void deleteDeployment(){ //删除发布信息 String deploymentId="1"; //获取仓库服务对象 RepositoryService repositoryService=processEngine.getRepositoryService(); //普通删除,如果当前规则下有正在执行的流程,则抛异常 //repositoryService.deleteDeployment(deploymentId); //级联删除,会删除和当前规则相关的所有信息,正在执行的信息,也包括历史信息 repositoryService.deleteDeployment(deploymentId, true); } }