微应用

脚本转换

脚本转换允许您为 数据加载 终端节点和 服务操作启用内联脚本转换。可以将脚本配置为接收从 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) }
脚本转换