规则集 XOM 的 XML 序列化
在用于规则集执行的 REST 服务中,以不同方式序列化基本 Java™ 类型, XSD 类型和 Java XOM 类。
根据规则集参数是表示为 XML 元素还是表示为 Java 类型,将以不同方式处理规则集参数。
基本类型
原语类型是可以编写为内联字符串的 Java 类型和类。 用于将基本类型序列化为规则集参数的 XML 元素是参数名称空间中规则集参数的名称。
您可以在此处找到更多信息:
- 更改目标名称空间 说明如何从 Rule Execution Server 控制台中的 规则集视图 定制参数名称空间。
- Java 类型的 XML 序列化 显示 Java 基本类型和简单类型的 XML 类型和 Java XML 绑定体系结构 (JAXB) 注释。
动态 XOM
对于动态 XOM ,根元素取决于规则集参数的定义方式。 将根据规则集所基于的动态 XOM 的原始 XSD 代码对 XML 描述进行序列化。
- 根元素的名称
- 对于基于动态 XOM 的规则集,根元素名称确定如下:
- 如果参数是规则集特征符中的 XML 元素,那么该元素将用作请求和响应中参数的根元素名称。
- 如果参数是复杂或基本 Java 类型,那么在配置的
param名称空间内,参数名称将用作请求和响应中参数的根元素名称。注: 如果规则集参数满足以下条件,那么将从 XML 元素声明该参数: 该参数使用 XML 复杂类型,该 XML 复杂类型的 XML 元素是从原始导入的 XSD 文件中的该复杂类型声明的。 例如,从以下 XSD 定义开始:
从<xsd:element name="MyConference"> <xsd:complexType> <xsd:sequence> <xsd:element name="session" type="session" maxOccurs="unbounded"/> <xsd:element name="participant" type="participant" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element>MyConferenceXML 元素声明规则集参数:<par:Request xmlns:par="http://www.ibm.com/rules/decisionservice/myruleapp/myruleset/param" xmlns:jav="http://www.acme.com/myconference"> <jav:MyConference> <jav:session> […] <jav:session> <jav:MyConference> </par:Request>
- 序列化
- 根元素取决于您的 XML 类型。
- 对于 XML 复杂类型,参数声明使用参数名称 (在参数名称空间中) 作为根元素。
- 对于 XML 元素,参数声明使用定义的 XML 元素作为原始名称空间中的根元素。 在这种情况下,在 WADL 代码中提供了附加到每个节点的参数的名称作为注释消息。
Java XOM
对于 Java XOM ,根元素派生自参数声明, XML 序列化使用 JAXB 注释。 规则集参数支持数组。
- 根元素的名称
对于基于 Java XOM 的规则集,参数声明使用参数名称 (在参数名称空间中) 作为根元素。
- 序列化
- Java XOM 类的 XML 结构通过标准 JAXB 进程进行序列化。 如果缺省序列化未提供您期望的类结果,那么可以使用 JAXB 注释来定制序列化过程。注: 仅当您使用
XmlElement注释指定参数时,或者如果有效的 getXXX 和 setXXX 方法适用于该参数时,该参数才可视为 XML 元素。 - 数组作为规则集参数
- 在 Java XOM 中,可以将规则集参数指定为简单或多维数组。 对于每种类型的数组,以不同方式处理 XML 序列化:
- 如果规则集参数是简单数组,那么参数名称将作为 XML 中的标准数组重复。
- 如果规则集参数是多维数组,那么参数名称在 XML 中作为第一个维度的标准数组类型重复,然后将
item元素用于后续维度。 例如:<myMultiDimArrayParam> <item>1</item> <item>2</item> </myMultiDimArrayParam> <myMultiDimArrayParam> <item>3</item> <item>4</item> <item>5</item> </myMultiDimArrayParam>