在 Oracle E-Business Suite 中调用并发程序

Oracle E-Business Suite 提供可执行的并发程序,以便在 Oracle 应用程序上执行特定操作。 每个 Oracle 应用程序都有一组标准并发程序(在所有作中相同)和特定于 Oracle 应用程序的某些并发程序。 Oracle E-Business 适配器将所有并发程序公开为供适配器客户端调用的操作。 有关适配器如何支持并发程序的详细信息,请参阅 并发程序上的作。 有关用于调用并发程序的 SOAP 消息结构的信息,请参阅 并发程序的消息架构

注释

对于不公开其元数据的并发程序,Oracle E-Business 适配器为每个并发程序公开 100 个可选参数。 若要成功调用这些并发程序,用户必须查阅 Oracle E-Business Suite 文档,以找出需要值的并发程序的参数,然后指定它们。 此类并发程序的一个示例是“常规账本”应用程序中的“日记导入”(实际名称:GLLEZL)。

先决条件

必须已完成先决条件中的步骤 才能创建 Oracle E-Business Suite 应用程序

如何在 Oracle 应用程序中调用并发程序

在 Oracle E-Business Suite 上使用 Oracle E-Business 适配器与 BizTalk Server 执行操作,包括在 构建 Oracle E-Business Suite 应用程序的基块 中描述的程序任务。 若要调用并发程序,这些任务包括:

  • 创建 BizTalk 项目,并为要调用的并发程序生成架构。

  • 在 BizTalk 项目中创建消息,以便发送和接收 Oracle 电子商务套件的消息。

  • 创建编排以调用并发程序。

  • 生成和部署 BizTalk 项目。

  • 通过创建物理发送和接收端口来配置 BizTalk 应用程序。

  • 启动 BizTalk 应用程序。

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

生成架构

本主题演示如何从应收账款应用程序调用客户接口并发计划。 此应用程序可用于默认 Oracle E-Business Suite 应用程序。 此并发程序返回请求 ID。 若要检查并发程序的状态,我们通过传递客户接口并发程序响应中收到的请求 ID 来执行Get_Status并发程序。

在本主题中,我们将生成 客户接口Get_Status 并发程序的架构。 有关如何生成模式的详细信息,请参阅 在 Visual Studio 中检索 Oracle 电子商务套件作业的元数据

定义消息和消息类型

前面生成的架构描述了业务流程中消息所需的“类型”。 消息通常是变量,类型由相应的架构定义。 现在必须为编排创建消息,并将其链接到在上一步中生成的架构。

在此业务流程中,您必须创建四条消息——一条接收-响应消息用于调用 Customer Interface 并发程序,另一条接收-响应消息用于调用 Get_Status 并行程序。

  1. 将一项编排添加到 BizTalk 项目中。 在解决方案资源管理器中,右键单击 BizTalk 项目名称,指向 “添加”,然后单击“ 新建项”。 键入 BizTalk 业务流程的名称,然后单击“ 添加”。

  2. 打开 BizTalk 项目的“业务流程视图”窗口(如果尚未打开)。 为此,请单击“ 视图”,指向 “其他窗口”,然后单击“ 业务流程视图”。

  3. 在业务流程视图中,右键单击 “消息”,然后单击“ 新建消息”。

  4. 右键单击新创建的消息,然后选择“ 属性窗口”。

  5. Message_1“属性”窗格中,执行以下作:

    用这个 要执行的操作
    标识符 类型 Request
    消息类型 在下拉列表中,展开 “架构”,然后选择 ConcurrentProgram.OracleEBSBindingSchema.RACUST,其中 ConcurrentProgram 是 BizTalk 项目的名称。 OracleEBSBindingSchema 是生成用于调用 客户接口 并发程序的架构。 注意: RACUST 是 客户接口 并发程序的实际名称。 虽然使用适配器服务外接程序显示友好名称(客户接口),但架构包含并发程序的实际名称。
  6. 重复步骤 3 以创建三个新消息。 在新消息的 “属性 ”窗格中,执行以下作:

    将标识符设置为 将消息类型设置为
    响应 ConcurrentProgram.OracleEBSBindingSchema.RACUSTResponse
    获取状态请求 ConcurrentProgram.OracleEBSBindingSchema1.GetStatusForConcurrentProgram
    获取_状态响应 ConcurrentProgram.OracleEBSBindingSchema1.GetStatusForConcurrentProgramResponse

设置业务流程

必须创建 BizTalk 业务流程才能使用 BizTalk Server 在 Oracle E-Business Suite 中调用并发程序。 在此编排中,您将在定义的接收位置放置一个请求消息。 业务流程使用此消息并将其传递给 Oracle E-Business Suite,以调用 客户接口 并发程序。 并发程序的响应从 Oracle 接收,并保存在另一个位置。 响应消息包含请求 ID。 业务流程包括构造 消息 形状,用于从响应中提取请求 ID,并构造符合 Get_Status 并发程序的架构的消息。 调用 Get_Status 并发程序的消息将发送到具有请求 ID 作为参数的 Oracle E-Business Suite。 必须包括发送和接收形状、消息构造形状和端口,才能将消息发送到 Oracle 并接收响应。

通常, 客户接口 并发程序需要一些时间才能执行,因此需要在执行 Get_Status 并发之前等待。 可以通过添加 延迟 形状来实现这一过程的自动化。

示例编排如下所示:

调用并发程序的编排

添加消息形状

为每个消息形状指定以下属性。 形状列中列出的名称对应于在前述编排中显示的消息形状。

形状 形状类型 性能
接收消息 接收 - 将 名称 设置为 ReceiveMessage
- 将 “激活 ”设置为 True
发送消息 发送 - 将 名称 设置为 SendMessage
接收响应 接收 - 将 名称 设置为 ReceiveResponse
- 将 “激活 ”设置为 False
SendResponse 发送 - 将 名称 设置为 SendResponse
SendGetStatus 发送 - 将 名称 设置为 SendGetStatus
接收状态响应 接收 - 将 Name 设置为 ReceiveStatusResponse
- 将 “激活 ”设置为 False
保存状态响应 发送 - 将 名称 设置为 SaveStatusResponse

添加延迟形状

如果希望业务流程在调用 客户接口Get_Status 并发程序之间等待,则必须向业务流程添加 延迟 形状。 业务流程将客户接口并发程序的响应复制到 FILE 发送端口后,必须添加一个延迟形状。 因此,必须在 SendResponse 形状之后添加延迟形状。

延迟 模块中,可以通过在 延迟 模块的表达式编辑器中添加以下代码,指定业务流程在继续之前必须等待的时间间隔:

new System.TimeSpan(0,2,0)  

通过添加此代码,编排将等待两分钟,然后再继续。 有关如何配置 延迟 形状的详细信息,请参阅 如何配置延迟形状

添加构建消息模板

来自 Oracle E-Business Suite 的 Customer Interface 并发程序的响应包含请求 ID。 若要获取并发程序的状态,必须将与参数相同的请求 ID 传递给 Get_Status 并发程序。 为此,在编排过程中,您必须包括一个 构造消息 形状,并在其中加入一个 消息分配 形状。 构造消息形状的用途是:

  • 从客户 接口 并发程序收到的响应中提取请求 ID。

  • 构造一条消息,使其符合 Get_Status 并发程序的消息结构。

    对于 “构造消息 ”形状,请将 Message Constructed 属性设置为 Get_StatusRequest

    对于 “消息分配” 形状,请添加以下内容。 在添加代码之前,必须具备:

XmlDoc = new System.Xml.XmlDocument();  
XmlDoc.LoadXml("<GetStatusForConcurrentProgram xmlns='http://schemas.microsoft.com/OracleEBS/2008/05/ConcurrentPrograms/AR'><RequestId /></GetStatusForConcurrentProgram>");  
Get_StatusRequest = XmlDoc;  
Get_StatusRequest.RequestId = xpath(Response,"string(/*[local-name()='RACUSTResponse']/*[local-name()='RACUSTResult']/text())");  

添加端口

若要配置端口,请为每个逻辑端口指定下表中列出的属性。 端口列中列出的名称对应于业务流程中显示的端口的名称。

港口 性能
MessageIn - 将 标识符 设定为 MessageIn
- 将 类型 设置为 MessageInType
- 将 通信模式 设置为 单向
- 将通信方向设置为接收
LOBPort - 将 标识符 设置为 LOBPort
- 将 类型 设置为 LOBPortType
- 将 通信模式 设置为 请求-响应
- 将 通信方向 设置为 发送接收
ResponseOut - 将 标识符 设置为 ResponseOut
- 将 类型 设置为 ResponseOutType
- 将 通信模式 设置为 单向
- 将通信方向设置为发送
- 创建一个操作 Cust_Interface。 该操作用于 客户接口 并发程序。
- 创建一个操作Get_Status。 此操作用于 Get_Status 并发程序。
LOBPort_GetStatus - 将 标识符 设置为 LOBPort_GetStatus
- 将 类型 设置为 LOBPort_GetStatusType
- 将 通信模式 设置为 请求-响应
- 将 通信方向 设置为 发送接收

为动作形状指定消息并连接至端口

下表指定了为动作形状设置消息并将其链接到端口的属性值。 “形状”列中列出的名称对应于业务流程关系图中显示的消息形状的名称。

指定这些属性后,消息形状符和端口被连接,您的编排已完成。

现在必须生成 BizTalk 解决方案,然后将其部署到 BizTalk Server。 有关详细信息,请参阅 生成和运行业务流程

形状 性能
接收消息 - 将 消息 设置为 请求
- 将 操作 设置为 MessageIn.Cust_Interface.Request
发送消息 - 将 消息 设置为 请求
- 将 操作 设定为 LOBport.Cust_Interface.Request
接收响应 - 将 消息 设置为 响应
- 将 操作 设置为 LOBport.Cust_Interface.Response
SendResponse - 将 消息 设置为 响应
- 将 操作 设置为 ResponseOut.Cust_Interface.Request
SendGetStatus - 将 消息 设置为 Get_StatusRequest
- 将 操作 设置为 LOBPort_GetStatus.Get_Status.Request
接收状态响应 - 将 消息 设置为 Get_StatusResponse
- 将 操作 设置为 LOBPort_GetStatus.Get_Status.Response
保存状态响应 - 将 消息 设置为 Get_StatusResponse
- 将 操作 设置为 ResponseOut.Get_Status.Request

指定这些属性后,消息形状符和端口被连接,您的编排已完成。

现在必须生成 BizTalk 解决方案,然后将其部署到 BizTalk Server。 有关详细信息,请参阅 生成和运行业务流程

配置 BizTalk 应用程序

部署 BizTalk 项目后,前面创建的业务流程将列在 BizTalk Server 管理控制台中的 “业务流程 ”窗格下。 必须使用 BizTalk Server 管理控制台来配置应用程序。 有关演练,请参阅 演练:部署基本 BizTalk 应用程序

配置应用程序涉及:

  • 为应用程序选择主机。

  • 将业务流程中创建的端口映射到 BizTalk Server 管理控制台中的物理端口。 对于此编排,必须:

    • 请在硬盘上指定一个位置及其对应的文件端口,以便放置请求消息。 BizTalk 编排将接收请求消息并将其发送到 Oracle 电子商务套件。

    • 定义硬盘上的位置和相应的文件端口,BizTalk 业务流程将删除包含 Oracle E-Business Suite 响应的响应消息。

    • 定义两个物理 WCF-Custom 或 WCF-OracleEBS 发送端口-一个用于将消息发送到 Oracle E-Business Suite 以执行 客户接口 并发程序,另一个用于执行 Get_Status 并发程序。 还必须在发送端口中指定操作。 有关如何创建端口的信息,请参阅 手动配置到 Oracle 电子商务适配器的物理端口绑定

      若要使用 Oracle E-Business 适配器调用并发程序,必须设置调用作的正确应用程序上下文。 Oracle 电子商务适配器提供某些绑定属性,以指定任何操作的应用程序上下文。 必须在用于调用并发程序的 WCF-Custom 或 WCF-OracleEBS 端口上设置这些绑定属性。

      • 如果 ClientCredentialType 绑定属性设置为 Database,则必须指定以下绑定属性来设置应用程序上下文。

        Binding 属性 价值
        OracleUserName 指定 Oracle E-Business Suite 用户的名称。 Oracle E-Business 适配器在连接到 Oracle E-Business Suite 时,不会保留您为 OracleUserName 绑定属性输入值时的大小写。 用户名使用 SQL*Plus 的标准规则传递到 Oracle 电子商务套件。 但是,如果希望保留用户名的事例,或者要输入包含特殊字符的用户名,则必须在双引号内指定该值。
        OraclePassword Oracle 电子商务套件用户的密码。 Oracle E-Business 适配器不会保留连接到 Oracle E-Business Suite 时为 OraclePassword 绑定属性输入的值大小写。 密码使用 SQL*Plus 的标准规则传递到 Oracle 电子商务套件。 但是,如果希望保留密码大小写,或者想要输入包含特殊字符的密码,则必须在双引号中指定该值。
        OracleEBSResponsibilityName 与 Oracle E-Business Suite 用户关联的责任。
      • 如果将 ClientCredentialType 绑定属性设置为 EBusiness,则必须在建立连接时已指定 Oracle E-Business 凭据。 在这种情况下,只能为 OracleEBSResponsibilityName 绑定属性指定值。

        有关不同绑定属性的详细信息,请参阅 有关 Oracle 电子商务套件绑定属性的 BizTalk 适配器的信息。 有关适配器如何支持设置应用程序上下文的详细信息,请参阅 “设置应用程序上下文”。

      注释

      可以通过指定绑定属性或通过设置 Oracle E-Business 适配器公开的消息上下文属性来设置应用程序上下文。 有关如何设置绑定属性的说明,请参阅 配置 Oracle E-Business Suite 的绑定属性。 有关如何使用消息上下文属性设置应用程序上下文的说明,请参阅 在 Oracle E-Business Suite 中使用消息上下文属性配置应用程序上下文

      注释

      使用“消耗适配器服务”BizTalk 项目外接程序生成架构时,还会创建一个绑定文件,其中包含有关这些端口及其对应操作信息。 可以从 BizTalk Server 管理控制台导入此绑定文件,以创建发送端口(用于出站呼叫)或接收端口(对于入站呼叫)。 有关详细信息,请参阅 使用用于 Oracle 电子商务套件的端口绑定文件配置物理端口绑定

启动应用程序

在调用并发程序之前,必须启动 BizTalk 应用程序。 有关启动 BizTalk 应用程序的说明,请参阅 如何启动业务流程

在此阶段,请确保:

  • 用于接收业务流程请求消息的 FILE 接收端口正在运行。

  • 用于从业务流程接收响应消息的 FILE 发送端口正在运行。

  • WCF-Custom 或 WCF-OracleEBS 发送端口以调用 客户接口 并发程序正在运行。

  • 用于调用 Get_Status 并发程序的 WCF-Custom 或 WCF-OracleEBS 发送端口正在执行。

  • 正在运行该操作的 BizTalk 业务流程。

执行操作

运行应用程序后,必须提交一条符合架构的请求消息,以便调用 Customer Interface 并发程序。 例如,调用 客户接口 并发程序的请求消息为:

<RACUST xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/ConcurrentPrograms/AR">  
  <Description>Customer Interface Program</Description>  
  <StartTime></StartTime>  
  <CREATE_RECIPROCAL_CUSTOMER>Yes</CREATE_RECIPROCAL_CUSTOMER>  
  <ORG_ID>203</ORG_ID>  
</RACUST>  

注释

调用并发程序的请求消息需要一些可选参数,例如 SetOptions、SetPrintOptions 和 SetRepeatOptions。 此处提供的请求消息不包含这些可选参数。 有关完整的请求消息(包括可选参数)的信息,请参阅 并发程序的消息架构

业务编排使用消息,将其传递给 Oracle 电子商务套件,并接收响应。 响应消息保存在业务流程中指定的其他文件位置。 客户接口并发程序的响应如下所示:

<?xml version="1.0" encoding="utf-8"?>  
<RACUSTResponse xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/ConcurrentPrograms/AR">  
  <RACUSTResult>2794708</RACUSTResult>  
</RACUSTResponse>  

Oracle 电子商务套件的响应包含请求 ID。 业务流程从响应消息中提取请求 ID,构造消息以调用 Get_Status 并发程序,并将其传递给 Oracle E-Business Suite 以执行 Get_Status 并发程序。 收到第 Get_Status 个并发程序的响应后,它会复制到第一个响应所在的同一文件位置。 Get_Status并发程序的响应如下所示:

<?xml version="1.0" encoding="utf-8" ?>   
<GetStatusForConcurrentProgramResponse xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/ConcurrentPrograms/AR">  
  <GetStatusForConcurrentProgramResult>true</GetStatusForConcurrentProgramResult>   
  <Phase>Pending</Phase>   
  <Status>Standby</Status>   
  <DevPhase>PENDING</DevPhase>   
  <DevStatus>STANDBY</DevStatus>   
  <Message>null</Message>   
</GetStatusForConcurrentProgramResponse>  

最佳做法

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

另请参阅

使用 Oracle E-Business Suite 适配器开发 BizTalk 应用程序