支持使用轮询的入站调用

Microsoft BizTalk Adapter for Oracle E-Business Suite 使客户端程序能够接收来自 Oracle 电子商务套件的消息,通知它们对 Oracle E-Business Suite 中的数据发生更改。 Oracle 电子商务适配器支持接收“基于轮询的”消息,其中适配器在包中执行指定的 SQL 语句、存储过程、函数或过程,检索数据,并定期向客户端提供结果。

注意

还可以在 Oracle 电子商务适配器中为轮询操作设置应用程序上下文。 如果在接口表或接口视图上执行该操作,则必须设置轮询操作的应用程序上下文。 有关应用程序上下文以及如何设置它的信息,请参阅 设置应用程序上下文

使用 Oracle E-Business 适配器的典型轮询操作涉及以下内容:

  1. 适配器客户端必须在 InboundOperationType 绑定属性中指定Polling为入站操作。 此绑定属性的默认值为 Polling

  2. 适配器客户端必须为 PolledDataAvailableStatement 绑定属性指定 SELECT 语句,以确定是否有可用于轮询的数据。 如果执行此语句时返回的第一个结果集的第一行的第一列包含正整数值,则有可用于轮询的日期。

  3. 适配器客户端必须为 PollingInterval 绑定属性指定轮询间隔,以定义执行 PolledDataAvailableStatement 绑定属性中指定的语句的间隔(以秒为单位)。 在每个轮询间隔结束时,将执行轮询的数据可用语句,并返回结果集。

  4. 适配器客户端必须为 PollingInput 绑定属性指定 SELECT 语句或存储过程。 如果要轮询表或视图,则必须为此绑定属性指定 SELECT 语句。 如果要使用存储过程进行轮询,则必须为此绑定属性指定整个请求消息。

    仅当有可供轮询的数据时, PollingInput 绑定属性中的 语句才会执行,这由步骤 2 中的 PolledDataAvailableStatement 绑定属性确定。

  5. 适配器客户端必须在 PollingAction 绑定属性中为轮询操作指定操作。 特定操作的轮询操作是根据使用使用适配器服务加载项为操作生成的元数据确定的。

  6. 适配器客户端可以使用 PollWhileDataFound 绑定属性来忽略轮询间隔,并在可用时连续轮询数据。

    重要

    如果将 PollWhileDataFound 绑定属性的值设置为 True,适配器客户端会持续轮询 Oracle 中的数据,并在过程中以循环方式打开和关闭与 Oracle 数据库的连接。 由于 ODP.NET 打开连接的速率大于正在关闭的连接,因此连接在一段时间后耗尽,并引发异常。 作为解决方法,请确保 UseOracleConnectionPool 的值设置为 True,并在 IncrPoolSize 绑定属性中提到适当的值,以控制适配器客户端可以打开的连接数。

  7. 适配器客户端可以为 PostPollStatement 绑定属性指定轮询后语句(Oracle PL/SQL 块)。 在此绑定属性中指定的语句在执行 PollingInput 绑定属性中指定的语句之后执行。

    注意

    适配器执行事务中的 PollingInputPostPollStatement 绑定属性中指定的语句。 有关 Oracle E-Business 适配器中的事务的详细信息,请参阅 适配器如何处理事务?

    适配器禁止来自 Oracle E-Business Suite 的任何空轮询响应。

    下图提供有关 Oracle 电子商务适配器中的轮询工作流的信息。 演示了轮询工作流的两种方案:

  8. PollWhileDataFound 的值设置为“False”时, (默认设置) 。

  9. PollWhileDataFound 的值设置为“True”时。

    轮询方案 (PollWhileDataFound=False) 轮询方案 (PollWhileDataFound = True)

轮询和通知之间的差异

尽管轮询和通知都是入站操作,并通知适配器客户端有关 Oracle 数据库中的数据更改,但下表列出了两者之间的一些差异。 以下差异将帮助你根据要求决定操作:

轮询 通知
Oracle 电子商务适配器支持的所有 Oracle 数据库版本都支持轮询。 仅 Oracle 数据库版本 10.2 及更高版本支持通知。
可以将轮询间隔配置为检查可用于定期轮询的数据,也可以在数据可用时立即进行轮询。 提示: 在数据更改持续发生且不希望每次更改发生时收到通知的情况下,轮询可以提供更好的吞吐量。 而是指定一个轮询间隔,在此间隔之后,你希望收到自上次更改通知以来发生的所有更改的通知。 数据更改通知始终是即时的。
轮询由适配器启动。 适配器执行 SQL 语句来验证数据是否可用于轮询,如果某些数据可用于轮询,则通过执行轮询语句来启动轮询。 通知由 Oracle 数据库启动。 适配器发出的通知语句只是指示数据库启动通知,以防语句的结果集中发生更改。 通知是 Oracle 数据库的一项功能。
可以使用轮询语句读取或更新 Oracle 数据库中的数据。 可以使用通知语句仅读取 Oracle 数据库中的数据。
轮询会通知你已更改的实际数据。 通知仅通知数据中的更改类型,例如“插入”、“更新”和“删除”。

详细信息:

另请参阅

可以使用适配器执行哪些操作?