脚本转换
脚本转换允许您为 数据加载 终端节点和 服务操作启用内联脚本转换。可以将脚本配置为接收从 HTTP 响应获得的响应对象,然后根据目标集成记录系统 (SoR) 将其转换为另一个响应对象。脚本无法执行任何请求或存储任何数据。脚本转换仅用于转换响应,以便 HTTP 集成 JSON 解析器可以对其进行解析。
- 每个 HTTP 端点都有自己的可编辑脚本。
- 使用 “测 试服务” 按钮测试 HTTP 集成时,脚本将与测试请求一起运行。
- 使用请求转换运行的脚本限制为 10000 条语句。
- 脚本执行也受到一分钟的时间段的限制。如果脚本在此期间没有完成,它将被终止。
开始之前的准备工作
使用脚本转换可推断您熟悉目标应用程序 SoR。使用脚本转换进行 HTTP 集成时,请遵循以下常规过程:
- 通过 “ 数据加载 ” 或 “ 服务操作 ” 配置页面准备好要导入的脚本。
- 脚本必须使用在首选文本编辑器/开发工具中编辑的 javascript 语言准备。
- 准备就绪后,通过微应用管理界面中的脚本转换框粘贴脚本(或直接编辑)。
- 导入后,测试脚本。
注意:
使用脚本转换时,Citrix 会记录标准脚本输出并为其编制索引以进行调试。在配置过程中使用 print、console.log 等时,必须确保不记录任何敏感信息。
启用脚本转换
要在配置 数据加载 或 服务操作时启用脚本转换,请执行 以下步骤:
-
选择 脚本转换 按钮:
-
输入您准备好的脚本:
-
选择 带参数的测试 ,然后选择 测试服务 以查看原始响应、脚本输出、转换后的响应以及任何脚本错误(如果适用)。
注意:
如果更改转换脚本,还必须重新生成表
当脚本对 数据加载 或 服务操作正常运行 时,请选择 添加。
示例脚本
({response}) => {
_ = library.load("lodash")
let json = JSON.parse(response)
console.log(`loaded user count: ${json.length}`)
let transformed = json.filter(user => {
if (user.active === true) {
return true
}
console.log(`skipping inactive: ${user.displayName}`)
return false
}).map(user => ({
name: user.displayName,
avatarUrl: user.avatarUrls["32x32"],
now: _.now(),
}))
return JSON.stringify(transformed) }
注意:
您可以像前面的示例一样返回字符串,也可以返回转换后的变量的 js 对象(数组)。
示例:重命名 JSON 数组名称 before.json after.json
:
({
response
}) => {
_ = library.load("lodash")
function rename(obj, key, newKey) {
if (_.includes(_.keys(obj), key)) {
obj[newKey] = _.clone(obj[key], true)
delete obj[key]
}
return obj
}
let json = JSON.parse(response)
let transformed = rename(json, 'tickets', 'new_tickets')
return JSON.stringify(transformed) }
脚本转换
已复制!
失败!