工作流加签动态设置加签节点属性

一、需求描述
工作流加签时,想要在单据里面的附件面板上传附件,以及想要修改某个字段的值。
二、思路与方案
通过扩展加签弹窗页面(如下图这个页面)(wf_addsignpage),注册新的页面插件。
如果想要查看节点有哪些属性可以加,可以查询和解析流程资源表T_WF_GEBYTEARRAY的fcontent字段。
重写customEvent事件,在点击加签确认按钮后,触发该事件,构造加签节点的“允许字段被修改”相关属性以及设置哪些字段可修改的数据包,把数据包传递给工作流服务。
注意:自定义决策项,无需开发工作流插件,需要开发的是页面插件。
三、实现过程
1.扩展加签弹窗页面
1.1 开发平台,扩展工作流服务

1.2 扩展加签弹窗页面(标识为:wf_addsignpage)

1.3 注册页面插件

2.查询工作流的审核节点有哪些参数
(1)为了完成设置加签节点的“允许字段被修改”相关属性以及设置哪些字段可修改,我们需要知道决策项的数据结构,可以先在工作流中配置某些想要达到的效果,例如我这里配置了第三级审核节点“允许字段被修改”。

(2)然后通过查询“流程资源”表。我们就能够得知“允许字段被修改”相关属性是如何配置的。sql语句如下:
select fcontent from T_WF_GEBYTEARRAY where fid=
(select fresourceid from T_WF_PROCDEF where fkey='流程编码' and fversion='流程版本号')

(3)上图的fcontent字段以json结构承载,里面记录了这个流程的众多属性,解析这个json,可以看到第三级审核节点我配了哪些属性,如下图:

3.编写插件代码
经过了上述第二步骤,就能得知审核节点的“允许字段被修改”相关属性的key和value,这样我们就能通过重写customEvent事件,为加签节点添加相关属性。注意:这个代码在每个加签节点都会给加签人修改加签属性。代码如下:
import kd.bos.form.events.CustomEventArgs;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.servicehelper.workflow.WorkflowServiceHelper;
import kd.bos.workflow.engine.impl.persistence.entity.task.TaskEntityImpl;
import kd.bos.workflow.taskcenter.plugin.validate.BeforeAddSignConfirmCustomEvent;
import java.util.HashMap;
import java.util.Map;
// 加签,调整加签审核节点参数
public class PropertySignPlugin extends AbstractFormPlugin {
@Override
public void customEvent(CustomEventArgs e) {
if(e != null && BeforeAddSignConfirmCustomEvent.SELECT_ADDSIGNCONFIRM_ISOLATION.equals(e.getKey())
&& e instanceof BeforeAddSignConfirmCustomEvent) {
BeforeAddSignConfirmCustomEvent bac = (BeforeAddSignConfirmCustomEvent) e;
TaskEntityImpl taskInfo = (TaskEntityImpl)WorkflowServiceHelper.findTaskById(bac.getTaskId());
// 所有的加签都会走这个方法,而我们这个案例里面,是针对特定的单据在加签时,修改其属性
// 所以这里要判断一下是否为目标单据,kdec_reqbill3就是本案例的单据标识,我们只针对kdec_reqbill3在加签时,修改其属性
if ("kdec_reqbill3".equals( taskInfo.getDynamicObject().get("billtype") )) {
Map<String, Object> extProps = bac.getExtProps();
extProps.put("billSetting", initPropertyOptions());
工作流加签动态设置加签节点属性
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



