Activiti
工作流引擎
按照预定义规则(BPMN规范)进行部署, 就可以将业务和节点流程实现分离
通过框架实现节点的自动流转
BPMN
BPMN(Business Process Model And Notation),业务流程模型和符号,是由BPMI(Business Process Management Initiative)开发的一套的业务流程建模符号,使用BPMN提供的符号可以创建业务流程。
在Activiti的工作流流程中通过XML配置文件表示业务流程
Activiti使用步骤
1.集成activiti和业务环境
2.通过activiti建模工具定义业务流程构建.bpmn流程文件
3.通过activiti提供的api向activiti中部署.bpmn文件
4.每次业务流程开始启动一个对应的流程实例,每个流程实例的执行互不影响
5.查询待办任务和处理待办任务都可以通过activiti直接进行处理
6.流程结束
Activiti调用
创建部署
//创建engine对象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //创建repositoryService对象 RepositoryService repositoryService = processEngine.getRepositoryService(); //进行部署 Deployment deployment = repositoryService.createDeployment() .addClasspathResource("bpmn/leave.bpmn") //bpmn配置文件 .addClasspathResource("bpmn/leave.png") //bpmn对应流程图 .name("流程名") .deploy();
启动流程
//创建engine对象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //创建runtimeService对象 RuntimeService runtimeService = processEngine.getRuntimeService(); //根据流程定义的key启动流程实例,这个key是在定义bpmn的时候设置的 ProcessInstance instance = runtimeService. startProcessInstanceByKey("leaveProcess");
任务查询
//任务负责人 String assignee = "cfjg"; //创建engine对象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //创建taskService对象 TaskService taskService = processEngine.getTaskService(); //获取任务集合 List<Task> taskList = taskService.createTaskQuery() //指定流程key .processDefinitionKey("leaveProcess") //指定处理人 .taskAssignee(assignee) //查询集合 .list();
任务处理
//任务负责人 String assignee = "cfjg"; //创建engine对象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //创建taskService对象 TaskService taskService = processEngine.getTaskService(); //获取任务集合 List<Task> taskList = taskService.createTaskQuery() //指定流程key .processDefinitionKey("leaveProcess") //指定处理人 .taskAssignee(assignee) //查询集合 .list();
任务处理
//任务负责人 String assignee = "cfjg"; //创建engine对象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //创建taskService对象 TaskService taskService = processEngine.getTaskService(); //获取任务集合 List<Task> taskList = taskService.createTaskQuery() //指定流程key .processDefinitionKey("leaveProcess") //指定处理人 .taskAssignee(assignee) //查询集合 .list();
任务处理
//任务负责人 String assignee = "cfjg"; //创建engine对象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //创建taskService对象 TaskService taskService = processEngine.getTaskService(); //获取任务集合 List<Task> taskList = taskService.createTaskQuery() //指定流程key .processDefinitionKey("leaveProcess") //指定处理人 .taskAssignee(assignee) //查询集合 .list();
任务处理
//任务负责人 String assignee = "cfjg"; //创建engine对象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //创建taskService对象 TaskService taskService = processEngine.getTaskService(); //获取任务集合 List<Task> taskList = taskService.createTaskQuery() //指定流程key .processDefinitionKey("leaveProcess") //指定处理人 .taskAssignee(assignee) //查询集合 .list(); //在查询的基础上,对查询到的结果进行处理 for(Task task:taskList){ //添加处理意见 taskService.addComment(task.getId(),task.getProcessInstanceId(),task.getName()+"审批通过"); //完成处理 taskService.complete(task.getId()); }
历史审批
//任务负责人 String assignee = "cfjg"; //创建engine对象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //创建historyService对象 HistoryService historyService = processEngine.getHistoryService(); //获取历史审核信息 List<HistoricActivityInstance> list = historyService .createHistoricActivityInstanceQuery() .activityType("userTask")//只获取用户任务 .processInstanceId(processInstanceId) .taskAssignee(taskAssignee) .finished() .list();