activities工作流常用api。
一、基本操作
一、基本操作
①.流程部署API
//方式一
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获得一个部署构建器对象,用于加载流程定义文件(test1.bpmn,test.png)完成流程定义的部署
DeploymentBuilder builder = processEngine.getRepositoryService().createDeployment();
// 加载流程定义文件
builder.addClasspathResource("first.bpmn");
builder.addClasspathResource("first.png");
// 部署流程定义
Deployment deployment = builder.deploy();
//方式二
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获得一个部署构建器对象
DeploymentBuilder builder = processEngine.getRepositoryService().createDeployment();
ZipInputStream zipInputStream =
new ZipInputStream(this.getClass().getClassLoader().getResourceAsStream("process.zip"));
builder.addZipInputStream(zipInputStream);
Deployment deployment = deploymentBuilder.deploy();
②.查询流程定义列表
// 流程定义查询对象,用于查询表act_re_procdef
ProcessDefinitionQuery query = processEngine.getRepositoryService().createProcessDefinitionQuery();
//processEngine.getRepositoryService().createDeploymentQuery().list(); 查询部署流程
//processEngine.getRuntimeService().createProcessInstanceQuery().list();
//processEngine.getTaskService().createTaskQuery().list();
// 添加过滤条件
query.processDefinitionKey("firstProc");
// 添加排序条件
query.orderByProcessDefinitionVersion().desc();
// 添加分页查询
query.listPage(0, 10);
List<ProcessDefinition> list = query.list();
③.根据流程定义的id启动一个流程实例
String processDefinitionId = "firstProc:4:304"; //流程定义Id
//根据流程定义id启动流程实例
ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceById(processDefinitionId);
//方式二
//根据流程定义的key启动流程--存在多版本时,启动最新版本的流程
//ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey("key");
System.out.println(processInstance.getId());
④.查询任务列表
TaskQuery query = processEngine.getTaskService().createTaskQuery();
String assignee = "登陆人"; //查询登陆人的待办列表
query.taskAssignee(assignee);
List<Task> list = query.list();
⑤.办理任务API
String taskId= "802";
processEngine.getTaskService().complete(taskId);
⑥.删除流程部署信息
String deploymentId = "deploymentId";
// processEngine.getRepositoryService().deleteDeployment(deploymentId);
processEngine.getRepositoryService().deleteDeployment(deploymentId,true);//会删除正在流转的流程信息
⑦.删除流程定义信息(通过删除部署信息达到删除流程定义的目的)
String deploymentId = "deploymentId";
// processEngine.getRepositoryService().deleteDeployment(deploymentId);
processEngine.getRepositoryService().deleteDeployment(deploymentId,true);//会删除正在流转的流程信息
⑧.查询一次部署对应的流程定义文件名称和对应的输入流(bpmn png)
String deploymentId = "101";
List<String> names = processEngine.getRepositoryService().getDeploymentResourceNames(deploymentId);
for (String name : names) {
InputStream in = processEngine.getRepositoryService().getResourceAsStream(deploymentId, name);
FileUtils.copyInputStreamToFile(in, new File("e:\\" + name));//需要用common-io.jar包
in.close();
}
⑨.获取png图片的输入流
String processDefinitionId = "processDefinitionId";//流程定义的id
InputStream pngInputStream = processEngine.getRepositoryService().getProcessDiagram(processDefinitionId);
FileUtils.copyInputStreamToFile(pngInputStream, new File("d:\\name.png"));
⑩.查询流程实例列表,查询act_ru_execution表
ProcessInstanceQuery query = processEngine.getRuntimeService().createProcessInstanceQuery();
List<ProcessInstance> list = query.list();
//getActivityId流程活动的id,即流程当前在那个节点
for (ProcessInstance pi : list) {
System.out.println(pi.getId() + " " + pi.getActivityId());
}
二、操作深入
①.结束流程实例,操作的表act_ru_execution act_ru_task
String processInstanceId = "101";
processEngine.getRuntimeService().deleteProcessInstance(processInstanceId , "我愿意");
②.办理任务
String taskId = "任务id";
processEngine.getTaskService().complete(taskId);
//直接将流程向下执行一步
//String executionId = "2701";//流程实例id
//processEngine.getRuntimeService().signal(executionId);
③.查询最新版本的流程定义列表
ProcessDefinitionQuery query = processEngine.getRepositoryService().createProcessDefinitionQuery();
query.orderByProcessDefinitionVersion().asc();
List<ProcessDefinition> list = query.list();
三、activities services的对应关系
RepositoryService----操作静态的资源(流程定义,bpmn、png)
RuntimeService-----操作流程实例(启动流程实例、查询流程实例、结束流程实例)
TaskService-----操作任务(查询任务、办理任务)
HistoryService----操作历史数据