本主题涵盖以 EDI 格式发送消息的 EDI 客户端工具。它可以与 增强版回调工具 和 XML 工具一起使用。
除了 EDI,EDI 客户端和高级回调工具支持 CSV、固定长度、行和纯文本。在这些情况下,工具名称会更改,以反映适当的格式(比如, CSV 客户端和 CSV 回调、 固定长度客户端和固定长度回调、 行客户端和行回调,以及 纯文本客户端和纯文本回调)。
XML 转换器 工具也支持这些格式。该工具根据格式和方向更改名称。例如,将 Fixed Length 转换为 XML、将 XML 转换为 Fixed Length、将 EDI 转换为 XML、将 XML 转换为 EDI。
本章包含:
需要消息包许可证
EDI 格式要求启用消息包许可证功能。消息包许可证功能支持 EDI 客户端的 EDI 格式,高级回调工具和 XML 转换器。
基础 EDIFACT 支持
在 SOAtest 9.1 中可用的 EDIFACT 支持仍然可以作为 EDI 客户端、高级回调和 XML 转换器中的“基本 EDIFACT”格式使用。有关更多详情,请查阅 Basic EDIFACT Support 。
与 SOAtest 一起使用 EDI
业务和组织可以使用 EDI(电子数据交换)交换消息,EDI 使用几种标准化的消息格式。其中一种格式为 EDIFACT(用于行政、商业和运输的电子数据交换)。
大多数 EDI 消息格式(包括 EDIFACT)都是很难解析,并且不易读取。
EDI 客户端, 增强版回调工具 和 XML 转换器 工具简化了 EDIFACT 在 SOAtest 中的使用。通过无缝地从 XML 转换为本机格式,以及从本机格式转换为 XML,SOAtest 允许轻松地利用 SOAtest 现有 XML 功能来发送、验证和提取 EDI 消息中的数据。
EDI 格式支持涵盖以下标准:
- AL3 - 也叫作 ACORD AL3
- CARGO - 也叫作 IATA Cargo-IMP
- EANCOM
- EDIFACT
- EDIFACT Basic - Described in Basic EDIFACT Support
- EDIGAS - 也叫作 Edig@s
- HIPAA
- HL7
- IATA - 也叫作 IATA PADIS
- NCPDP - 也叫作 NCPDP SCRIPT
- TELCO - 也叫作 NCPDP Telecommunication
- TRADACOMS
- X12
关于支持每个标准中的哪些版本和消息类型的更多详情,请查阅 EDI 支持细节。
使用 EDI 客户端
EDI 客户端用于在表单视图建模 EDI 消息,该视图允许轻松地更改消息内指定字段的值,或者允许参数化消息内的字段。
EDI 客户端提供消息客户端工具功能的超集。它可以做任何消息传递客户端可以做的内容,也可以自动将请求有效负荷从 XML 转换为 EDI(以及将响应有效负荷从 EDI 转换为 XML)。
它允许您使用 XML,从而简化了 EDI 的使用(EDI 通常很难阅读)。您可以将 EDI 请求负载作为 XML 文档来建模;然后客户端在发送消息之前自动将 XML 转换为 EDI。如果服务端返回 EDI 消息,则客户端可以将该消息转换为 XML,以便您可将像 XML 断言器和 XML 数据库这样的工具附加到响应中。
如果只想发送文字 EDI 消息,则可能需要使用消息传递工具代替此工具。然而,如果期望返回 EDI 数据,则 EDI 客户端比消息传递客户端具有以下优势:响应负载作为 XML 输出建模。该输出允许将 XML 断言器、XML 数据库或 Diff 工具以 XML 模式链接到它,以便您可以轻松地验证消息。对于消息传递客户端,您需要额外的一步:向响应流量输出添加文本/XML 转换器,然后添加 XML 断言器、XML 数据库或 Diff 工具。
工作流
这有两个预期工作流,可用于配置 EDI 客户端...
现有文字 EDI 消息
(推荐)如果已经有一个文字 EDI 消息:
- 创建新的 EDI 客户端。
- 切换到文字模式,并粘贴 EDI 消息。
- 切换到表单输入或表单 XML 模式,然后根据输入的消息进行填充。现在,您可以按照自己的意愿配置和参数化消息。有关更多详情,请查阅 Specifying the Request 。
- 设置合适的传输设置。有关更多详情,请查阅 Specifying Transport Settings 。
- 向输出添加合适的验证工具。有关更多详情,请查阅 Validating EDI Messages 。
- 运行测试。
从头开始创建 EDI 消息
如果要从头开始创建 EDI 消息,则执行以下步骤:
- 创建新的 EDI 客户端。
- 使用 Dialect、 Version和 Message 类型字段选择一个消息类型,这些字段将填充表单输入视图。
- 使用表单输入手动指定消息。有关更多详情,请查阅 Specifying the Request 。
表单输入将消息约束为所选消息类型的模式,并不允许向消息中添加不属于消息一部分的字段。在您尝试使用给定字段不支持的值类型(比如,尝试将字符串放入整数型字段)时,它还将发出警告。表单 XML 不执行这两种检查。
注意,可能需要手动添加您消息使用的字段,因为 SOAtest 根据所选定的消息生成最小的有效 EDI 消息。该消息将包含您可能希望修改的默认值。通常不建议在表单输入中使用右键单击 Populate 选项(如 用数据源值填充和参数化元素中所述)。它将向消息添加所有可选字段,但不一定添加有效的默认值。使用 Populate之后,您需要手动检查并输入每个字段的值。对于多数 EDI 消息,这可能是相当乏味的。
工具配置详情
以本机或 XML 格式发送
使用默认选项,EDI 客户端总是发送在 Format 复选框所选定的本机格式。然而,在表单输入和表单 XML 模式下,EDI 客户端可配置来发送 SOAtest 的 XML 格式,而不是本机格式。
为了实现这一点,请选择 EDI 客户端编辑器 XML Conversion Options 部分中的 Send XML instead of EDI when in Form Input or Form XML mode 框。
- 如果禁用(默认):则 SOAtest 会在发送消息之前自动将 XML 模型转换为本机格式。换句话说,SOAtest 会向服务器发送本机格式,这就是您在流量视图器中所看到的。
- 如果启用:SOAtest 将发送您在 UI 中为请求配置的消息。您可以通过使用文字或脚本视图以本机格式创建消息负载。如果禁用该选项,并在 UI(例如,使用表单输入视图)中创建 XML,则 SOAtest 将发送未更改的 XML。对于当前支持的格式,通常不希望这样做,但是 SOAtest 使此选项可用。
注意,此选项没有关联文字(Literal)或脚本化(Scripted)视图。客户端总是发送文字视图中出现或脚本化视图中脚本返回的实际文本。
指定请求
关于指定请求的推荐工作流,请查阅 Workflows。
注意,在表单输入或表单 XML 和文字之间进行切换时,表单输入或表单 XML 中的内容会自动转换为文字视图中显示的本机格式。文字输入中的内容会自动转换为在表单输入或表单 XML 中显示的 XML 格式。
在 EDI 格式的模式下,如果将 EDI 消息粘贴到文字视图,然后切换至表单输入或表单 XML,则 SOAtest 将自动检测消息类型并自动填充 Dialect、 Version和 Message Type 复选框。
有关可用视图的更多详情,请查阅 输入模式。
发送自定义 EDI 消息
如果希望发送自定义 EDI 消息,表单 XML 视图将允许您添加自定义字段,这是表单输入不允许输入的。
如果切换视图后仍然没有填充视图,怎么办?
如果将消息粘贴到文字视图,并切换至表单输入,但是表单输入没有填充,则从文字视图切换到表单 XML。在 SOAtest 无法为粘贴进来的 EDI 消息找到匹配模式的情况下,表单输入将不被填充。然而,使用表单 XML, SOAtest 通常仍然可以支持这些消息。
指定传输设置
关于如何配置可用传输的设置的更多详情,请查阅 Testing Through Different Protocols 。
注意,当传输协议为 HTTP 时,Content-Type HTTP 报头被设置为以下内容之一:
- 表单输入和表单 XML 和脚本化模式 - 格式类型的默认 mimetype。如果想发送与默认不一样的 mimetype,则需要通过在 Transport 选项卡的 HTTP Headers 部分添加新的 Content-Type 报头来覆盖 mimetype。
- 文字模式 - 在文字视图中的 MIME 类型字段中设置 mimetype。
每个格式的默认 mimetype 为:
- CSV - text/csv
- EDI - application/EDI-X12
- Basic EDIFACT - application/EDIFACT
- Fixed Length - text/plain
- Lines - text/plain
- Plain Text - text/plain
配置其他选项
单击 Misc 选项卡以配置以下选项:
- 有效的 HTTP 响应码:允许自定义工具行为,以便它成功地处理了
2xx
范围之外的 HTTP 响应码。将单个代码和/或代码范围指定为逗号分隔的列表。例如,如果使用"302, 500-599"
,则将接受302
码或5xx
范围内的任何码。如果正在使用参数化值,则请保证数据源中的值使用与之相同的格式(如,"302, 500-599"
)。 多少时间后超时(以秒为单位):指定 SOAtest 应考虑 FTP、telnet 或 HTTP 请求超时后的延迟长度(以秒为单位)。默认设置对应于首选项面板的超时设置。自定义设置允许输入超时时间。可以输入一个负超时值,表示指定无限的超时。
- 因超时导致测试失败:选择此选项可使工具在指定超时时失败。
- 只在发生超时时才通过测试:如果发生指定的超时(如,工具没有在指定的时间内完成执行),则选择此选项让工具通过。
- Outgoing Message Encoding: 从下拉菜单中选择 Custom ,然后输出消息选择编码。默认使用在最接近父测试套件中配置的编码(请查阅 Specifying Client Options)。也可以在 Parasoft 首选项 Misc 设置中全局指定该选项。(请查阅 其他首选项设置 )。
指定转换选项
在 EDI 格式中,当选项为空时,转换将使用该选项的默认选项。否则,如果选择或键入值,转换将尝试使用该值。注意,如果手动输入一个无效的值,则可能在尝试在表单输入/表单 XML 和文字视图之间进行切换时,出现错误。
对于 EDI,可用转换选项有:
- Treat all segments and elements as optional - 如果设置为 yes,则所有强制段和强制数据元素都被视为可选的。如果设置为 no(默认),则强制段或强制数据元素会触发一个错误。如果您的提供程序拒绝提供根据 EDI 规范认为是强制性的片段和元素,则启用此选项将非常有用。
- Enable validation - 当设置为 yes (默认)时,将与相关的 EDI 资源库比较 EDI 文件(输入或输出)的版本、发布、消息和段。如果 EDI 文件包含在 EDI 资源库中不存在的值时,将抛出一个错误。
如果禁用验证(值设置为“no”),即使 EDI 文件包含版本、发布、消息或资源库中没有的段,处理仍将继续。在处理一个未知版本、发布、消息或段时,某些检查将不会执行,因为所需数据的结构未知。
例如,如果文件是已知版本但包含未知段,则不会对该段执行数据类型检查,但是照常执行对文件其余部分的检查。同样,如果消息不存在于 EDI 资源库中,文件仍然被处理,但是没有执行段顺序检查。 - Component value separator - 当元素是一个符合元素时,用于在复合元素内将各组成元素彼此分离的字符。此选项影响 EDI 到 XML 的转换,反之亦然。
- Line continuation character - 当 EDI 消息中的每个段分割到新行时,附加到段终止符的字符。该字符向主机系统表明交换尚未结束。附加到交换中除最后一个以外的所有段。此选项影响 EDI 到 XML 的转换,反之亦然。此选项支持除 CARGO 之外的所有 EDI 方言。
- Decimal character - 用于转换文件中十进制字符的符号。通常是句号或逗号。此选项影响 EDI 到 XML 的转换,反之亦然。
- Element separator - 用于在一个段中分隔元素的字符。此选项影响 EDI 到 XML 的转换,反之亦然。
- Segment name/content separator (TRADACOMS) - 在 TRADACOMS 数据流中,用于分割段名和段内容的默认字符是等号(=)。可以使用此选项覆盖默认字符。此选项影响 EDI 到 XML 的转换,反之亦然。此选项只适用于 TRADACOMS 方言。
- Invalid character replacement - 与字符库覆盖(EDIFACT)选项的 REPLACE 值一起使用,以指定应该用于替换无效字符的字符。(如果未指定此选项)默认为下划线("_")。有效值有:
\u#### – 用于指定 Unicode 值(用 #### 代替合适值)。
\d#### – 用于指定十进制值,(用 #### 代替合适值)。
此选项影响 EDI 转换为 XML,反之亦然。 - Release (escape) symbol - 发布或转义字符。它关闭了对下一字符的特殊处理。假设您的文本消息使用同样用于分隔元素的字符。指定的字符用于引导 EDI 处理器将该字符视为正常字符,而不是文本的末尾。此选项影响 EDI 到 XML 的转换,反之亦然。
- Repeat symbol - 使用它的 EDI 方言的重复符号。此选项影响 EDI 到 XML 的转换,反之亦然。
- Segment separator - 要用于段分隔符的字符。此选项影响 EDI 到 XML 的转换,反之亦然。
- Stop processing of EDI content character - 当遇到该字符时,指定一个停止 EDI 内容所有处理的字符。例如,当 EDI 流遇到 ^Z (0x1A) 时终止,那么指定 terminate=26 (其中,26 是 0x1A 的十进制等值)会导致在最后遇到 ^Z 以及忽略任何剩余的文件内容的时候才会进行 EDI 解析。
- Subcomponent (tertiary separator) - 要用于子组件分隔符的字符。此选项影响 EDI 到 XML 的转换,反之亦然。
- Character repertoire override (EDIFACT) - 允许转换覆盖并修改基于 EDIFACT 文档(比如,EANCOM 和 IATA)的字符编码。
可以使用一个或多个以下值,并用 "+” 符号连接(比如,FINN-ISH+REPLACE):
DEFAULT – 使用文件中指定的编码。该值不能与任何其他值一起使用。
EANCOM – 支持添加这些其他 EANCOM 字符到 UNOA 和 UNOB :#, @, [, ], {, }, \, |, ‘, 和 ^.
SYMBOL – 强制所有字符,包括如元素和段分隔符的特殊字符,这些特殊字符根据编码进行验证。
REPLACE – 用无效属性指定的字符替换任何无效字符。如果没有指定无效属性,则使用下划线("_")。如果没有指定 REPLACE,则将报告一个错误。
FINNISH – 更改用于 UNOA 和 UNOB 的芬兰字符集中某些字符的含义(并将 UNOY 和 UNOZ 分别添加为 UNOA 和 UNOB 的同义词)。 - Extension map file - 允许输入到扩展映射文件的路径,该映射文件描述了您正在使用的自定义/专有 EDI 消息类型与它所基于的 EDI 标准的不同之处。扩展映射文件可以使用 EDI 标准交换格式(SEF),打开的标准允许描述专有 EDI 消息类型。${ENV_VAR} 格式可用于指定文件路径。
注意,没有可用于基础 EDIFACT 的转换选项。
验证 EDI 消息
若要验证 EDI 消息,通常需要将 XML 模式下的 XML 断言器、XML 数据库或 Diff 工具附加到作为 XML 输出的响应负载建模(Response Payload Modeled)。然而,可以将扩展工具或其他类型的工具附加到该输出,以实现要实现的内容。如果要验证文字 EDI 内容,则可以将任何工具附加到响应负载输出;这将把文字 EDI 内容发送到附加到它的任何工具。
EDI 客户端向响应有效负载提供两个输出:
- 有效负载:SOAtest 从服务器接收到的响应。通常这将是一条 EDI 消息。这类似于消息传递客户端的“流量”输出。
- 转换为 XML 的有效负载:将响应负载转换为 XML 的结果。所选定 EDI 格式(如 EDIFACT)决定了 SOAtest 如何将消息转换给 XML。
例如,如果使用纯文本格式,并且服务器返回字符串“delta”,则 SOAtest 将提供值“delta”作为附加到“Payload”输出工具的输入。对于附加到 "Payload Converted to XML” 输出的工具,EDI 客户端将提供值 " <root>delta</root>"。
使用请求负载
附加请求负载输出
EDI 客户端向请求负载提供两个输出:相反,消息传递客户端提供一个输出(简单命名为“流量”)。EDI 客户端有两个输出,因为它支持自动将请求从 XML 转换为 EDI 格式。
EDI 客户端存在两个请求:
- 建模为 XML 的有效负载:这是请求负载的 XML 模型,通常是使用表单输入或表单 XML 视图创建的。如果选择了 Send XML instead of {format} when in Form Input or Form XML 选项,则在其从 XML 转换为 EDI 之前,该输出提供请求负载。
- 有效负载:SOAtest 发送给服务器的有效负载。这类似于消息传递客户端的“流量”请求输出。如果选择了 EDI 选项的 Send XML instead of {format} when in Form Input or Form XML 模式,则该输出将是从 XML 转换为 EDI 的结果。
如果选择了发送 XML 而不是 EDI(在表单输入或表单 XML 模式时发送 XML 而不是 EDI)的选项,则附加到输出“建模为 XML 的有效负载”的输出将不会运行。
修改请求负载
与消息传递客户端一样,您可以通过将工具附加到请求输出来修改请求负载。例如,如果将返回值的扩展工具附加到负载输出,那么 SOAtest 将使用该值作为请求负载。换句话说,SOAtest 将向服务器发送该值,并且您将在流量视图器汇总看到该值。此外,您可以通过向 "Payload Modeled as XML” 输出附加工具来修改消息的 XML 模型。
运行工具
在“Payload”输出之前,EDI 客户端运行 "Payload Modeled as XML” 输出。
例如,假设您拥有以下工具:
- EDI 客户端
- 建模为 XML 的请求负载->扩展工具 1
- 请求负载->扩展工具 2
在 EDI 客户端 UI 中,您选择从 XML 转换至 EDI,并选择了使用纯文本格式。可以将请求负载建模为以下 XML:
<root>alpha</root>
当 EDI 客户端运行时,首先运行扩展工具 1,该工具附加在建模为 XML 请求负载。扩展工具 1 包含以下 Jython:
from com.parasoft.api import Application
def main(input, context):
Application.showMessage("input:
" + str(input))
return str(input).replace("alpha", "beta")
扩展工具 1 打印 "input: <root>alpha</root>" 到控制台,并返回 "<root>beta</root>"。
扩展工具 2 包含以下 Jython:
from com.parasoft.api import Application
def main(input, context):
Application.showMessage("input:
" + str(input))
return str(input).replace("beta", "gamma")def main(input, context):
工具将 "input: beta” 打印到控制台,因为 EDI 客户端在内部转换了值,
该值由扩展工具 1 返回, "<root>beta</root>",通过删除“root”标签来发送文本。扩展工具 2 返回字符串 "gamma"。将在浏览器视图中的请求负载中看到字符串 "gamma" 。
教程
请查阅 Working with EDI Messages。
基础 EDIFACT 支持
在 SOAtest 9.1 中可用的基础 EDIFACT 支持仍然可以作为“基础 EDIFACT”格式来使用:
适用于 EDI 客户端、高级回调和 XML 转换器。
基础 EDIFACT 支持不要求消息包许可证。它支持消息包许可证覆盖的方言子集和版本。例如,EDIFACT 是唯一可用方言,并且只支持版本 10B, 96B, S3, S4, 和 S41。
注意:
- 负载测试工具不支持“基础 EDIFACT”格式。负载测试工具不支持所有其他文本/XML 格式,包括需要消息包许可证的“EDI”格式。
- 基础 EDIFACT 和 EDI 转换生成相同 EDI 数据的不同 XML 表示。因此,您不能使用“基础 EDIFACT”将 EDI 转换为 XML,然后再使用“EDI”将其转换回 EDI。同样地,您不能使用“EDI”将 EDI 转换为 XML,然后再使用“基础 EDIFACT”将其转换回 EDI。