电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

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

来源:金蝶云社区作者:金蝶2024-09-235

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

一、需求描述

工作流加签时,想要在单据里面的附件面板上传附件,以及想要修改某个字段的值。


二、思路与方案

  1. 通过扩展加签弹窗页面(如下图这个页面)(wf_addsignpage),注册新的页面插件。

  2. 如果想要查看节点有哪些属性可以加,可以查询和解析流程资源表T_WF_GEBYTEARRAY的fcontent字段。

  3. 重写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());
       

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

一、需求描述工作流加签时,想要在单据里面的附件面板上传附件,以及想要修改某个字段的值。二、思路与方案通过扩展加签弹窗页面(如下图这...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信