ALE 模块是用 Java 语言编写的,它扩展可视连接器框架。该模块由以下各项组成:
因为事件处理的相似性都支持直接来自 SAP 应用程序的 RFC 调用,所以 ALE 模块使用 RFC 服务器连接器组件。
SAP 以 Java 和 C 语言交付 RFC 库。Java 归档(JAR)文件将作为连接器交付并运行。
图 50 举例说明了 ALE 模块的体系结构。
当处理来自 SAP 的事件时,连接器通过以下方式使用图 50 中举例说明的组件:
事件是将数据传送至侦听器的 ABAP 功能的执行过程。由 SAP 发送的事件数据可能表示一个或多个这样不同种类的执行过程。
来自 SAP 的每个事件都被认为是一个事务。连接器使用带有事务标识(TID)的两步骤进程来处理每个事件,以保证将数据从 SAP 传递至连接器仅一次。
为了获得更高效的处理性能,连接器将大型 IDoc 分成更小的部分,每一部分就是转换为更小的业务对象的 JMS-MQ 消息。这些消息中的每条消息都包含 MultiPartMessage 属性,该属性标识它具有更大消息的适当部分。例如,假定将原始的更大 IDoc 分成 8 条 JMS-MQ 消息,则每一部分的 MultiPartMessage 属性的值分别为 8 部分中的第 1 部分、8 部分中的第 2 部分,依次类推。为了使所有消息部分都互相关联,连接器将除了第一条消息之外的每个消息部分的 CorrelationID 头属性设置为第一部分的 JMSMessageID 属性的值。反过来,第一部分的 CorrelationID 属性始终设置为该属性在与原始大型 IDoc 相对应的第一条 JMS-MQ 消息中的值。有关 JMS-MQ 消息属性的详细信息,请参阅表 19。
当处理来自集成代理程序的事件时,连接器通过以下方式使用图 50 中举例说明的组件:
侦听器线程执行以下操作:
线程以同步方式连续侦听事件(这些事件来自它支持的特定于 ALE 的功能)。
SAP 使用事务及其相应的标识来构造事件,以保证将每段数据从 SAP 传递一次,且仅传递一次。SAP 将事务标识(TID)随事件数据一起发送。为了集中管理 TID 以进行事件和请求处理,连接器在 WebSphere MQ 队列上将每个 TID 存储为一条 JMS-MQ 消息。当处理事件时,它还将相关的 IDoc 数据存储为消息体。连接器将 TID、TID 状态和 IDoc 的处理状态存储在消息头中。
提供了两个特定于 ALE 的业务对象处理程序,一个用于事件处理,一个用于请求处理。
侦听器线程实例化事件处理业务对象处理程序,该处理程序执行以下操作:
可视连接器框架实例化 ALE 请求处理业务对象处理程序,该处理程序检查 SAP 的 WebSphere 业务对象中 TransactionId 属性的值。如果此值存在,它继续执行以下步骤。
SAP 的 WebSphere 业务对象将每个 IDoc 表示为包含两个子业务对象(控制记录业务对象和数据记录业务对象)的父包装程序业务对象。控制记录业务对象包含连接器处理业务对象所必需的元数据。数据记录业务对象包含将由 SAP 应用程序处理的实际业务对象数据以及元数据,连接器将需要该元数据以将其转换为 IDoc 结构以进行 RFC 调用。
连接器包括控制记录的业务对象定义。定义文件 sap_idoccontrol.xsd 位于 \repository\SAP 目录中。
控制记录业务对象中的 TABNAM 属性指示父包装程序业务对象将调用哪个 SAP 功能模块:
另外,以下属性必须具有值,这样 SAP 才能够正确地在 ALE 中处理对象。这些值基于您的 ALE 配置:
两个业务对象中的 DOCNUM 属性都会在数据记录业务对象与控制记录业务对象之间建立关系。
当处理服务调用请求时,ALE 模块可以处理单个业务对象中的多个 IDoc。但是,在它可以进行处理前,您必须在两个或更多父包装程序业务对象周围添加另一个多 IDoc 包装程序业务对象。这个顶级多 IDoc 包装程序业务对象包含一个表示一组父包装程序业务对象的属性。有关更多信息,请参阅父包装程序业务对象。
连接器包括一个业务对象生成工具 SAPODA。此工具使用 IDoc 定义文本文件来生成此 ALE 模块的业务对象定义。有关开发 ALE 模块的业务对象的更多信息,请参阅为 ALE 模块开发业务对象和使用 SAPODA 生成业务对象定义。