功能说明:类似钉钉流程设计里面的审批节点表单字段权限,流程设计可对节点上的字段做权限控制,比如流程节点A->B->C-D,表单字段F1、F2,B节点的审批人可对F2节点进行编辑,C节点的审批人不可见F3字段,适用于审批过程中控制审批人拥有不同字段权限的情况。
本人并未实际具体实现此功能,只是写下自己考虑实现该功能的大致实现思路,具体细节还需要打磨,以供交流,欢迎提出更优方案;
流程设计-配置A节点的表单操作权限
审批中,审批人可编辑表单:
具体实现思路:
- 1.基于系列文章里面的《springboot+activiti7+react实现模仿钉钉功能的审批流(五、实现类似钉钉的流程设计器)》,可将表单的字段权限存到bpmn节点的扩展属性上面,结构可以类似这种:
比如表单有F1、F2、F3这3个字段,实现B节点的审批人可对F2节点进行编辑,不可见F3字段,可在用户审批(userTask)节点C上加2个扩展属性:
1.可编辑字段list扩展属性:
<activiti:field name="enableEditField">
<activiti:string><![CDATA[F2]]></activiti:string>
</activiti:field>
2.隐藏字段list扩展属性:
<activiti:field name="hideField">
<activiti:string><![CDATA[F3]]></activiti:string>
</activiti:field>
备注:这里不需要只读字段list扩展属性,因为字段默认就是只读;
- 2.后端啥都不用动,前端在展示审批详情的时候,渲染表单,读取xml里面的这2个属性,根据属性转为antd组件的属性,就可实现表单字段的可编辑、隐藏;
- 3.如果有字段的编辑权限,审批人修改了表单数据的,前端提交审批的时候将修改的表单数据存流程变量variables里面,后续的节点就可以查看到新的表单数据了;
备注:根据上一篇《springboot+activiti7+react实现模仿钉钉功能的审批流(十四、发起流程自动预判流程走向)》的内容,审批人如果修改了表单字段,预判的流程走向可能会变化,比如请假2天,修改为3天,网关的条件判断就会受影响,所以上一篇里面预判的流程走向,并不是固定的。