1、查询流程定义
@Test
public void findProcessDefinition(){
ProcessDefinitionQuery processDefinitionQuery = processEngine.getRepositoryService().createProcessDefinitionQuery();
/*指定查询条件,where条件,任选一 */
processDefinitionQuery.deploymentId("1");//使用部署对象ID查询
processDefinitionQuery.processDefinitionId("helloWorld:1:4");//使用流程定义ID查询
processDefinitionQuery.processDefinitionKey("helloWorld");//使用流程定义key查询
processDefinitionQuery.processDefinitionName("helloWorldProcess");//使用流程定义名称查询
processDefinitionQuery.processDefinitionNameLike("hello");//使用流程定义名称模糊查询
/*排序,可组合*/
processDefinitionQuery.orderByDeploymentId().desc();//根据部署ID降序
processDefinitionQuery.orderByProcessDefinitionVersion().desc();//根据定义版本降序,最新版在前
processDefinitionQuery.orderByProcessDefinitionName().asc();//更具定义名升序,符合习惯
/*返回结果集,任取一*/
List<ProcessDefinition> list = processDefinitionQuery.list();//多个结果集
ProcessDefinition processDefinition = processDefinitionQuery.singleResult();//唯一结果集
long num = processDefinitionQuery.count();//结果集数量
int firstResult = 0;//首个记录下标
int maxResults = 15;//每页记录数量
List<ProcessDefinition> pageList = processDefinitionQuery.listPage(firstResult,maxResults );//分页结果集
}
2、删除流程定义
@Test
public void deleteProcessDefinition(){
String deploymentId = "17501";
RepositoryService repositoryService = processEngine.getRepositoryService();
/* 非级联删除,若有对应的流程启动,则报错*/
repositoryService.deleteDeployment(deploymentId);
/*级联删除,同时删除相关流程实例等信息*/
repositoryService.deleteDeployment(deploymentId, true);
}
3、查看流程图
// 查看流程图
@Test
public void getPng() {
String deploymentId = "1";
RepositoryService repositoryService = processEngine.getRepositoryService();
List<String> list = repositoryService.getDeploymentResourceNames(deploymentId);
String resourceName = null;// 保存资源文件名
for (String name : list) {
if (name.indexOf(".png") > 0) {
resourceName = name;
break;
}
}
if (null != resourceName) {
InputStream inputStream = repositoryService.getResourceAsStream(deploymentId, resourceName);
try {
String fileName = resourceName.substring(resourceName.lastIndexOf('/') + 1);
String path = "D:/";
File file = new File(path + fileName);
if (file.exists()) {
file.delete();// 若存在同名文件,先删除后创建
}
file.createNewFile();
FileOutputStream fileOutputStream = new FileOutputStream(file);
byte[] b = new byte[2 * 1024];
int len = 0;
while ((len = inputStream.read(b)) > 0) {
fileOutputStream.write(b, 0, len);
}
fileOutputStream.flush();
fileOutputStream.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
4、判断流程状态
@Test
public void isInstanceEnd() {
String processInstanceId = "2501";
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
if(null!=processInstance){
System.out.println("流程未结束");
}else{
System.out.println("流程结束");
}
fail("Not yet implemented");
}
5、查询历史任务
@Test
public void getHistoryTaskByUserId(){
String userId = "A";
HistoricTaskInstanceQuery historicTaskInstanceQuery = processEngine.getHistoryService().createHistoricTaskInstanceQuery();//创建历史任务实例查询
List<HistoricTaskInstance> list = historicTaskInstanceQuery.taskAssignee(userId).list();//根据流程指派人查询
if(null!=list && list.size()>0){
for(HistoricTaskInstance historicTaskInstance:list){
System.out.println("任务ID:"+historicTaskInstance.getId());
System.out.println("任务名称:"+historicTaskInstance.getName());
System.out.println("任务创建时间:"+historicTaskInstance.getCreateTime());//创建时间为前一任务结束后
System.out.println("任务开始时间:"+historicTaskInstance.getStartTime());//开始时间为任务接收后
System.out.println("任务结束时间:"+historicTaskInstance.getEndTime());
System.out.println("任务持续时间:"+historicTaskInstance.getDurationInMillis());
System.out.println("任务办理人:"+historicTaskInstance.getAssignee());
}
}
}