工作流组件

工作流组件是界面层中流程的核心组件,它是流程的界面层与企业工作流应用的桥梁。

工作流组件是一个非可视组件,以下列出组件的属性、方法和事件。

组件属性

  • 数据集:工作流组件关联的业务数据组件
  • 自动关闭页面:执行完流程相关操作(流转,回退,转发,中止,暂停,终止)后,是否自动关闭当前页面。
  • 自动启动流程:是否自动启动流程,启动流程时,默认 sData1 的值是数据集的当前行的主键。
  • 自动保存数据:执行流程相关操作(流转查询,回退查询,转发查询,中止查询,暂停查询,终止查询)之前,是否自动保存业务数据。
  • 自动过滤数据:是否自动为数据集添加相关的过虑条件(数据集的主键等于 sData1)。
  • 启动时机:保存:表示新增时保存启动流程;流转:表示第一次流转时先启动流程,再流转,适用于需要保存草稿的场景
  • 审批意见:将页面数据组件中的数据作为审批意见
  • 组织对话框标题:定义流转对话框中弹出的组织对话框的标题
  • 自动显示流程设置:显示“流程设置”用于设置后续环节的执行者
  • 流程设置中执行人允许为空:不允许为空时,“流程设置”中后续环节,每个环节的执行人都必填

组件方法

组件提供方法:启动流程、流转查询、流转、回退查询、回退、终止查询、终止、暂停查询、暂停、转发查询、转发、批量流转和回收任务等

调用流转查询,示例如下

let p = this.comp("process1"); //process1 是工作流组件的 id
p.advanceQuery(); //流转查询

获取任务

获取当前任务 ID

        方法:
            getTask()
        返回:
            String

启动、流转

启动流程

        方法:
            start(process,name,data,formUrl,options)
        参数:
            process 流程编码,可通过代码实现一个页面对应多个流程
            name 流程实例名称
            data 流程关联的业务数据
            formUrl 表单地址
            options 可选参数,JSON 格式, 有以下两个参数
                firstActivityExecutor: 表示首环节的执行者,可以不指定, 这时默认就是当前人员成员;
                vars: 变量
                格式如下:
                    {
                        "firstActivityExecutor": {String},
                        "vars": {var1: ""} 
                    }
        返回
            Promise

流转查询

        方法:
            advanceQuery(task,vars)
        参数:
            task 任务标识, 为空时使用默认任务
            vars 变量
        返回 
            Promise

流转

        方法:
            advance(task, processControl, vars)
        参数:
            task 任务标识, 为空时使用默认任务
            processControl 流程信息,json 格式的数据
            vars 变量
        返回
            Promise

批量流转

        方法:
            batchAdvanceQuery(task,vars)
        参数:
            task 任务标识, 为空时使用默认任务
            vars 变量
        返回 
            Promise

启动并流转查询

        方法:
            startAdvanceQuery(process,name,data,formUrl,options)
        参数:
            process 流程编码
            name 流程实例名称
            data 流程关联的业务数据
            formUrl 表单地址
            options 可选参数,JSON 格式, 有以下两个参数 
                firstActivityExecutor: 表示首环节的执行者,可以不指定, 这时默认就是当前人员成员;
                vars: 变量
                格式如下:
                    {
                        "firstActivityExecutor": {String},
                        "vars": {var1: ""} 
                    }
        返回
            Promise

显示流程图、流程记录

显示流程图

        方法:
            showChart(task, process, data)
        参数:
            task 任务标识(可选参数)
            process 业务流程编码(可选参数)
            data 业务数据标识(可选参数)
            允许下面3种情况
                process, data, task 都没有指定, 默认使用当前上下文中的 task 和 process
                只指定 process, data 
                只指定 task
        返回 
            void

显示流程记录对话框

        方法:
            showRecord(task, process, data)
        参数:
            task 任务标识(可选参数)
            process 业务流程编码(可选参数)
            data 业务数据标识(可选参数)
            允许下面3种情况
                process, data, task 都没有指定, 默认使用当前上下文中的 task 和 process
                只指定 process, data 
                只指定 task
        返回 
            void

批量流转

工作流组件提供批量流转操作

用平台提供的流程页面模版生成的流程表单页面,在更多中默认就有批量流转。不是通过流程页面模版创建的页面,可以自行添加批流转按钮,选择流程组件提供的“批量流转”操作

当以有多个相同任务处理人员身份登录系统,

在待办任务中打开需要处理的流程表单

在设置了批量处理表单回写的字段中填入值,

表单填写后,点击批量流转按钮,即可打开批量处理任务页面,在此页面中将显示同一属性的审批单,勾选审批单,点击确认流转后,即可实现批量任务处理及业务数据回写操作。

在已办任务中,打开可查看批量勾选处理的审批单及数据回写内容

其它流程动作方法

回退查询

        方法:
            backQuery(task,vars)
        参数:
            task 任务标识, 为空时使用默认任务
            vars 变量
        返回
            Promise

回退

        方法:
            back(task, processControl, vars)
        参数:
            task  任务标识, 为空时使用默认任务
            processControl  回退信息,json格式的数据
            vars 变量
        返回 
            Promise

暂停查询

        方法:
            suspendQuery(task, vars)
        参数:
            task 任务标识, 为空时使用默认任务
            vars  变量
        返回 
            Promise

暂停

        方法:
            suspend(task, processControl, vars)
        参考:
            task 任务标识, 为空时使用默认任务
            processControl 暂停信息,json格式的数据
            vars  变量
        返回
            Promise

唤醒流程

        方法:
            resume(task, vars)
        参数:
            task 任务标识, 为空时使用默认任务
            vars 变量
        返回
            Promise

终止查询

        方法:
            abortQuery(task, vars)
        参数:
            task 任务标识, 为空时使用默认任务
            vars 变量
        返回 
            Promise

终止

        方法:
            abort(task, processControl, vars)
        参数:
            task 任务标识, 为空时使用默认任务
            processControl 终止信息,json格式的数据
            vars 变量
        返回 
            Promise

特送查询

        方法:
            specialQuery(task, vars)
        参数:
            task 任务标识, 为空时使用默认任务
            vars 变量
        返回 
            Promise

特送

        方法:
            special(task, processControl, vars)
        参数:
            task 任务标识, 为空时使用默认任务
            processControl 特送信息,json格式的数据
            vars 变量
        返回 
            Promise

转发查询

        方法:
            transferQuery(task, vars)
        转发查询
        参数:
            task 任务标识, 为空时使用默认任务
            vars 变量
        返回 
            Promise

转发

        方法:
            transfer(task, processControl, vars)
        参数:
            task 任务标识, 为空时使用默认任务
            processControl 转发信息,json格式的数据
            vars 变量
        返回 
            Promise

重启查询

        方法:
            restartQuery(task, restartMode)
        参数:
            task 任务标识
            restartMode: start 表示流程发起人可以重启流程, lastActivityExecutor 表示流程最后一个环节的执行者可以重启流程
        返回 
            Promise 
        示例
            import taskUtil from "$UI/comp/wfmui/components/wfmui/js/taskUtil";
            taskUtil.queryFinishPIByData(id).then((result)=>{
                if (result.length > 0){
                    wfmui.restartQuery(result[0].SA_Task);
                }else{
                    alert("没有找到结束的流程实例");
                }
            });

重启

        方法:
            restart(task, processControl, vars)
        参数:
            task 任务标识, 为空时使用默认任务
            processControl 转发信息,json 格式的数据
            vars 变量
        返回 
            Promise

回收任务

        方法:
            withdrawTask(task, vars)
        参数:
            task 任务标识, 为空时使用默认任务
            vars 变量
        返回
            Promise

催办任务

        方法:
            remindTask(task)
        参数:
            task: 任务标识
        返回 
            Promise

流程变量

获取流程变量

        方法:
            queryFlowVars(task)
        参数:
            task: 任务标识
        返回 
            Promise,执行后返回 JSON 格式,key 是变量名,value 是变量值

获取任务变量

        方法:
            queryTaskVars(task)
        参数:
            task: 任务标识
        返回 
            Promise 执行后返回JSON 格式,key 是变量名,value 是变量值

更新流程变量

        方法:
            updateFlowVars(task, vars)
        参数:
            task:任务标识
            vars:JSON 格式,key 是变量名,value 是变量值
        返回 
            Promise

更新任务变量

        方法:
            updateTaskVars(task, vars)
        参数:
            task:任务标识
            vars:JSON 格式,key 是变量名,value 是变量值
        返回 
            Promise

业务主键

获取流程上下文中的业务主键

        方法:
            getBusinessKey()
        返回:
            String

获取流程上下文中的业务主键名称

        方法:
            getBusinessLabel()
        返回
            String

流程设置

显示流程设置对话框

        方法:
            updateProcessSetting(config)
        参数:
            config:JSON 格式如下
                {
                    task: 任务标识
                }
        返回 
            Promise

根据流程设置启动流程

        方法:
            startBySetting(config)
        参数:
            config:JSON 格式如下
                {
                    process:流程标识, 
                    name:流程实例名称, 
                    data:业务数据主键, 
                    formUrl:表单地址, 
                    options:可选参数,JSON 格式, 有以下两个参数
                        firstActivityExecutor: 表示首环节的执行者,可以不指定, 这时默认就是当前人员成员;
                        vars: 变量
                        格式如下:
                            {
                                "firstActivityExecutor": {String},
                                "vars": {var1: ""} 
                            }, 
                    force:是否允许流程重复启动
                }
        返回 
            Promise

组件事件

工作流组件的每一个动作(包括:启动、流转查询、流转、启动流转查询、回退查询、回退、加签查询、加签、转发查询、转发、特送查询、特送、终止查询、终止、重启查询、重启、更新流程配置),提供相应的三个事件:执行前事件、执行成功事件和执行失败事件

  • 查询类的流程动作不启动事务;
  • 执行类的流程动作启动事务,其中,执行前事件与流程动作处于同一个事务中,执行成功事件和执行失败事件在事务之后。

另外还提供两个关于流程确认框的事件:打开对话框前、对话框关闭

特别说明

  • 启动时机设置为“流转时”,第一次流转后不触发流转成功事件,触发启动成功事件
  • 在流程启动前事件中,设置页面参数 this.parmas.process,就会启动这个流程
  • 流转查询前、流转查询成功、流转前、流转成功等事件支持调用异步请求

启动流程事件

启动流程之前

        event结构:
                {
                    "source":组件的js对象,
                    "process":流程标识,
                    "relations":任务信息,json格式:
                        {
                            "列名":"值"
                        }
                    "vars": 变量,
                    "executor":首环节的执行者,
                    "cancel":是否取消后续操作,默认值为false
                }

启动流程成功

        event结构:
                {
                    "source":组件的js对象,
                    "process":流程标识,
                    "relations":任务信息,json格式:
                        {
                            "列名":"值"
                        }
                    "executor":首环节的执行者,
                    "vars": 变量,
                    "cancel":是否取消后续操作,默认值为false, 
                    "pi":流程实例标识, 
                    "task":活动环节对应的任务标识
                }

启动流程失败

        event结构:
                {
                    "source":组件的js对象,
                    "process":流程标识,
                    "relations":任务信息,json格式:
                        {
                            "列名":"值"
                        }
                    "executor":首环节的执行者,
                    "vars": 变量,
                    "cancel":是否取消后续操作,默认值为false, 
                    "msg": 错误消息,
                    "error": 异常对象 
                }

在事件中,使用控制台输出 event 参数,如下图所示

1725354973117

1723453978383

流转查询事件

查询前事件

        event结构:
                {
                    "source":组件的js对象,
                    "task":任务标识,
                    "vars": 变量,
                    "promises": 同时执行的异步请求
                    "cancel":是否取消后续操作,默认值为false
                }

查询成功事件

        event结构:
                {
                    "source":组件的js对象,
                    "task":任务标识,
                    "processControl":流程信息,
                    "vars": 变量,
                    "promises": 同时执行的异步请求
                    "cancel":是否取消后续操作,默认值为false
                }

查询失败

        event结构:
                {
                    "source":组件的js对象,
                    "task":任务标识,
                    "vars": 变量,
                    "msg": 错误消息,
                    "error": 异常对象 
                }

在事件中,使用控制台输出 event 参数,如下图所示

1725355036289

案例:在界面中,流转之前检查业务数据是否符合业务要求(比如金额必须大于100),否则弹出提示

    onWfmui1AdvanceQueryBefore(event){
        let data = this.comp("mainData"); //mainData是业务数据关联的bizData的id
        let fAmount = data.getValue("fAmount"); //fAmount是金额字段
        if (fAmout < 100){
            event.cancel = true; //取消后续的流程动作
            alert("订单的金额必须大小100");
        }
    }

流转事件

执行前事件

        event结构:
                {
                    "source":组件的js对象,
                    "task":任务标识,
                    "processControl":流程信息,
                    "vars": 变量,
                    "promises": 同时执行的异步请求
                    "cancel":是否取消后续操作,默认值为false
                }

执行成功事件

        event结构:
                {
                    "source":组件的js对象,
                    "task":任务标识,
                    "processControl":流程信息,
                    "vars": 变量,
                    "promises": 同时执行的异步请求
                }

执行失败事件

        event结构:
                {
                    "source":组件的js对象,
                    "task":任务标识,
                    "processControl":流程信息,
                    "vars": 变量,
                    "msg": 错误消息,
                    "error": 异常对象 
                }

在事件中,使用控制台输出 event 参数,如下图所示

1725355063679

案例:在流转成功事件中获取流程是否结束,代码如下

    event.processControl.toItems[0].data['@is-end']==="true"

对话框事件

在查询类动作成功后,在显示流程确认框之前,触发“打开对话框前”事件,通常用于修改 ProcessControl,以达到改变流程确认框内容的目的。具体案例参考《流程常用开发技巧》中的“修改或签默认选中的环节”和“修改会签显示的环节顺序”

在事件中,使用控制台输出 event 参数,如下图所示

1725355625426

在流程确认框关闭之后,在执行类动作执行之前,触发“对话框关闭”事件,通常用于修改 ProcessControl,在执行类动作执行时使用

在事件中,使用控制台输出 event 参数,如下图所示

1725355590925

更新流程设置事件

调用流程设置方法后,弹出流程设置对话框,关闭流程设置对话框后,触发更新流程设置事件

在事件中,使用控制台输出 event 参数,如下图所示

1725356326498

支持调用异步请求

流程组件的相关事件支持异步调用,即可以在执行数据集保存、服务请求等异步请求后,再执行流程相关的操作(例如关闭页面)

支持的事件有流转查询前、流转查询成功、流转前、流转成功等事件,在事件中件支持了 event.promises,把需要异步执行返回的 promise 放到 event.promises 中,就可以控制异步请求完成后,再执行流程相关的操作。

具体可以参考如下,在流转成功事件中同时调用数据集的保存和服务请求,都执行后再执行默认的流转成功后关闭页面的操作,如果执行的时间较长可以自行添加遮罩层等。

onWfmuiAdvanceSuccess = async (event) => {
    let restData0 = this.comp("restData0");
    let mainData = this.comp("mainData");
    let serviceRequest0 = this.comp("serviceRequest0");
    await restData0.newData({defaultValues : [{
        name : mainData.getValue("name")+"流程成功",
        frq : wx.Date.toString(new Date(), wx.Date.STANDART_FORMAT_SHOT),
        frqsj : wx.Date.toString(new Date(), wx.Date.STANDART_FORMAT)
    }]});
    let dataSave = new Promise((resolve,reject) =>{
        restData0.saveData({"onSuccess":function(){
            resolve();
        },"onError":function(){
            reject();
        }});
    })
    let serviceSend = new Promise((resolve,reject) =>{
        serviceRequest0.send().then(function(){
            resolve();
        },function(){
            reject();
        });
    })
    event.promises.push(dataSave);
    event.promises.push(serviceSend);
}

在流转查询前、流转前等相关事件中,调用异步请求时,在成功或者失败中要中止流程默认的操作,可以在 resolve(); 或者 reject(); 前调用 event.cancel = true;

results matching ""

    No results matching ""