文章目录
第四十九章 开发Productions - ObjectScript Productions - 使用复杂记录映射器 - 复杂的记录映射类结构
复杂的记录映射类结构
有两个类以类似于描述记录映射的两个类的方式描述复杂的记录映射。描述复杂记录映射的两个类是:
- 复杂记录映射,描述复杂记录的外部结构并实现复杂记录解析器和编写器。
- 生成的复杂记录类定义了包含数据的对象的结构。该对象允许在数据转换和路由规则条件中引用数据。
一个复杂的记录映射业务服务读取并解析传入的数据并创建一条消息,该消息是生成的记录类的一个实例。业务流程可以读取、修改或生成生成的复杂记录类的实例。最后,复杂记录映射业务操作使用实例中的数据,使用复杂记录映射作为格式化模板写入输出数据。复杂记录映射类和生成的复杂记录类都具有描述数据的层次结构。复杂记录映射类和生成的复杂记录类具有并行结构。这与 RecordMap
类不同,其中生成的记录类可以具有不同的层次结构。
当创建一个新的复杂记录映射并将其保存在管理门户中时,此操作定义了一个类,用于在扩展 EnsLib.RecordMap.ComplexMap
和在类中扩展 Ens.RequestO
。为了定义生成的记录类,必须单击管理门户中的生成,这会调用 EnsLib.ComplexGenerator
类中的 Generate()
方法。仅编译 ComplexMap
类定义不会为生成的记录类创建代码。必须使用管理门户或从终端或代码调用 ComplexGenerator.Generate()
方法。生成的类中扩展 RecordMap.ComplexBatch
并在类中扩展 Ens.Request
。
ComplexMap
类在 XData
定义中定义了复杂的记录结构,该定义使用 RecordReference
元素指定的记录和 RecordSequence
元素定义的序列来定义 ComplexBatch
。如果现有类的 RECORDMAPGENERATED
参数为 0
,则目标类不会被复杂的记录映射框架修改——所有的更改都是生产开发人员的责任。
ComplexBatch
类具有对应于复杂映射定义中的以下顶级元素的属性:
- 标头记录(如果指定)。此属性的类型设置为指定记录映射的生成记录类。
- 将其类型设置为指定记录映射的生成记录类的记录,或者如果记录可以重复,则其类型设置为生成记录类的数组。
- 其类型设置为为序列定义的类的序列,或者如果序列可以重复,则其类型设置为此类的数组。
Trailer record
(如果指定)。此属性的类型设置为指定记录映射的生成记录类。
为每个序列定义一个类。序列类扩展了中的 ComplexSequence
和类中的 %XML.Adaptor
。序列类在为 ComplexBatch
类定义的包和命名空间中定义。所有序列类都在该级别的命名空间中定义,即使它们包含在其他序列中也是如此。
每个序列都具有与其包含的记录和序列相对应的属性。
在Production
使用复杂的记录映射
要创建使用复杂记录的作品,可以执行以下操作:
- 为复杂记录的每个部分创建单独的记录映射,包括标题和结尾。有关如何创建单个记录映射的说明,请参阅使用记录映射器。请注意,如果打算使用样本文件,则应该创建一个样本文件,该文件仅包含在单个记录映射中定义的复杂记录的一部分。示例文件不应包含完整的复杂记录。
- 使用复杂记录映射器定义复杂记录的结构。
- 创建作品并添加一个或多个内置的复杂记录服务和操作。
- 如果产品只是将复杂的记录从一个应用程序传递到另一个应用程序,可以使用简单的路由引擎进程。但是,如果作品将一个复杂记录转换为另一个复杂记录,将在路由引擎中创建一个数据转换。如果输入和输出复杂记录具有相同的结构,可以创建连接源字段和目标字段的简单数据转换。例如,可以使用简单的数据转换将包含分隔记录的复杂记录转换为包含固定列记录的复杂记录。但是,如果输入复杂记录与输出复杂记录的结构不同,则必须在数据转换或业务流程语言 (
BPL
) 流程中添加代码。