2.4.1. 流程节点

通过脚本设置人工节点审批人

位置 触发时机 可以获取的环境变量(参数) 返回值
流程>审批人设置>通过>脚本 流程提交时触发 WebUserCurrentDocument 类型:用户ID、用户对象、用户ID的集合、用户对象的集合含义:审批人或审批人集合

示例代码:

/*根据当前文档“部门”控件值,将角色为“部门负责人”的用户设置为审批人*/
(function () {
    var roleid = getRoleIdByName("部门负责人");
    var dptid = getItemValueAsString("部门");
    var users = getUsersByDptIdAndRoleId(dptid, roleid);
    if (users != null) {
        for (var iter = users.iterator(); iter.hasNext();) {
            var user = iter.next();
            var idd = user.getId();
            var userVO = getUserById(idd);
            userlist.add(userVO);
        }
    }
    return userlist;
})()

通过脚本设置人工节点处理时限

位置 触发时机 可以获取的环境变量(参数) 返回值
流程>审批时限设置>勾选开启审批时限设置>脚本 设置超时时间,超时自动提交到下一节点 WebUserCurrentDocument 类型:XX日XX小时XX分钟含义:时长

示例代码:

/*根据当前文档中“日期”控件指定时间设置为审批时限*/
(function () {
    var starttime = getItemValueAsDate("日期");
    var day = getDay(getToday());
    if (starttime != null) {
        day = getDay(starttime);  //取日期天
    }
    return day;
})()

通过脚本设置人工节点协办人

位置 触发时机 可以获取的环境变量(参数) 返回值
流程-基本信息-允许加签协办人 点击流程协办按钮时触发 WebUserCurrentDocument 类型:用户ID、用户对象、用户ID的集合、用户对象的集合含义:协办人或协办人人集合

示例代码:

/*根据当前文档“部门”控件值,将角色为“部门负责人”的用户设置为协办人*/
(function () {
    var roleid = getRoleIdByName("部门负责人");
    var dptid = getItemValueAsString("部门");
    var users = getUsersByDptIdAndRoleId(dptid, roleid);
    if (users != null) {
        for (var iter = users.iterator(); iter.hasNext();) {
            var user = iter.next();
            var idd = user.getId();
            var userVO = getUserById(idd);
            userlist.add(userVO);
        }
    }
    return userlist;
})()

通过脚本设置人工节点抄送人

位置 触发时机 可以获取的环境变量(参数) 返回值
流程-抄送设置 点击流程抄送按钮时触发 WebUserCurrentDocument 类型:用户ID、用户对象、用户ID的集合、用户对象的集合含义:抄送人或抄送人集合

示例代码:

/*根据当前文档“部门”控件值,将角色为“部门负责人”的用户设置为抄送人*/
(function () {
    var roleid = getRoleIdByName("部门负责人");
    var dptid = getItemValueAsString("部门");
    var users = getUsersByDptIdAndRoleId(dptid, roleid);
    if (users != null) {
        for (var iter = users.iterator(); iter.hasNext();) {
            var user = iter.next();
            var idd = user.getId();
            var userVO = getUserById(idd);
            userlist.add(userVO);
        }
    }
    return userlist;
})()

通过脚本判断人工节点是否可回撤

位置 触发时机 可以获取的环境变量(参数) 返回值
流程-回退回撤挂起催办 打开表单即触发,具体表现为按钮是否出现 WebUserCurrentDocument 类型:Booleantrue(可回撤)/false(不可回撤)

示例代码:

//当用户为“张三”时,可回撤
(function () {
    var userName = getWebUser().getName();
    if ("张三".equals(userName)) {
        return true;
    }
    return false;
})()

通过脚本判断人工节点是否可挂起

位置 触发时机 可以获取的环境变量(参数) 返回值
流程->流程节点->回退回撤挂起催办->脚本 打开表单即触发,具体表现为按钮是否出现 WebUserCurrentDocument 类型:Boolean含义:true(可挂起)false(不可挂起)

示例代码:

/*当前用户为“申请人”时可挂起*/
(function () {
    var userName = getWebUser().getName();
    var value = getItemValueAsString("申请人");
    if (value != null && value.equals(userName)) {
        return true;
    }
    return false;
})()

通过脚本判断人工节点是否允许催办

位置 触发时机 可以获取的环境变量(参数) 返回值
流程->流程节点->催办设置->脚本 打开表单即触发,具体表现为按钮是否出现 WebUserCurrentDocument 类型:Boolean含义:true(可挂起)false(不可挂起)

示例代码:

/*当前用户为“申请人”时可催办*/
(function () {
    var userName = getWebUser().getName();
    var value = getItemValueAsString("申请人");
    if (value != null && value.equals(userName)) {
        return true;
    }
    return false;
})()

通过脚本设置人工节点过期时限(仅通知,逻辑不合理需要修改)

位置 触发时机 可以获取的环境变量(参数) 返回值
流程->流程节点->开启审批时限设置->审批编辑模式->脚本 设置超时时间,超时自动提交到下一节点 WebUserCurrentDocument 类型:XX日XX小时XX分钟含义:时长

示例代码:

(function () {
    //获取条件(以表单字段为例)
    var starttime = getItemValueAsDate("日期");
    //如果时间不为空,返回过期时间,否则返回当前时间
    if (starttime != null) {
        return starttime;
    } else {
        return getToday()
    }
})()

通过脚本设置需要启动的子流程

位置 触发时机 可以获取的环境变量(参数) 返回值
流程->子流程节点->启动 启动子流程时触发 WebUserCurrentDocument 类型:String含义:子流程id

示例代码:

//根据部门启动不同子流程
(function () {
    var deptId = getItemValueAsString("部门");
    var process = getDepartmentProcess();
    var dept = process.doView(deptId);
    var subFlowId = "技术子流程实例id";
    var normalSubFlowId = "普通子流程实例id";
    if (dept != null) {
        if (dept == "技术部") {
            return subFlowId;
        }
    }
    return normalSubFlowId;
})()

通过脚本设置需要启动子流程的实例数

位置 触发时机 可以获取的环境变量(参数) 返回值
流程->子流程节点->启动 启动子流程时触发 WebUserCurrentDocument 类型:Number含义:实例数

示例代码:

//根据用户返回子流程实例数
(function () {
    var userIds = getItemValueAsString("用户");
    var userIdArr = userIds.split(";");
    var num = 1;
    if (userIdArr.length > 0) {
        num = userIdArr.length;
    }
    return num;
})()

通过脚本设置需要启动的子流程输入参数

位置 触发时机 可以获取的环境变量(参数) 返回值
流程->子流程节点->参数传递 启动子流程时触发 WebUserCurrentDocument 类型:Object含义:与表单字段类型相符的值,返回值以参数形式传递给表单字段

示例代码:

(function () {
    //获取主表数据设置子流程参数
    var doc = getCurrentDocument();
    var userId = doc.getItemValueAsString("用户");
    var user = getUserById(userId);
    if (user != null) {
        //返回用户拓展字段值
        var field = user.getField4();
        return field;
    }
    return userId;
})()

通过脚本设置自动节点送出时机

位置 触发时机 可以获取的环境变量(参数) 返回值
流程->新建->自动节点->脚本 流程流转到自动节点时触发 WebUserCurrentDocument 类型:String含义:时间

示例代码:

//获取表单某一日期为依据,设置为自动节点提交时间
(function(){ 
    var starttime = getItemValue("结束日期"); //获取表单日期
    var startdate=null; 
    if(starttime!=null && starttime.trim().length()>0){ 
        startdate= parseDate(starttime,"yyyy-MM-dd HH:mm:ss"); //将日期格式化 
    } 
    return startdate; 
})()
文档更新时间: 2022-11-02 13:41   作者:admin