在宜搭(Yida)流程设计中,脚本节点(也称“服务节点”或“自定义代码节点”)可以通过宜搭提供的上下文对象来获取当前流程的审批人信息。
获取审批人信息的具体方法取决于你的流程配置(如审批人是固定人员、角色、还是动态指定等),但通常可以通过 ctx(上下文)对象来实现。
以下是常见的获取方式和示例:
✅ 方法一:通过 ctx.task 获取当前任务信息
在脚本节点中,ctx.task 包含了当前流程任务的详细信息,包括审批人。
// 获取当前任务的审批人信息
var task = ctx.task;
// 获取审批人用户ID(工号或账号ID)
var assigneeUserId = task.getAssignee();
// 获取审批人姓名(需通过用户ID查询用户信息)
var userService = ctx.getUserService();
var assigneeUser = userService.getUserById(assigneeUserId);
if (assigneeUser) {
var assigneeName = assigneeUser.getName(); // 审批人姓名
console.log("当前审批人姓名: " + assigneeName);
console.log("当前审批人ID: " + assigneeUserId);
} else {
console.log("未找到审批人信息");
}✅ 方法二:获取候选人(Candidate Users)
如果审批节点配置为“候选人”(如多个人可审批),可以获取候选人列表:
var task = ctx.task;
var candidateUsers = task.getCandidateUsers(); // 返回用户ID数组
var userService = ctx.getUserService();
for (var i = 0; i < candidateUsers.length; i++) {
var user = userService.getUserById(candidateUsers[i]);
if (user) {
console.log("候选人: " + user.getName() + " (" + user.getId() + ")");
}
}✅ 方法三:获取上一节点的审批人(历史任务)
如果需要获取上一个审批节点的处理人:
var historyTasks = ctx.getHistoricTaskInstances(); // 获取历史任务列表
// 通常最后一个完成的任务是上一节点
if (historyTasks && historyTasks.length > 0) {
var lastTask = historyTasks[historyTasks.length - 1];
var lastAssignee = lastTask.getAssignee(); // 上一审批人ID
var userService = ctx.getUserService();
var user = userService.getUserById(lastAssignee);
if (user) {
console.log("上一审批人: " + user.getName());
}
}📌 注意事项:
权限要求:脚本节点需要有调用用户服务和流程上下文的权限。
上下文对象:确保你在“流程设计”中的“服务节点”使用
ctx对象,这是宜搭提供的流程上下文。调试建议:可以使用
console.log()输出对象结构,帮助调试,例如console.log(JSON.stringify(ctx.task))。环境差异:公有云版宜搭和专属版/私有化部署的API可能略有不同,请参考你所用版本的官方文档。
📚 参考文档:
建议查阅 宜搭开发者文档 中的:
《流程引擎服务节点开发指南》
《ctx 对象 API 说明》
《任务(Task)对象方法列表》
你可以在 宜搭官网帮助中心 搜索相关文档。
如果你提供具体的流程场景(比如“获取会签节点的所有审批人”),我可以给出更精确的代码示例。