language 属性来实现,如下所示:
内置对象接口
的 Python 实现中使用了两个主要接口。它们包含并提供对以下列出的内置变量的访问:ScriptContext
这表示 中 Python 脚本的主要脚本上下文对象。它提供类似字典的项访问方式,并包含日志记录功能。此接口提供对_ctx 变量的访问,您可以使用该变量访问上下文。
可用的方法如下:
ScriptItem
这表示 脚本环境中的单个数据项。它提供类似字典的属性访问方式,并维护值列表。以下变量是自动可用的 ScriptItem 实例: 可用的方法有: 从高层次来看,_ctx 提供对脚本上下文的访问,而 _input、output 和 _message 是预先实例化的 ScriptItem 对象。使用语法 _ctx.itemname 可以动态创建或访问自定义项。有关更多信息,请参阅内置变量和运算器。
内置变量
这些变量用于访问脚本环境中消息上下文的核心。您可以使用它们与脚本引擎中的可用项进行交互。_ctx
访问脚本环境的主要变量。它提供:- 访问脚本中所有可用的项
- 创建新项、推送项以及记录到应用程序日志的功能
_ctx 变量的 log 方法,使用 INFO 日志级别将信息记录到应用程序日志:
_input
脚本引擎的只读输入项。可用属性根据您编写脚本的上下文(例如端口的操作类型)而有所不同。例如,在设置为 Transform 操作的 Script 端口中,可以使用以下属性:- ConnectorId
- WorkspaceId
- MessageId
- FilePath
- FileName
- Attachment#
- Header:*
output
内置项,当只需要单个输出时,可作为创建和推送自定义项的替代方案。与需要显式调用push() 将其作为输出发送的自定义项不同,output 项会在脚本完成时自动推送。只需修改其属性,脚本执行完成后它就会自动作为输出推送,无需任何额外的 push() 调用。
可以直接在项上设置属性,也可以使用 dict 定义属性;对自己定义的项也可以执行相同的操作。以下示例推送了一个包含一些数据的输出文件:
_message
当上下文中已加载消息时,提供对当前消息的访问。只有在特定场景下(例如,上下文中已加载消息时),端口正在主动处理消息时,此变量才可用。例如,在操作设置为 Trigger 的端口中,_message 变量不可用,因为在端口完成工作之前,消息不会出现。当此变量不可用时,会出现 _message is not defined 异常。
可以使用以下属性:
- Header:Message-Id
- Header:FileName
- Header:*
- body
_message 项中读取 CustomerID 头部,并将其作为当前消息日志文件中的条目打印。
result
一个专门用于 XML Map 脚本节点的特殊变量。它被视为整个脚本的结果。此变量的值将用作映射中节点的值。不过,它也可以用作 Script 端口中的调试工具。 此示例用于 XML Map 端口目标节点的脚本中,它从顶部声明的 Script 项中读取源文件的 address/city xpath,然后使用 Python 将该值修改为前三个字母并全部大写。新值随后作为result 的值发送:
result 变量用于向 Script 端口的日志文件添加条目:
运算器
log
log(level, message) 是 _ctx 变量的一个可用方法,允许将条目直接写入 应用程序日志。可用的日志级别包括 DEBUG、INFO、WARNING 和 ERROR。

push
push(item) 将提供的项推送为脚本的输出。如果未指定输出,则推送 output 项。
在本例中,在 ScriptContext 中创建了一个新的项 foo,并为其分配了一些数据和文件名,然后将其推送出去。
get
get(attr) 返回 ScriptItem 上指定属性的值。此方法提供了一种通过名称访问项属性的编程方式。其功能相当于直接使用点符号访问属性(例如 _input.myattr)或使用字典式访问(例如 _input.get('myattr'))。
以下示例将 item 对象上 tags 属性的值列表打印到当前脚本的日志文件中。
clear
clear() 清除调用该方法的 ScriptItem。该项保持不变,只是为空。
- Before clear:
{"price":"2.99","name":"Milk","tags":["perishable","dairy","noreturn"]} - After clear:
{}