使用 SELECT 语句轮询 Oracle 电子商务套件

可以使用 SELECT 语句连续轮询 Oracle E-Business Suite 中的接口表、接口视图、表和视图,将 Oracle 电子商务适配器配置为接收定期数据更改消息。 可以将 SELECT 语句指定为适配器定期执行的轮询语句,以轮询 Oracle E-Business Suite。 还可以指定适配器在执行轮询语句后执行的轮询后 PL/SQL 代码块。

若要启用轮询,必须在 WCF-Custom 或 WCF-OracleEBS 接收端口上指定某些绑定属性。 有关适配器如何支持轮询的详细信息,请参阅 支持使用轮询的入站调用。 有关用于轮询操作的 SOAP 消息的结构的信息,请参阅 轮询操作的消息架构

使用 Oracle E-Business Suite 适配器绑定属性配置轮询操作

下表汇总了用于配置适配器以接收数据更改消息的 Oracle E-Business 适配器绑定属性。 在 BizTalk Server 管理控制台中配置接收端口时,必须指定这些绑定属性。

Binding 属性 说明
InboundOperationType 指定是要执行 轮询 还是 通知 入站操作。 默认值为 轮询
PolledDataAvailableStatement 指定适配器执行的 SQL 语句,以确定是否有任何数据可用于轮询。 仅当记录可用时,才会执行为 PollingInput 绑定属性指定的 SELECT 语句。
PollingInterval 指定 Oracle E-Business 适配器执行为 PolledDataAvailableStatement 绑定属性指定的语句的间隔(以秒为单位)。 默认为 30 秒。 轮询间隔确定连续轮询之间的时间间隔。 如果在指定的时间间隔内执行语句,则适配器在间隔中的剩余时间内休眠。
PollingInput 指定轮询语句。 若要使用 SELECT 语句轮询,必须为此绑定属性指定 SELECT 语句。 默认值为 NULL。

必须指定 PollingInput 绑定属性的值才能启用轮询。 仅当有可供轮询的数据(由 PolledDataAvailableStatement 绑定属性确定)时,才会执行轮询语句。
PollingAction 指定轮询操作的操作。 可以使用使用适配器服务外接程序从为操作生成的元数据中确定特定操作的轮询操作。
PostPollStatement 指定在执行 PollingInput 绑定属性指定的语句之后执行的语句块。
PollWhileDataFound 指定 Oracle 电子商务适配器是否忽略轮询间隔并连续执行轮询语句(如果轮询表中的数据可用)。 如果表中没有可用数据,适配器将还原为在指定的轮询间隔内执行轮询语句。 默认值为 false。

有关这些属性的更完整说明,请参阅 阅读有关适用于 Oracle E-Business Suite 绑定属性的 BizTalk 适配器。 有关如何使用 Oracle 电子商务适配器轮询 Oracle 数据库的完整说明,请进一步阅读。

本主题如何演示轮询

在本主题中,为了演示 Oracle E-Business 适配器如何支持使用 SELECT 语句接收数据更改消息,请创建 BizTalk 项目并为要轮询的表的 轮询 操作生成架构。 在本主题中,我们将为应用程序对象库应用程序中的 MS_SAMPLE_EMPLOYEE 接口表生成轮询操作的架构。 运行示例随附的 create_apps_artifacts.sql 脚本以在 Oracle E-Business Suite 中创建这些对象时,会创建此表。

接下来,我们将在 BizTalk Server 中使用基于内容的路由 (CBR) 来配置应用程序,该接收端口将接收来自 MS_SAMPLE_EMPLOYEE 接口表的轮询消息,然后将其路由到发送端口。 在这种情况下,我们将在发送端口上创建一个筛选器,用于检查指定的接收位置,并将消息路由到发送端口。

为了演示轮询操作,我们执行以下操作:

  • PolledDataAvailableStatement 绑定属性指定 SELECT 语句,以确定要轮询的接口表 (MS_SAMPLE_EMPLOYEE) 具有任何数据的位置。 在此示例中,可以将此绑定属性设置为:

    SELECT COUNT (*) FROM MS_SAMPLE_EMPLOYEE  
    

    这可确保适配器仅在MS_SAMPLE_EMPLOYEE接口表具有一些记录时执行轮询语句。

  • PollingInput 绑定属性指定 SELECT 语句。 此语句检索MS_SAMPLE_EMPLOYEE接口表中的所有行。 在此示例中,可以将此绑定属性设置为:

    SELECT * FROM MS_SAMPLE_EMPLOYEE FOR UPDATE  
    

    注意

    有关 SELECT 语句中使用的 FOR UPDATE 子句的信息,请参阅 使用 SELECT 语句轮询 Oracle E-Business Suite

  • 指定 DELETE 语句作为 PostPollStatement 绑定属性的一部分。 此语句将删除MS_SAMPLE_EMPLOYEE接口表中的所有数据。 在此示例中,可以将此绑定属性设置为:

    DELETE FROM MS_SAMPLE_EMPLOYEE  
    

    发生这种情况后,下次执行为 PollingInput 指定的语句时,不会提取任何数据。

  • 在将更多数据添加到 MS_SAMPLE_EMPLOYEE 接口表之前,你不会收到任何轮询消息。 因此,必须使用新记录重新填充MS_SAMPLE_EMPLOYEE接口表。 为此,可以运行示例随附的 insert_apps_data.sql 脚本。 运行此脚本后,下一个轮询操作将提取插入到表中的新记录。

如何从 Oracle 电子商务套件接收数据更改消息

使用 Oracle E-Business 适配器和 BizTalk Server 在 Oracle 数据库上执行操作涉及构建基块以创建 Oracle E-Business Suite 应用程序中所述的以下过程任务。 若要配置适配器以使用 SELECT 语句轮询 Oracle E-Business Suite,这些任务包括:

  1. 创建 BizTalk 项目,并为要轮询的接口表的 轮询 操作生成架构。

  2. 生成和部署 BizTalk 项目。

  3. 通过创建接收和发送端口配置 BizTalk 应用程序。 此外,在发送端口上添加筛选器,以便检查接收端口中指定的接收位置,并将轮询消息路由到发送端口。

    重要

    对于入站轮询方案,必须始终配置单向接收端口。 入站操作不支持双向接收端口。

  4. 启动 BizTalk 应用程序。

    本主题提供有关执行这些任务的说明。

基于本主题的示例

BizTalk 适配器包还提供了基于本主题的示例 PollingUsingSelectStatement。 有关更多信息,请参阅示例

生成架构

必须在应用程序对象库应用程序中的 MS_SAMPLE_EMPLOYEE 接口表上生成轮询操作的架构。 使用使用适配器服务加载项生成架构时执行以下任务。

  • 选择协定类型作为 “服务” (“入站”操作)

  • 为MS_SAMPLE_EMPLOYEE接口表上的 轮询 操作生成架构。 可以从 “基于应用程序的视图 ”节点或“ 基于项目的 视图”节点中选择操作和接口表。

    有关如何生成架构的详细信息,请参阅 浏览、搜索和获取 Oracle E-Business Suite 操作的元数据

生成和部署 BizTalk 项目

现在必须生成 BizTalk 解决方案,并将其部署到BizTalk Server。 有关将解决方案部署到BizTalk Server的信息,请参阅将 BizTalk 程序集从 Visual Studio 部署到 BizTalk 应用程序

配置 BizTalk 应用程序

部署 BizTalk 项目后,应用程序会在 BizTalk Server 管理控制台的“应用程序”节点下列出。 必须使用 BizTalk Server 管理控制台来配置应用程序。 在配置应用程序时,必须在应用程序中创建接收端口和发送端口,然后将筛选器添加到发送端口,以便来自接收端口的所有消息都路由到发送端口。

配置应用程序涉及:

  • 为应用程序选择主机。

  • 创建接收和发送端口。

创建接收端口

必须创建 WCF-Custom 或 WCF-OracleEBS 单向接收端口,该端口使用为 PollingInput 绑定属性指定的 SELECT 语句轮询 Oracle。 有关如何创建接收端口的信息,请参阅 手动配置到 Oracle 电子商务适配器的物理端口绑定。 创建接收端口时,请确保指定以下绑定属性。

用于轮询

Binding 属性
InboundOperationType 将此设置为 轮询
PolledDataAvailableStatement 对于此示例,请将此绑定属性设置为:

SELECT COUNT (*) FROM MS_SAMPLE_EMPLOYEE
PollingAction 从为MS_SAMPLE_EMPLOYEE接口表上的轮询操作生成的架构中检索 轮询 操作。 对于此示例,将此绑定属性设置为 InterfaceTables/Poll/FND/APPS/MS_SAMPLE_EMPLOYEE
PollingInput 对于此绑定属性,请指定 SELECT 语句以从MS_SAMPLE_EMPLOYEE接口表检索所有记录。 对于此示例,请将此绑定属性设置为:

SELECT * FROM MS_SAMPLE_EMPLOYEE FOR UPDATE
PostPollStatement 指定投票后语句以从MS_SAMPLE_EMPLOYEE接口表中删除所有数据。 对于此示例,请将此绑定属性设置为:

DELETE FROM MS_SAMPLE_EMPLOYEE

用于设置应用程序上下文

如果要对 Oracle E-Business Suite 项目执行操作,则必须为相应的绑定属性指定值以设置应用程序上下文。 有关设置应用程序上下文所需的应用程序上下文和绑定属性的详细信息,请参阅 设置应用程序上下文

对于此示例,请为 oracleUserNameoraclePasswordoracleEBSResponsibility 绑定属性指定适当的值。

注意

建议在使用 Oracle 电子商务适配器执行入站操作时配置事务隔离级别和事务超时。 为此,可以在配置接收端口时添加服务行为。 有关如何添加服务行为的说明,请参阅 使用 Oracle E-Business Suite 配置事务隔离级别和事务超时

创建发送端口

在硬盘上定义一个位置,并创建相应的 FILE 发送端口,BizTalk Server将删除来自 Oracle 的消息。 这些消息将响应你为接收端口指定的轮询语句。 有关如何创建发送端口的信息,请参阅 手动配置到 Oracle 电子商务适配器的物理端口绑定

还必须在发送端口上添加筛选器,以便从接收位置路由消息。 将筛选器添加到发送端口:

  1. 双击发送端口以打开“ 发送端口属性 ”对话框。

  2. 在“ 发送端口属性 ”对话框中,单击“ 筛选器 ”选项卡。

  3. 指定以下值:

    • “属性 ”列表中,单击“ BTS”。ReceivePortName

    • “操作员 ”列表中,单击 ==

    • “值” 字段中,指定接收端口名称。

  4. 在“ 发送端口属性 ”对话框中,单击“ 确定”。

启动应用程序

必须启动 BizTalk 应用程序才能轮询 Oracle E-Business Suite。 有关启动 BizTalk 应用程序的说明,请参阅 如何启动业务流程

在此阶段,请确保:

  • WCF-Custom 或 WCF-OracleEBS 单向接收端口正在运行,该端口使用为 PollingInput 绑定属性指定的 SELECT 语句轮询 Oracle。

  • 从 Oracle 数据库接收消息的 FILE 发送端口正在运行。

执行操作

运行应用程序后,将按相同的顺序执行以下一组操作:

  • 适配器执行 PolledDataAvailableStatement ,该状态返回一个正值,指示适配器执行为 PollingInput 绑定属性指定的语句。

  • 适配器执行 PollingInput 绑定属性的 SELECT 语句,并返回MS_SAMPLE_EMPLOYEE接口表中的所有行。 Oracle E-Business Suite 的响应如下所示:

    <?xml version="1.0" encoding="utf-8" ?>   
    <Poll xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/InterfaceTables/FND/APPS/MS_SAMPLE_EMPLOYEE">   
      <DATA>   
        <SelectRecord xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/TableViewRecord/APPS/MS_SAMPLE_EMPLOYEE">   
         <EMP_NO>10002</EMP_NO>   
         <NAME>JEFF PRICE</NAME>   
         <DESIGNATION>MANAGER</DESIGNATION>   
         <SALARY>25000</SALARY>   
         <JOIN_DATE>2007-12-15T00:00:00</JOIN_DATE>   
        </SelectRecord>   
        <SelectRecord xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/TableViewRecord/APPS/MS_SAMPLE_EMPLOYEE">   
         <EMP_NO>10003</EMP_NO>   
         <NAME>DON HALL</NAME>   
         <DESIGNATION>ACCOUNTANT</DESIGNATION>   
         <SALARY>12000</SALARY>   
         <JOIN_DATE>2005-10-29T00:00:00</JOIN_DATE>   
        </SelectRecord>   
        …        
        <SelectRecord xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/TableViewRecord/APPS/MS_SAMPLE_EMPLOYEE">   
         …   
        </SelectRecord>   
        …   
      </DATA>   
    </Poll>  
    
  • 适配器执行投票后语句,该语句从MS_SAMPLE_EMPLOYEE接口表中删除所有数据。

  • 在轮询间隔后,适配器再次执行 PolledDataAvailableStatement。 由于 MS_SAMPLE_EMPLOYEE 接口表现在没有记录, 因此 PolledDataAvailableStatement 不返回正值,因此适配器不会执行为 PollingInput 绑定属性指定的语句。 因此,适配器客户端不会收到任何轮询消息。

  • 在将某些记录显式插入MS_SAMPLE_EMPLOYEE接口表之前,适配器客户端不会再收到任何轮询消息。 若要插入更多记录,可以运行示例随附的 insert_apps_data.sql 脚本。 运行此脚本后,下次执行 PolledDataAvailableStatement 时,它将返回正值。 因此,适配器执行轮询语句,适配器客户端再次接收轮询消息。

注意

Oracle E-Business 适配器将继续轮询,直到从 BizTalk Server 管理控制台显式禁用接收端口。

最佳实践

部署并配置 BizTalk 项目后,可以将配置设置导出到名为绑定文件的 XML 文件。 生成绑定文件后,可以从文件导入配置设置,这样就无需创建发送端口和接收端口。 有关绑定文件的详细信息,请参阅 使用 Oracle E-Business Suite 重用适配器绑定

另请参阅

使用 BizTalk Server 轮询 Oracle 电子商务套件