脚本转换

脚本转换允许您为数据加载端点和服务操作启用内联脚本转换。脚本可以配置为接收从 HTTP 响应获得的响应对象,并将其转换为另一个响应对象,具体取决于您的目标集成记录系统 (SoR)。脚本无法执行任何请求或存储任何数据。脚本转换仅用于转换响应,以便 HTTP 集成 JSON 解析器可以解析响应。

  • 每个 HTTP 端点都有自己的可编辑脚本。
  • 使用测试服务按钮测试 HTTP 集成时,脚本将与测试请求一起运行。
  • 使用请求转换运行的脚本限制为 10000 条语句。
  • 脚本执行也受到一分钟的时间段限制。如果脚本在此期间没有完成,它将被终止。

准备工作

使用脚本转换可以推断您熟悉目标应用程序 SoR。使用脚本转换进行 HTTP 集成时,请遵循以下常规过程:

  • 准备好要通过数据加载服务操作配置页面导入的脚本。
  • 脚本必须使用在首选文本编辑器/开发工具中编辑的 javascript 语言准备。
  • 准备就绪后,通过微应用管理界面中的脚本转换框粘贴(或直接编辑)脚本。
  • 导入后,测试脚本。

注意:

使用脚本转换时,Citrix 会记录标准脚本输出并编制索引以进行调试。请确保在配置过程中使用 print、console.log 等时未记录任何敏感信息。

启用脚本转换

要在配置数据加载服务操作时启用脚本转换,请执行以下步骤:

  1. 选择脚本转换按钮:

    脚本转换切换

  2. 输入你准备好的脚本:

    脚本输入

  3. 选择使用参数进行测试,然后选择测试服务以查看原始响应、脚本输出、转换后的响应和任何脚本错误(如果适用)

注意:

如果更改转换脚本,则还必须重新生成表

当脚本在数据加载服务操作中正常运行时,请选择添加

示例脚本

({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) }
脚本转换