Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space FUNCTDEV and version SVC2020.1

...

Table of Contents
maxLevel1

关于自定义报文格式

SOAtest 和 Virtualize 包括允许扩展其内置报文格式的框架。该框架支持您正在使用的任何报文格式。例如,大型机报文格式、二进制报文格式或其他任何类型的私有自定义报文格式。报文格式通过创建本地格式和 XML 之间的转换来定义。该转换允许用户使用可用的富 XML 工具构建和验证报文。这个扩展是使用 Java 完成的。

一旦添加了自定义报文格式,Virtualize 将自动生成一个新的响应程序 可用于配置和发送使用此格式请求或响应的消息。您可以将新客户机/响应程序实例添加到测试场景或响应程序套件。

请查阅自定义消息响应程序Custom Message Responder 以获得关于如何使用它们的更多详情。新的报文格式也将出现在 XML 转换器工具中,该工具在 XML 转换器 1Converter中有所描述。

除了定义格式之间的一般转换外,还可以选择性地定义一套指定报文类型,该类型定义该格式中每条报文的确切结构。例如,用户可能将一般 FIX 定义为 XML 转换,然后又定义一套应用程序使用的特定 FIX 报文。每个报文类型结构都由 XML 模式定义,并由 SOAtest 或 Virtualize 扩展提供。

实现自定义报文格式的接口

配置环境(添加扩展的通用程序General Procedure of Adding an Extension之后,请实现以下接口(其在 Extensibility API 文档中进行了描述):

  • com.parasoft.api.message.ICustomXMLConverter
  • com.parasoft.api.message.ISchemaGenerator (optional)

ICustomXMLConverter 实现

这是一个必须类,用于实现与本机格式和 XML 之间的转换逻辑。这个 toXML() 方法应该以 XML 格式返回报文,其中 toNative() 方法应该以其本机格式返回报文。采取的方法:

...

  • 在表单和文字视图之间切换
  • 从表单输入或表单 XML 视图构建要通过网络发送的消息
  • 处理接收的消息
  • 执行 XML 转换器工具

ISchemaGenerator 实现

在为给定报文格式定义特定的消息类型时,必须为每种消息类型提供 XML 模式。这是可选类,提供一个方法,该方法为给定的特定消息类型提供了 XML 模式。如果没有实现这个类,也不在 parasoft-extension.xml 中引用它,相反,您必须提供对模式文件的引用(查阅下面的 Defining parasoft-extension.xml for a Custom Message Format )。

此接口有一个方法,generateSchema(),它采用:

...

generateSchema() 返回一个一个对模式文件的引用的 URI。它可以是对动态生成的模式的引用、也可以是对 jar 文件中提供自定义报文格式扩展的模式的引用,还可以是对外部资源的引用。如果在生成模式中出现错误,那么可以返回空 URI;这将导致表单输入视图没有为给定的消息类型适当填充。 

Anchor
definingParasoft
definingParasoft
定义自定义报文格式的 parasoft-extension.xml

实现必要类后,定义 parasoft-extension.xml(在下面有所介绍,在 Virtualize 中添加扩展的通用程序)使用以下模式:

Code Block
<?xml version="1.0" encoding="UTF-8"?>
<extension xmlns="urn:ocm/parasoft/extensibility-framework/extension"
		type="messageFormat"
		name='the name of your message format, appears in menus' description='A more detailed description'>
    <class>com.myCompany.MyConverter</class> <!-- implements ICustomXMLConverter -->
    <messageFormat xmlns="http://schemas.parasoft.com/extensibility-framework/messageFormat">
		<defaultMimeType>text/plain</defaultMimeType>
		<messageTypes generatorClass="com.myCompany.SchemaGenerator">
		<messageType id='unique ID' name='name' xsd='path to schema in jar'/>
			. . .
		</messageTypes>
		<client icon="myClient.gif" defaultTransport='default transport' /> 
		<responder icon="myResponder.gif" /> 
    </messageFormat>
    <version id='your version ID' updaterClass="com.myCompany.myUpdater"/>    
	<form xmlns="urn:com/parasoft/extensibility-framework/gui">
		<section label="field group 1">
			<field id="key 1" label="field 1"/>
			<field id="key 2" label="field 2"/>
		</section>
		<section label="field group 2">
			<field id="key 3" label="field 3"/>
			. . . 
		</section>
		. . .
    </form> 
</extension>

...

实现 ICustomXMLConverter 的类的完全限定类名以及扩展名被用于识别在客户机/响应程序中使用的报文格式。更改保存 .tst 或 .pva 文件后扩展的限定类名或扩展名将阻止已保存的客户机或响应程序解析它们正在使用的报文格式。 

<MessageFormat> Element

该元素对于此扩展类型是唯一的。要导入自定义报文格式,它必须有效且正确。

...

  • <responder>: 可选元素,其中包含为自定义报文格式生成的自定义 Virtualize 响应程序的一些基本信息。
    • icon - 可选属性,指定自定义 Virtualize 响应程序在 GUI 中显示的图标。这是一个到图标的相对路径,其中包含在 Virtualize 类路径的 jar 文件或 Java 项目中。如果没有提供,那么 Virtualize 将为自定义 Virtualize 响应程序使用其默认工具图标。

验证新的报文格式

  1. 构建项目(请查阅在 Virtualize 中添加扩展的通用程序),并且重启Virtualize。

  2. 验证包含报文格式名称的新客户机/响应程序是否可用于添加到 .tst 或 .pva 文件,其通过选择 Add New> Test or Responder。

新格式也应该在 XML 转换器的下拉菜单中列出。

提示

  • 在 parasoft-extension.xml 文件中定义的 GUI 字段出现在自定义报文格式 client/responder的 Conversion Options 选项卡中。

  • 将提供给扩展 GUI 的值保存为名称-值字符串映射。作为一种结果,重新整理 parasoft-extension.xml 中表单元素的字段将不会影响用户值是否已保存;然后,改变 id 将会影响这一点。id 用于保存或加载值,因此它们必须是唯一的。如果更改它们,则先前保存的配置将不会加载以前的值,并且将变为空。然而,您可以使用修订更新器将用老 id 保存的老设置迁移到新 id 集。
  • 仅支持自定义表单 GUI 中带字符串值的 GUI 字段。如果扩展要求 integer 或其他类型,则您可以将字符串内容转换为扩展实现类中的所需类型。

...