可视连接器框架的工作方式

连接器使用连接器模块与 SAP 应用程序交互。连接器模块调用 SAP 的本机接口并将数据(业务对象或事件数据)传递至 SAP 应用程序和从 SAP 应用程序中传递出来。连接器的灵活设计使不同模块能够用于不同任务,如初始化 SAP 应用程序的连接器或传递业务对象数据。

连接器和 SAP 应用程序之间的通信

连接器使用 SAP 的远程功能调用(RFC)库来与 SAP 应用程序通信。SAP 的 RFC 使外部程序能够调用 SAP 应用程序内的 ABAP 功能模块。

处理业务对象

连接器是元数据驱动的。在 WebSphere Business Integration 系统中,元数据是特定于应用程序的数据,它存储在业务对象中并有助于连接器模块与应用程序交互。元数据驱动的连接器模块基于业务对象定义中编码的元数据而不是连接器模块中硬编码的指令,来处理它支持的每个业务对象。

业务对象元数据包括业务对象结构、其属性特性设置和其特定于应用程序的信息的内容。因为连接器模块是元数据驱动的,所以它们可以处理新的或修改的业务对象而不必修改连接器模块代码。

可视连接器框架使用 顶级业务对象中特定于应用程序的查询描述信息值,调用适当的连接器模块来处理业务对象。特定于应用程序的查询描述信息提供连接器模块的类名。

大多数顶级业务对象的特定于应用程序的查询描述信息必须标识连接器模块的类名。此特定于应用程序的查询描述信息的语法如下:

AppSpecificInfo = PartialPackageName.ClassName,
 

例如:

AppSpecificInfo = sap.sapextensionmodule.VSapBOHandler,
 

在此示例中,sap.sapextensionmodule 是部分包名,VSapBOHandler 是类名。完整的包名包括 com.crossworlds.connectors 前缀,WebSphere Business Integration 系统自动将该前缀添加至名称。换句话说,示例的完整文本为:

com.crossworlds.connectors.sap.sapextensionmodule.VSapBOHandler
 

注:
大多数特定于应用程序的顶级业务对象查询描述信息 都必须在连接器类名后面使用逗号(,)定界符。但是,由 RFC 服务器模块使用的服务器查询描述却是由分号定界(;)。有关服务器查询描述的信息,请参阅"RFC 服务器模块的工作方式""受支持的查询描述"

在下列情况下,您不必为特定于应用程序的查询描述信息指定包名和类名:

重要提示:
为 RFC 服务器模块处理业务对象的客户生成的连接器模块必须指定一个完整的包名,该名称必须以 bapi 开头。例如,bapi.client.Bapi_customer_getdetail2。此示例中的完整包名是 bapi.client,类名是 Bapi_customer_getdetail2

大多数业务对象处理是特定于每个连接器模块的。缺省情况下,连接器使用 ABAP 扩展模块。有关 ABAP 扩展模块的业务对象处理的更多信息,请参阅安装和定制 ABAP 扩展模块"传递至 ABAP 处理程序的业务对象数据"。.

有关为 ALE 模块指定特定于应用程序的查询描述信息的详情,请参阅事件处理处理多个具有包装程序业务对象的 IDoc

处理多个并发交互

适配器框架可以创建不同的线程来处理应用程序事件和业务对象请求。当处理多个来自集成代理程序的请求时,它可以创建多个线程来处理多个业务对象请求。例如,当 InterChange Server 是集成代理程序时,连接器可以接收来自多个协作或来自一个多线程协作的多个业务对象请求。

图 4 举例说明了多线程体系结构。

图 4. SAP 连接器的多线程体系结构


事件处理

连接器在处理轮询调用时执行以下步骤:

  1. 适配器框架创建单个专用线程来处理轮询调用。此线程以在 PollFrequency 配置属性中指定的频率调用可视连接器框架的 pollForEvents() 方法。
  2. 该线程轮询 SAP,SAP 使用对话进程来查找并返回事件。
    注:
    如果连接器的 MaxNumberOfConnections 配置属性求值为大于 1 的数字,则可视连接器框架将一个连接专门用于 SAP 进行轮询。如果 MaxNumberOfConnections 求值为 1,则事件和服务调用请求处理共享与 SAP 的单个连接。

仅当连接器关闭时轮询线程才会停止运行。

注:
因为 RFC 服务器连接器代理程序将事件推送到 SAP 外部来代替轮询事件,所以它衍生自己的线程来代替使用由连接器框架创建的线程。因为 ALE 连接器代理程序使用 RFC 服务器连接器代理程序来访问事件,所以它也在处理事件时衍生它自己的线程来代替使用由连接器框架创建的线程。

请求处理

适配器框架与轮询无关,可以创建多个请求处理线程,每个请求业务对象使用一个线程。每个请求线程都会实例化适当的业务对象处理程序。

例如,当处理来自 InterChange Server 的业务对象请求时,业务对象处理程序的数目和类型取决于发送请求的协作的数目和类型:

如果连接器的 MaxNumberOfConnections 配置属性求值为大于 1 的数字,则可视连接器框架将一个连接专门用于 SAP 进行轮询,并将其余连接分配给仅用于请求处理的池。

图 4 中所示,连接器在处理业务对象请求时执行以下步骤:

  1. 适配器框架为每个业务对象请求创建不同的线程。每个线程调用可视业务对象处理程序的 doVerbFor() 方法。
  2. 如果连接器的 MaxNumberOfConnections 配置属性求值为大于 1 的数字,则可视业务对象处理程序检查可视连接器框架的连接池以确定连接句柄是否可用。

    如果连接器的 MaxNumberOfConnections 配置属性求值为 1,则可视业务对象处理程序与事件处理共享一个连接。

  3. SAP 在完成处理并发送返回码之后释放对话进程。
  4. 连接器在从 SAP 接收到返回码之后释放连接句柄。

设置可用连接数

使用 MaxNumberOfConnections 配置属性来指定最大可用连接句柄数。连接数不能超过对话进程数。

SAP 在处理交互时锁定对话进程,仅当交互完成时才释放它。因此,多个并发请求锁定相同数目的对话进程,直到处理完成为止。

重要提示:
在为 MaxNumberOfConnections 设置值之前,联系 SAP BASIS 管理员以确定一个适当的值,以使吞吐量最大而又不会对应用程序服务器的性能产生负面影响。

对多个连接的支持

缺省情况下,连接器支持多个线程。

Copyright IBM Corp. 1997, 2004