启动流程分析
启动位置
启动有两个地方:流程定义管理,业务对象(客户)管理
如果在流程定义实现,没办法知道要报备的是哪个客户?并且报备也算是客户的一个操作,所 以应该在客户管理模块完成。
启动时机
1、业务对象保存时
在客户添加成功时,立即启动报备流程
刚添加数据,就发现错了,需要删除数据,就需要删除流程。
不能委派给别人操作。
2、业务保存后,通过额外的一个操作启动
添加成功后,单独提交一个启动流程按钮,单独操作。
在客户管理列表中,添加一列‘操作’,通过formater,编写’报备’,来完成报备的操作。(先打印,后返回)
formatter(v,r,i)
V表示当前列的值
R 当前行的值
I 索引值
启动实现分析
当点击了“报备”连接后,需要后台来完成报备的操作,并把结果返回给前台。那我们对于报备请求应该交给那个Controller实现?并且里面逻辑怎么实现呢?
要想选择Controller,先得搞清楚,当我们点击“报备”时会完成哪些操作。或者叫做流程启动会有什么变化?
1)业务对象状态发生改变
初始状态----->报备中
2)流程引擎中会根据业务对象找到具体流程定义(processDeifinitionKey)来开启流程。
Customer---->CustomerRecord
LeaveBill----->LeaveBill
一、控制器选择
① 流程相关控制器
开启流程后,需要修改业务对象的状态,需要注入业务对象对应的服务,100中流程就需要注入100个服务,让类变得非常庞大
启动不同流程需要区分业务对象,需要进行传入业务对象类型。
② 业务相关控制器 (采纳)
开启流程后,需要修改业务对象的状态,需要注入业务对象对应的服务,现在 CustomerController实现本来就已经注入CustomerService,无需再注入。
启动不同流程需要区