1.activiti项目
把控制台改成web-项目
在现有的项目中,集成Activiti工作流框架,实现一个“客户报备”流程管理。
为了确保录入的客户信息都是有效的,防止市场人员作假。对于录入的客户信息需要进行报备审批,也就是需要通过部门经理审批。
具体流程如下:
在系统中集成客户报备的流程,包括两个节点:报备申请,经理审批.
2. 集成
①导包
activiti-5.16.4\wars\activiti-rest\WEB-INF\lib\activiti*.jar
mybatis-3.2.5.jar (尽量使用高版本)
joda-time-2.1.jare
②spring配置文件
把Activiti配置文件-applicationContext-activiti.xml集成到Spring
③测试
3,操作
1. 部署 zip
2. 挂起 id has
3. **
4. 显示流程图 src 动态变src的值
easy-ui
datagrid
dialog
4. 启动流程分析
启动位置
启动有两个地方:流程定义管理,业务对象(客户)管理
如果在流程定义实现,没办法知道要报备的是哪个客户?并且报备也算是客户的一个操作,所 以应该在客户管理模块完成。
启动时机
1、业务对象保存时
在客户添加成功时,立即启动报备流程
刚添加数据,就发现错了,需要删除数据,就需要删除流程。
不能委派给别人操作。
2、业务保存后,通过额外的一个操作启动
添加成功后,单独提交一个启动流程按钮,单独操作。
在客户管理列表中,添加一列‘操作’,通过formater,编写’报备’,来完成报备的操作。(先打印,后返回)
formatter(v,r,i)
V表示当前列的值
R 当前行的值
I 索引值
3.启动实现分析
1)业务对象状态发生改变
初始状态----->报备中
2)流程引擎中会根据业务对象找到具体流程定义(processDeifinitionKey)来开启流程。
Customer---->CustomerRecord
LeaveBill----->LeaveBill
一、控制器选择
① 流程相关控制器
开启流程后,需要修改业务对象的状态,需要注入业务对象对应的服务,100中流程就需要注入100个服务,让类变得非常庞大
启动不同流程需要区分业务对象,需要进行传入业务对象类型。
② 业务相关控制器 (采纳)
开启流程后,需要修改业务对象的状态,需要注入业务对象对应的服务,现在 CustomerController实现本来就已经注入CustomerService,无需再注入。
启动不同流程需要区分业务对象,本来就在业务对象Controller实现,不需要区分。