activiti 核心API
1.获得一个流程引擎配置对象
//获得一个流程引擎配置对象
ProcessEngine pe = ProcessEngines.getDefaultProcessEngine(); 调用ProcessEngines的getDefaultProceeEngine方法时会自动加载classpath下名为activiti.cfg.xml文件。
2.管理流程定义
RepositoryService repositoryService = processEngine.getRepositoryService();
DeploymentBuilder deployment = repositoryService.createDeployment();
deployment.addClasspathResource("test1.bpmn");
deployment.addClasspathResource("test1.png");
Deployment deploy = deployment.deploy();
System.out.println(deploy.getId() + " " + deploy.getName() + " " + deploy.getDeploymentTime());
往act_re_deployment表中插入一条数据:
往act_re_procdef表中插入一条数据:
往act_ge_bytearray表中插入两条数据:
3.開啟流程返回流程實例
RuntimeService runtimeService = processEngine.getRuntimeService();
String processDefinitionId="test1:1:4";
//開啟流程返回流程實例
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId);
System.out.println(processInstance.getId() + " " + processInstance.getActivityId()); 往act_ru_execution(流程实例)表中插入一条数据:
往act_ru_task (任务)表中插入一条数据:
往act_hi_taskinst (历史任务) 表中插入一条数据:
4.查询任务列表:
TaskService taskService = processEngine.getTaskService();
TaskQuery taskQuery = taskService.createTaskQuery();
taskQuery.taskAssignee("张三");//添加过滤条件,使用办理者查询
taskQuery.orderByTaskId().desc();//添加排序条件
taskQuery.listPage(0, 10);//添加分页条件
List<Task> list = taskQuery.list();//发出sql,查询任务表
for (Task task : list) {
System.out.println(task.getId() + " " + task.getName() + " " + task.getAssignee());
} 5.办理任务:
TaskService taskService = processEngine.getTaskService();
String taskId="104";
taskService.complete(taskId);
张三办理完任务后 ,act_ru_task 表中关于张三的那条任务记录将被删除,走到下个任务节点,到李四审批。
act_ru_task 表中只保存当前在办理的任务,办理完成即被删除。
李四办理完 ,就走到下个节点,表中也会删除李四那条任务记录。
act_hi_taskinst 历史任务表 中会保存每个节点,整个流程办理过程都在这里。