You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨工作流调用时,如何从initiator变量提取用户邮箱?

问题原因

你遇到的Script31$_run_closure3@6d9d597c是闭包对象的内存标识,说明在当前脚本上下文里,{{initiator}}并不是直接返回用户信息字符串,而是一个延迟执行的闭包——只有调用它才能获取到实际的用户对象。

解决方案

1. 执行闭包获取用户对象

先调用闭包拿到真实的用户实例,再从中提取邮箱:

// 执行闭包,获取initiator对应的用户对象
def initiatorUser = {{initiator}}()
loggerApi.info('用户对象详情: ' + initiatorUser)

2. 提取用户邮箱

大多数工作流系统(如Flowable、Activiti等)的用户对象会提供email属性或getEmail()方法,直接调用即可:

// 提取邮箱字符串
def initiatorEmail = initiatorUser.email
// 若属性访问不生效,尝试调用getter方法
// def initiatorEmail = initiatorUser.getEmail()

loggerApi.info('发起者邮箱: ' + initiatorEmail)

3. 传递邮箱到第二个工作流

启动子工作流时,直接传入提取到的邮箱字符串即可,避免传递闭包导致类型错误:

// 示例:假设启动工作流的方法为startWorkflow,传入参数
startWorkflow('你的子工作流Key', [initiator: initiatorEmail])

额外排查技巧

如果不确定用户对象的邮箱属性名,可以打印所有属性来确认:

initiatorUser.properties.each { key, value ->
    loggerApi.info("属性名: $key, 值: $value")
}

内容的提问来源于stack exchange,提问作者Tijs Bijnens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:52:47