2.皱着眉头,退到人群后面。准备好离开这个世界。第六步:流程部署(一)流程部署方法1.@TestpublicvoidGenActivitiTables2(){//创建流程引擎ProcessEngineProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();//2。获取RepositoryServcie(re表的服务层)RepositoryServicerepositoryService=processEngine.getRepositoryService();//3。使用service部署流程,部署bpmn和pngDeploymentdeploy=repositoryService.createDeployment().name("出差申请流程").addClasspathResource("bpmn/holiday.bpmn20.xml").addClasspathResource("bpmn/holiday.bpmn20.png").部署();}(2)流程部署方式2,//1。将png和bpmn打包成一个zip包//2.创建(流程引擎)ProcessEngineProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();//3.GetRepositoryServcie(retable的服务层)\RepositoryServicerepositoryService=processEngine.getRepositoryService();//读取资源包文件构造成inputStreamInputStreaminputStream=this.getClass().getClassLoader().getResourceAsStream("bpmn/holiday.zip");//使用inputStream构造ZipInputStreamZipInputStreamzipInputStream=newZipInputStream(inputStream);//使用压缩包的流来部署流程Deploymentdeploy=存储服务。createDeployment().addZipInputStream(zipInputStream).deploy();部署到数据库查看,如果没有日期,则有日期,点击查看具体数据Step7:启动流程实例//1、创建ProcessEngineProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();//2.获取RunTimeServiceRuntimeServiceruntimeService=processEngine.getRuntimeService();//3.根据流程定义的id启动流程ProcessInstanceinstance=runtimeService.startProcessInstanceByKey("是bpmn文件中的流程id");start之后发现新的表数据:act_hi_taskinst(历史任务实例数据表)act_hi_procinst(历史流程实例数据表,包括正在执行的任务)act_hi_actinst(历史节点数据,图片上的节点信息)act_hi_identitylink(历史流程用户信息数据table)act_ru_execution运行时流程执行实例数据表,一张是启动事件的执行实例,这个一直存在,只有流程结束才会自动删除,is_active字段表示该实例是否正在执行)act_ru_task(taskinformationdatainformationatruntime表)编号八步:查询个人代理任务@TestpublicvoidgetActiv(){//1.获取流程引擎ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();//2。获取任务服务TaskServicetaskService=processEngine.getTaskService();//3。根据流程key和任务负责人查询任务ListtaskList=taskService.createTaskQuery().processDefinitionKey("holiday").taskAssignee("zhangsan").list();//4,outputfor(org.activiti.engine.task.Tasktask:taskList){System.out.println("Processinstanceid="+task.getProcessInstanceId());System.out.println("任务编号="+task.getId());System.out.println("任务负责人="+task.getAssignee());System.out.println("任务名称="+task.getName());}}执行结果:进入数据库也可以查看信息:selectdistinctRES.*fromACT_RU_TASKRESinnerjoinACT_RE_PROCDEFDonRES.PROC_DEF_ID_=D.ID_WHERERES.ASSIGNEE_='zhangsan'andD.KEY_=“假期”订单通过RES.ID_ascLIMIT2147483647OFFSET0;第九步:完成个人任务第一种方式:直接完成整个流程,找到整个流程的负责人//完成个人任务@TestpublicvoidfinshActivity(){//获取EngineProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();//获取操作任务的服务TaskServiceTaskServicetaskService=processEngine.getTaskService();//完成任务,参数:任务id,完成zhangsan的任务,2505为ACT_RU_TASK表的idtaskService。完成(“2505”);}代码运行后,数据库表ACT_HI_TASKINST(历史任务实例表)会有endtime数据。第二种方式:完成整个过程,每个阶段的负责人从过程中完成每个阶段的任务。先看完成经理的审批@Test//完成其他角色的任务publicvoidfinshotherActivity(){//完成经理jerry的任务//获取引擎ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();//获取引擎serviceoftheoperationtaskTaskServiceTaskServicetaskService=processEngine.getTaskService();//获取jerry对应的任务-myEvectionTasktask=taskService.createTaskQuery().processDefinitionKey("holiday").taskAssignee("jerry").singleResult();//完成jerry的任务taskService.complete(task.getId());System.out.println("流程实例id="+task.getProcessInstanceId());System.out.println("任务编号="+task.getId());System.out.println("任务负责人="+task.getAssignee());System.out.println("任务名称="+task.getName());ExecutionAfter:processinstanceid=2501taskId=5002taskleader=jerrytaskname=managerapproval执行后,数据库表act_ru_task中的整体数据由jerry的信息变为jack的信息,也就是说managerofjerryapproves这一步已经完成,开始去jack的阶段,运行到财务信息后//完成jack的任务Tasktaskjack=taskService.createTaskQuery().processDefinitionKey("holiday").taskAssignee("jack").singleResult();系统。out.println("流程实例id="+taskjack.getProcessInstanceId());System.out.println("任务Id="+taskjack.getId());System.out.println("任务负责人="+taskjack.getAssignee());系统.out.println("taskname="+taskjack.getName());//完成jack的任务taskService.complete(taskjack.getId());数据库:财务:////完成玫瑰的任务taskrose=taskService.createTaskQuery().processDefinitionKey("holiday").taskAssignee("rose").singleResult();System.out.println("流程实例id="+taskrose.getProcessInstanceId());System.out.println("TaskId="+taskrose.getId());System.out.println("任务负责人="+taskrose.getAssignee());System.out.println("TaskName="+taskrose.getName());//完成任务taskService.complete(taskrose.getId());act_ru_tasktabledisplay:act_hi_taskinsttabledisplay:这里表示流程结束,endtime有值第十步:查看历史流程//获取历史信息@Testpublicvoidhostiry(){//获取引擎ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();//获取HistoryServiceHistoryServicehistoryService=processEngine.getHistoryService();//获取actinst表的查询ObjectHistoricActivityInstanceQueryinstanceQuery=historyService.createHistoricActivityInstanceQuery();//查询actinst表,条件:根据InstanceId查询//instanceQuery.processInstanceId("2501");//查询actinst表,条件:查询instanceQuery.processDefinitionId("holiday:1:4");//增加排序操作,orderByHistoricActivityInstanceStartTime按照开始时间asc升序排序instanceQuery.orderByHistoricActivityInstanceStartTime().asc();//查询所有内容ListactivityInstanceList=instanceQuery.list();//输出for(HistoricActivityInstancehi:activityInstanceList){System.out.println(hi.getActivityId());System.out.println(hi.getActivityName());System.out.println(hi.getProcessDefinitionId());系统输出。println(hi.getProcessInstanceId());System.out.println("<=============================>");}}运行截图: