消息映射设计一个逻辑结构可以对未来几年的地图维护带来相当大的影响。本节展示了一些简单的地图设计原则,可以简化维护和代码重用。虽然这部分是针对映射EDI消息的,但是许多原则对于映射XML或其他消息类型是有效的。 入门指南 在开始消息映射之前,必须有两个工作消息定义。确保这些定义被测试,并在尝试创建消息映射之前解析消息。使用EDI Explorer,定义中的问题比通过映射设计器运行消息更容易被隔离。 此外,在开始第一次真正实现映射之前,要熟悉地图设计器中可用的调试特性。映射可以在地图设计环境中充分测试之前加载到Rhapsody™集成引擎。 在地图设计器中,您可以提供一个示例输入消息: •逐步完成每行代码——一次一行 •在映射的各个点上查看每个变量的值 比较字段的输入和输出值 •修改字段值,以测试不同的场景,即使您没有带正确值的消息。 地图设计的建议 规则1:使用子映射用于代码重用和易于维护 Rhapsody中的子映射相当于在其他编程语言中使用函数和方法,它们在映射中使用的原因与编写代码时相同。 将消息分解成子映射可以方便地开发和维护映射。通过创建子映射,可见的消息结构只被简化为映射该组件所需的数据片段。当您需要修改代码时,在更小的子映射中更容易找到,而不是在大型主映射中。实现没有子映射的映射可以生成运行在数千行代码中的映射。 子映射还支持映射代码的重用,允许在同一条消息中使用相同段类型的其他实例调用方法,或者在同一定义中映射不同的消息。子映射还可以从一个定义导入另一个定义,从而增加它们的可重用性。 规则2:根据输出消息结构构造映射 在映射消息时,输出是关键结果和成功映射的重要因素。如果映射不正确,下游系统将根据输出结构报告错误。因此,围绕输出消息构建映射将允许任何问题区域的快速位置。 使用EDI消息传递,这通常简化为在输出消息中为每个段创建一个子映射。这个子映射应该包含构建该输出段所需的所有代码。 如果一个片段在消息中不止一次出现,那么这个子映射可以被多次调用,以映射不同的实例。 创建子映射就像从输入结构拖到输出结构一样容易。将提供一个选项,用于创建一个新的子映射,并允许定义参数。
复合类型的子映射应该遵循与片段相同的规则。例如,在输出中,一个复杂的字段是一个很好的子映射,它可以用于相同数据类型的其他字段。 在本节后面将讨论单输入、单输出不满足的情况。 规则3:使用映射的命名约定 与所有的编码风格一样,使用命名约定可以使准确定位映射的源位置变得更容易。如果遵循规则2,建议使用类似于MapTo < segmentname >的约定来命名映射。自动生成的映射将被命名为Map < segmentname >到<segmentname>。因此,PID段中的任何错误都将在MapPIDToPID的MapToPID子映射中找到。 规则4:只在需要时访问多个级别
使用与下面类似的多级表示法来访问段和字段中的项目,通常看起来更容易使用。
然而,这被认为是糟糕的代码设计,应该尽可能避免。它降低了代码的可维护性和清晰性,不支持重用。
您应该按照前面的规则创建子映射,以将您的语句降低到单个级别。上面的示例最好用以下代码来表示:
如果您坚持使用多层路径,那么您必须检查字段是否存在,然后才能访问字段值。例如:
规则5:使用注释的文档映射代码 与其他编码风格一样,映射应该使用在mapper中的注释块中进行记录。当生成代码时,很容易忘记,其他人需要快速地对映射进行更改,而不需要阅读每一行代码。代码的每一小部分都应该以描述代码的目的的注释开始,以使后面的编辑更容易。
|