一、概述
Activiti是由Alfresco软件发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,它特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务。
工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。
二、具体应用
- 关键业务流程:订单、报价处理、合同审核、客户电话处理、供应链管理等
- 行政管理类:出差申请、加班申请、请假申请、用车申请、各种办公用品申请、购买申请、日报周报等凡是原来手工流转处理的行政表单。
- 人事管理类:员工培训安排、绩效考评、职位变动处理、员工档案信息管理等。
- 财务相关类:付款请求、应收款处理、日常报销处理、出差报销、预算和计划申请等。
- 客户服务类:客户信息管理、客户投诉、请求处理、售后服务管理等。
- 特殊服务类:ISO系列对应流程、质量管理对应流程、产品数据信息管理、贸易公司报关处理、物流公司货物跟踪处理等各种通过表单逐步手工流转完成的任务均可应用工作流软件自动规范地实施。
三、依赖引入
<!-- activiti依赖包 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.21.0</version>
</dependency>
<!-- 整合Spring使用的Jar包 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>5.21.0</version>
</dependency>
四、activiti的流程
1、部署流程
repositoryService.createDeployment() //创建部署
.name(deployFile.getOriginalFilename()) //需要部署流程名称
.addZipInputStream(new ZipInputStream(deployFile.getInputStream()))//添加ZIP输入流
.deploy();//开始部署
2、启动流程
Map<String,Object> variables=new HashMap<String,Object>();
variables.put("leaveId", leaveId);
// 启动流程
ProcessInstance pi= runtimeService.startProcessInstanceByKey("hello",variables);
// 根据流程实例Id查询任务
Task task=taskService.createTaskQuery().processInstanceId(pi.getProcessInstanceId()).singleResult();
// 完成 学生填写请假单任务
taskService.complete(task.getId());
Leave leave=leaveService.findById(leaveId);
//修改状态
leave.setState("审核中");
leave.setProcessInstanceId(pi.getProcessInstanceId());
// 修改请假单状态
leaveService.updateLeave(leave);