1背景
通常我们在流程节点或者流程线上会触发对应的事件,但是我们这些事件有一部分是和流程强制耦合在一起,比如A流程 需要到结束节点 触发一个事件。去根据一些固定的参数处理,B流程也是一样,但就是参数不一样,之前的做法是写一个个事件去处理,但实际上这些内部逻辑都是一样的,就是参数不一样,导致了代码重复。昨天发现可以根据流程事件的参数来动态处理,也就是说A流程的事件 和 B流程的事件也是一样的,就是参数不一样,笔者用的版本是activiti 5.22.0,高版本也应该是适用的。可能内部实现有不同罢了。
2 解决方案
该事件统一绑定一个字段名,然后根据获取字段的值来做处理,而字段值就是上面说的监听器的参数
监听器的代码和流程图上的字段名进行绑定,获取对应的值来做处理
3 实现原理
1 实际上流程的监听器这边是通过反射去实例化一个对象,在反射实例化对象的过程后把流程图节点上解析出来的FieldDeclaration 的集合也通过反射赋值到我们声明的字段上