查询流程定义
要启动流程就必须要知道有哪些流程,可能会涉及到权限的问题,所以启动流程前先查询流程定义的信息(流程定义的信息放在act_re_procdef的表中)所以用RepositoryService中的方法查询,可以根据act_re_procdef表的索引去查询
流程定义信息查询
RepositoryServicerepositoryService= processEngine().getRepositoryService();
List<ProcessDefinition>processDefinition=repositoryService.createProcessDefinitionQuery()
.orderByProcessDefinitionVersion().desc().list();
List<ProcessDefinition> processDefinitionLast= repositoryService.createProcessDefinitionQuery()
.orderByProcessDefinitionVersion().desc()//查询所有的数据
.latestVersion().list();//查询所有流程的最新版本
for(ProcessDefinitionpd :processDefinition){
System.out.println("----------------------------------------------");
System.out.println("流程定义名:"+pd.getName());
System.out.println("流程定义版本:"+pd.getVersion());
System.out.println("流程定义KEY:"+pd.getKey());
System.out.println("流程部署Deploymentid:"+pd.getDeploymentId());
System.out.println("流程定义id:"+pd.getId());
}
启动流程
可以根据流程定义ID(startProcessInstanceById)或者KEY(startProcessInstanceByKey)启动。注意:根据流程定义KEY:deploy_classpath,会以最新版本的流程定义启动。在启动流程时可以设置流程的启动人以及流程变量
//启动流程
@Test
public void test_startProcess(){
RepositoryServicerepositoryService = processEngine().getRepositoryService();
RuntimeServiceruntimeService =processEngine().getRuntimeService();
IdentityServiceidentityService =processEngine().getIdentityService();
//设置流程启动人(开始节点的执行人)
identityService.setAuthenticatedUserId("zzz");
//根据流程定义ID
runtimeService.startProcessInstanceById("deploy_classpath:2:2504");
}
//设置流程启动人(开始节点的执行人)
identityService.setAuthenticatedUserId("by_key");
//根据流程定义KEY:deploy_classpath ,会以最新版本的流程定义启动
runtimeService.startProcessInstanceByKey("deploy_classpath");
ID流程启动后各表的变化
KEY流程启动后各表的变化