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

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

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

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

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

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

必须为 PollingInput 绑定属性指定一个值才能启用轮询。 仅当有数据可用于轮询时,才会执行轮询语句,该数据由 PolledDataAvailableStatement 绑定属性确定。
PollingAction 指定轮询操作的动作。 可以使用适配器服务外接程序为操作生成的元数据,确定特定操作的轮询动作。
投票后声明 指定在执行 PollingInput 绑定属性指定的语句后执行的语句块。
PollWhileDataFound 指定 Oracle E-Business 适配器是否忽略轮询间隔并连续执行轮询语句(如果正在轮询的表中的数据可用)。 如果表中没有可用数据,适配器将还原为按指定的轮询间隔执行轮询语句。 默认值为 false。

有关这些属性的更完整说明,请参阅 有关 Oracle 电子商务套件绑定属性的 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 电子商务套件

  • 将 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 应用程序。

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

基于本主题的示例

基于本主题的示例 PollingUsingSelectStatement 也随 BizTalk 适配器包一起提供。 有关详细信息,请参阅 示例

生成架构

必须在应用程序对象库应用程序中为MS_SAMPLE_EMPLOYEE接口表的轮询操作生成架构。 使用“Consume Adapter Service Add-in”生成架构时执行以下任务。

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

  • 为MS_SAMPLE_EMPLOYEE接口表的 轮询 操作生成架构。 可以从 Application-Based 视图 节点或 构件 -Based 视图 节点中选择操作和接口表。

    有关如何生成架构的详细信息,请参阅 浏览、搜索和获取 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 将此设置为 轮询
数据可用性声明 对于此示例,请将此绑定属性设置为:

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
投票后声明 指定轮询后语句以从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 电子商务套件。 有关启动 BizTalk 应用程序的说明,请参阅 如何启动业务流程

在此阶段,请确保:

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

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

执行操作

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

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

  • 适配器执行 PollingInput 绑定属性的 SELECT 语句,并返回MS_SAMPLE_EMPLOYEE接口表中的所有行。 Oracle 电子商务套件的响应如下所示:

    <?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 电子商务适配器会继续轮询,除非您在 BizTalk Server 管理控制台中显式禁用接收端口。

最佳做法

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

另请参阅

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