宜搭流程设计中脚本节点怎么获取审批人信息

阿里云服务器

在宜搭(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());
    }
}

📌 注意事项:

  1. 权限要求:脚本节点需要有调用用户服务和流程上下文的权限。

  2. 上下文对象:确保你在“流程设计”中的“服务节点”使用 ctx 对象,这是宜搭提供的流程上下文。

  3. 调试建议:可以使用 console.log() 输出对象结构,帮助调试,例如 console.log(JSON.stringify(ctx.task))

  4. 环境差异:公有云版宜搭和专属版/私有化部署的API可能略有不同,请参考你所用版本的官方文档。


📚 参考文档:

建议查阅 宜搭开发者文档 中的:

  • 《流程引擎服务节点开发指南》

  • 《ctx 对象 API 说明》

  • 《任务(Task)对象方法列表》

你可以在 宜搭官网帮助中心 搜索相关文档。

如果你提供具体的流程场景(比如“获取会签节点的所有审批人”),我可以给出更精确的代码示例。