流程节点¶
环境变量含义与各挂载点差异见 可获取的环境变量(参数)。流程节点脚本一般可使用
WebUser、CurrentDocument(流程文档)、Params。子流程 startup 另有$STARTUP_DOC;callback 另有$CALLBACK_DOC。
通过脚本设置人工节点审批人¶
| 位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
|---|---|---|---|
| 流程->审批人设置->通过->脚本 | 流程提交时触发 | WebUser、CurrentDocument、Params |
类型:用户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;
})()
通过脚本设置人工节点处理时限¶
| 位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
|---|---|---|---|
| 流程->审批时限设置->勾选开启审批时限设置->脚本 | 设置超时时间,超时自动提交到下一节点 | WebUser、CurrentDocument、Params |
类型:XX日XX小时XX分钟含义:时长 |
示例代码:
/*根据当前文档中"日期"控件指定时间设置为审批时限*/
(function () {
var starttime = getItemValueAsDate("日期");
var day = getDay(getToday());
if (starttime != null) {
day = getDay(starttime); //取日期天
}
return day;
})()
通过脚本设置人工节点协办人¶
| 位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
|---|---|---|---|
| 流程->基本信息->允许加签协办人 | 点击流程协办按钮时触发 | WebUser、CurrentDocument、Params |
类型:用户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;
})()
通过脚本设置人工节点抄送人¶
| 位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
|---|---|---|---|
| 流程->抄送设置 | 点击流程抄送按钮时触发 | WebUser、CurrentDocument、Params |
类型:用户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;
})()
通过脚本判断人工节点是否可回撤¶
| 位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
|---|---|---|---|
| 流程->回退回撤挂起催办 | 打开表单即触发,具体表现为按钮是否出现 | WebUser、CurrentDocument、Params |
类型:Boolean含义:true(可回撤)/false(不可回撤) |
示例代码:
//当用户为"张三"时,可回撤
(function () {
var userName = getWebUser().getName();
if (userName === "张三") {
return true;
}
return false;
})()
通过脚本判断人工节点是否可挂起¶
| 位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
|---|---|---|---|
| 流程->流程节点->回退回撤挂起催办->脚本 | 打开表单即触发,具体表现为按钮是否出现 | WebUser、CurrentDocument、Params |
类型:Boolean含义:true(可挂起)false(不可挂起) |
示例代码:
/*当前用户为"申请人"时可挂起*/
(function () {
var userName = getWebUser().getName();
var value = getItemValueAsString("申请人");
if (value != null && value === userName) {
return true;
}
return false;
})()
通过脚本判断人工节点是否允许催办¶
| 位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
|---|---|---|---|
| 流程->流程节点->催办设置->脚本 | 打开表单即触发,具体表现为按钮是否出现 | WebUser、CurrentDocument、Params |
类型:Boolean含义:true(可催办)false(不可催办) |
示例代码:
/*当前用户为"申请人"时可催办*/
(function () {
var userName = getWebUser().getName();
var value = getItemValueAsString("申请人");
if (value != null && value === userName) {
return true;
}
return false;
})()
通过脚本设置人工节点过期时限¶
| 位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
|---|---|---|---|
| 流程->流程节点->开启审批时限设置->审批编辑模式->脚本 | 设置超时时间,超时自动提交到下一节点 | WebUser、CurrentDocument、Params |
类型:XX日XX小时XX分钟含义:时长 |
示例代码:
(function () {
//获取条件(以表单字段为例)
var starttime = getItemValueAsDate("日期");
//如果时间不为空,返回过期时间,否则返回当前时间
if (starttime != null) {
return starttime;
} else {
return getToday()
}
})()
通过脚本设置需要启动的子流程¶
| 位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
|---|---|---|---|
| 流程->子流程节点->启动 | 启动子流程时触发 | WebUser、CurrentDocument(主流程文档)、Params |
类型: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;
})()
通过脚本设置需要启动子流程的实例数¶
| 位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
|---|---|---|---|
| 流程->子流程节点->启动 | 启动子流程时触发 | WebUser、CurrentDocument(主流程文档)、Params |
类型:Number含义:实例数 |
示例代码:
//根据用户返回子流程实例数
(function () {
var userIds = getItemValueAsString("用户");
var userIdArr = userIds.split(";");
var num = 1;
if (userIdArr.length > 0) {
num = userIdArr.length;
}
return num;
})()
通过脚本设置需要启动的子流程输入参数¶
| 位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
|---|---|---|---|
| 流程->子流程节点->参数传递 | 启动子流程时触发 | WebUser、CurrentDocument(主流程文档)、Params |
类型:Object含义:与表单字段类型相符的值,返回值以参数形式传递给表单字段 |
示例代码:
(function () {
//获取主表数据设置子流程参数
var doc = getCurrentDocument();
var userId = doc.getItemValueAsString("用户");
var user = getUserById(userId);
if (user != null) {
//返回用户拓展字段值
var field = user.getField4();
return field;
}
return userId;
})()
通过脚本设置自动节点送出时机¶
| 位置 | 触发时机 | 可以获取的环境变量(参数) | 返回值 |
|---|---|---|---|
| 流程->新建->自动节点->脚本 | 流程流转到自动节点时触发 | WebUser、CurrentDocument、Params |
类型:String含义:时间 |
示例代码: