activiti入门
1、部署流 @Test
public void deployment(){
// 获取ProcessEngine对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取RepositoryService对象,部署流程图
RepositoryService repositoryService = processEngine.getRepositoryService();
// 部署
Deployment deploy = repositoryService.createDeployment()
.addClasspathResource("processes/demo.bpmn") // 加载流程文件
.addClasspathResource("processes/demo.png") // 加载流程图
.name("demo") // 设置流程名称
.key("demoKey") // 设置流程key
.deploy();
System.out.println("流程名称:" + deploy.getName());
System.out.println("流程ID:" + deploy.getId());
System.out.println("流程key:" + deploy.getKey());
}
2、启动流程实例
在启动流程实例时,可以通过map的方式设置流程变量,在启动流程实例时设置的变量的作用域是一个流程实例(ProcessInstance),在整个流程中都可以使用该变量
@Test
public void startInstance(){
// 获取ProcessEngine对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取RuntimeService对象,通过RuntimeService创建流程实例
RuntimeService runtimeService = processEngine.getRuntimeService();
/**
* 通过map的方式定义流程变量,在网关中就可以使用该变量
* key:变量名
* value:变量值
*/
// Map<String, Object> variables = new HashMap<>();
// Integer day = 5;
// variables.put("num", day);
// 创建流程实例
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("demo");
// 创建流程实例时将流程变量添加到流程实例中
// ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("demo", variables);
System.out.println("流程实例ID:" + processInstance.getId());
}
3、查看代办任务
@Test
public void getTask(){
// 获取ProcessEngine对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取TaskService对象,用来操作任务
TaskService taskService = processEngine.getTaskService();
// assignee:办理人
List<Task> list = taskService.createTaskQuery().taskAssignee("sundebin").processDefinitionKey("demo").list();
System.err.println(list.size());
list.forEach(task -> {
System.out.println("任务名称:" + task.getName());
System.out.println("任务执行人:" + task.getAssignee());
System.out.println("任务ID:" + task.getId());
System.out.println("流程实例ID:" + task.getProcessInstanceId());
});
}
4、处理任务
_ru_task存储流程运行时节点数据,每处理一次任务都会更新该表的数据,可以通过该表查看当前流程的运行状态,当流程结束时,会清空该表中有关当前流程的所有记录
流程结束可以通过_hi历史表中的数据查看流程信息
@Test
public void completeTask(){
// 获取ProcessEngine
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取一个TaskService对象
TaskService taskService = processEngine.getTaskService();
// 处理任务
taskService.complete("40003");
}
5、查看历史任务
@Test
public void getHistory(){
// 获取ProcessEngine对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取HistoryService接口
HistoryService historyService = processEngine.getHistoryService();
// 查看历史任务
HistoricActivityInstanceQuery historQuery = historyService.createHistoricActivityInstanceQuery();
// 获取指定流程实例的任务
historQuery.processInstanceId("3001");
// 获取任务列表
List<HistoricActivityInstance> list = historQuery.list();
list.forEach(history -> {
System.out.println("任务节点ID:" + history.getActivityId());
System.out.println("任务节点名称:" + history.getActivityName());
System.out.println("流程实例信息:" + history.getProcessInstanceId());
System.out.println("流程实例信息:" + history.getProcessDefinitionId());
System.out.println("==========================================");
});
}
浙公网安备 33010602011771号