在 Oracle E-Business Suite 中调用并发程序
Oracle E-Business Suite 公开了可以执行的并发程序,以便对 Oracle 应用程序执行特定操作。 每个 Oracle 应用程序都有一组标准并发程序 (,这些程序在所有操作) 和特定于 Oracle 应用程序的某些并发程序中都是相同的。 Oracle E-Business 适配器将所有并发程序公开为适配器客户端可以调用的操作。 有关适配器如何支持并发程序的详细信息,请参阅 对并发程序的操作。 有关调用并发程序的 SOAP 消息结构的信息,请参阅 并发程序的消息架构。
注意
对于不公开其元数据的并发程序,Oracle 电子商务适配器会为每个并发程序公开 100 个可选参数。 若要成功调用这些并发程序,用户必须查阅 Oracle 电子商务套件文档,找出需要值的并发程序的参数,然后指定这些参数。 此类并发程序的一个示例是日记导入 (实际名称:总帐应用程序中的 GLLEZL) 。
必备条件
必须已完成先决条件中的步骤 才能创建 Oracle 电子商务套件应用程序。
如何在 Oracle 应用程序中调用并发程序
使用 Oracle 电子商务适配器和BizTalk Server在 Oracle 电子商务套件上执行操作涉及构建基块以创建 Oracle E-Business Suite 应用程序中所述的过程性任务。 若要调用并发程序,这些任务包括:
创建 BizTalk 项目,并为要调用的并发程序生成架构。
在 BizTalk 项目中创建消息,用于在 Oracle 电子商务套件中发送和接收消息。
创建业务流程以调用并发程序。
生成并部署 BizTalk 项目。
通过创建物理发送和接收端口配置 BizTalk 应用程序。
启动 BizTalk 应用程序。
本主题提供有关执行这些任务的说明。
生成架构
本主题演示如何从应收账款应用程序调用 Customer Interface 并发程序。 此应用程序可用于默认的 Oracle E-Business Suite 应用程序。 此并发程序返回请求 ID。 为了检查并发程序的状态,我们通过传递客户接口并发程序响应中收到的请求 ID 来执行Get_Status并发程序。
在本主题中,我们将为 客户接口 和 Get_Status 并发程序生成架构。 有关如何生成架构的详细信息,请参阅 在 Visual Studio 中检索 Oracle 电子商务套件操作的元数据。
定义消息和消息类型
你之前生成的架构描述了业务流程中的消息所需的“类型”。 消息通常是一个变量,其类型由相应的架构定义。 现在必须为业务流程创建消息,并将其链接到在上一步中生成的架构。
在此业务流程中,必须创建四条消息:一个接收-响应集用于调用 Customer Interface 并发程序,另一个接收-响应集用于调用 Get_Status 并发程序。
创建消息并链接到架构
将业务流程添加到 BizTalk 项目。 从 解决方案资源管理器,右键单击 BizTalk 项目名称,指向“添加”,然后单击“新建项”。 键入 BizTalk 业务流程的名称,并单击“ 添加”。
打开 BizTalk 项目的“业务流程视图”窗口(如果尚未打开该窗口)。 为此,请单击“ 视图”,指向 “其他窗口”,然后单击“ 业务流程视图”。
在“业务流程视图”中,右键单击“ 消息”,然后单击“ 新建消息”。
右键单击新创建的消息,然后选择“ 属性窗口”。
在Message_1的“属性”窗格中,执行以下操作:
使用此选项 要执行此操作 标识符 键入 Request
消息类型 从下拉列表中展开“ 架构”,然后选择“ ConcurrentProgram.OracleEBSBindingSchema.RACUST”,其中 ConcurrentProgram 是 BizTalk 项目的名称。 OracleEBSBindingSchema 是为调用 Customer Interface 并发程序生成的架构。 注意: RACUST 是 客户接口 并发程序的实际名称。 虽然“使用适配器服务外接程序”显示 客户接口) (友好名称,但架构包含并发程序的实际名称。 重复步骤 3 以创建三条新消息。 在新邮件的“ 属性 ”窗格中,执行以下操作:
将标识符设置为 将“消息类型”设置为 响应 ConcurrentProgram.OracleEBSBindingSchema.RACUSTResponse Get_StatusRequest ConcurrentProgram.OracleEBSBindingSchema1.GetStatusForConcurrentProgram Get_StatusResponse ConcurrentProgram.OracleEBSBindingSchema1.GetStatusForConcurrentProgramResponse
设置业务流程
必须创建 BizTalk 业务流程才能使用 BizTalk Server 在 Oracle E-Business Suite 中调用并发程序。 在此业务流程中,你将在定义的接收位置删除请求消息。 业务流程使用此消息,并将其传递给 Oracle 电子商务套件以调用 Customer Interface 并发程序。 并发程序的响应从 Oracle 接收,并保存在另一个位置。 响应消息包含请求 ID。 业务流程包含 构造消息 形状,用于从响应中提取请求 ID,并构造符合 Get_Status 并发程序的架构的消息。 调用 Get_Status 并发程序的消息将发送到 Oracle 电子商务套件,并将请求 ID 作为参数。 必须包括发送和接收形状、消息构造形状以及用于将消息发送到 Oracle 和接收响应的端口。
通常, 执行 Customer Interface 并发程序需要一些时间,因此需要等待才能执行 Get_Status 并发程序。 可以通过添加 “延迟” 形状来自动完成此操作。
示例业务流程如下所示:
添加消息形状
为每个消息形状指定以下属性。 Shape 列中列出的名称对应于前面的业务流程中显示的消息形状。
形状 | 形状类型 | 属性 |
---|---|---|
ReceiveMessage | 接收 | - 将 Name 设置为 ReceiveMessage - 将 “激活” 设置为 “True” |
SendMessage | 发送 | - 将 “名称” 设置为 SendMessage |
ReceiveResponse | 接收 | - 将 Name 设置为 ReceiveResponse - 将 “激活” 设置为 “False” |
SendResponse | 发送 | - 将 “名称” 设置为 SendResponse |
SendGetStatus | 发送 | - 将 “名称” 设置为 SendGetStatus |
ReceiveStatusResponse | 接收 | - 将 Name 设置为 ReceiveStatusResponse - 将 “激活” 设置为 “False” |
SaveStatusResponse | 发送 | - 将 Name 设置为 SaveStatusResponse |
添加延迟形状
如果希望业务流程在调用 客户接口 和 Get_Status 并发程序之间等待,则必须向业务流程添加 延迟 形状。 在业务流程将 Customer Interface 并发程序的响应复制到 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 - 将 Type 设置为 MessageInType - 将 通信模式 设置为 单向 - 将 通信方向 设置为 接收 |
LOBPort | - 将 标识符 设置为 LOBPort - 将 Type 设置为 LOBPortType - 将 通信模式 设置为 请求-响应 - 将 “通信方向 ”设置为 “发送-接收” |
ResponseOut | - 将 标识符 设置为 ResponseOut - 将 Type 设置为 ResponseOutType - 将 通信模式 设置为 单向 - 将“通信方向”设置为“发送” - Cust_Interface创建操作。 此操作用于 客户接口 并发程序。 - Get_Status创建操作。 此操作用于 Get_Status 并发程序。 |
LOBPort_GetStatus | - 将 标识符 设置为 LOBPort_GetStatus - 将 “类型 ”设置为 “LOBPort_GetStatusType - 将 通信模式 设置为 请求-响应 - 将 “通信方向 ”设置为 “发送-接收” |
指定操作形状的消息并连接到端口
下表指定属性值,用于指定操作形状的消息并将其链接到端口。 Shape 列中列出的名称对应于业务流程图中显示的消息形状的名称。
指定这些属性后,消息形状和端口将连接,并且业务流程完成。
现在必须生成 BizTalk 解决方案,然后将其部署到BizTalk Server。 有关详细信息,请参阅 生成和运行业务流程。
形状 | 属性 |
---|---|
ReceiveMessage | - 将 消息 设置为 请求 - 将 操作 设置为 MessageIn.Cust_Interface.Request |
SendMessage | - 将 消息 设置为 请求 - 将 操作 设置为 LOBport.Cust_Interface.Request |
ReceiveResponse | - 将 消息 设置为 响应 - 将 操作 设置为 LOBport.Cust_Interface.Response |
SendResponse | - 将 消息 设置为 响应 - 将 操作 设置为 ResponseOut.Cust_Interface.Request |
SendGetStatus | - 将 “消息 ”设置为 “Get_StatusRequest - 将 操作 设置为 LOBPort_GetStatus.Get_Status.Request |
ReceiveStatusResponse | - 将 “消息 ”设置为 “Get_StatusResponse” - 将 操作 设置为 LOBPort_GetStatus.Get_Status.Response |
SaveStatusResponse | - 将 “消息 ”设置为 “Get_StatusResponse” - 将 操作 设置为 ResponseOut.Get_Status.Request |
指定这些属性后,消息形状和端口将连接,并且业务流程完成。
现在必须生成 BizTalk 解决方案,然后将其部署到BizTalk Server。 有关详细信息,请参阅 生成和运行业务流程。
配置 BizTalk 应用程序
部署 BizTalk 项目后,前面创建的业务流程将列在 BizTalk Server 管理控制台的“业务流程”窗格下。 必须使用 BizTalk Server 管理控制台来配置应用程序。 有关演练,请参阅 演练:部署基本 BizTalk 应用程序。
配置应用程序涉及:
为应用程序选择主机。
将业务流程中创建的端口映射到 BizTalk Server 管理控制台中的物理端口。 对于此业务流程,必须:
定义硬盘上的位置和相应的文件端口,你将在其中删除请求消息。 BizTalk 业务流程将使用请求消息并将其发送到 Oracle E-Business Suite。
在硬盘上定义一个位置和相应的文件端口,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 电子商务套件用户的名称。 Oracle 电子商务适配器不会保留在连接到 Oracle E-Business Suite 时为 OracleUserName 绑定属性输入的值大小写。 用户名使用 SQL*Plus 的标准规则传递到 Oracle E-Business Suite。 但是,如果希望保留用户名大小写,或者要输入包含特殊字符的用户名,则必须在双引号内指定值。 OraclePassword Oracle 电子商务套件用户的密码。 Oracle 电子商务适配器不会保留在连接到 Oracle E-Business Suite 时为 OraclePassword 绑定属性输入的值大小写。 密码使用 SQL*Plus 的标准规则传递到 Oracle E-Business Suite。 但是,如果希望保留密码大小写,或者要输入包含特殊字符的密码,则必须在双引号内指定值。 OracleEBSResponsibilityName 与 Oracle 电子商务套件用户关联的责任。 如果 ClientCredentialType 绑定属性设置为 EBusiness,则必须在建立连接时已指定 Oracle 电子商务凭据。 在这种情况下,只能指定 OracleEBSResponsibilityName 绑定属性的值。
有关不同绑定属性的详细信息,请参阅 阅读有关 Oracle 电子商务套件绑定属性的 BizTalk 适配器。 有关适配器如何支持设置应用程序上下文的详细信息,请参阅 设置应用程序上下文。
注意
可以通过指定绑定属性或通过设置 Oracle 电子商务适配器公开的消息上下文属性来设置应用程序上下文。 有关如何设置绑定属性的说明,请参阅 配置 Oracle 电子商务套件的绑定属性。 有关如何使用消息上下文属性设置应用程序上下文的说明,请参阅 在 Oracle 电子商务套件中使用消息上下文属性配置应用程序上下文。
注意
使用使用适配器服务 BizTalk 项目外接程序生成架构还会创建一个绑定文件,其中包含有关要为这些端口设置的端口和操作的信息。 可以从 BizTalk Server 管理控制台导入此绑定文件,为出站呼叫创建发送端口 () 或接收) 入站呼叫 (端口。 有关详细信息,请参阅 使用 Oracle E-Business Suite 的端口绑定文件配置物理端口绑定。
启动应用程序
在调用并发程序之前,必须启动 BizTalk 应用程序。 有关启动 BizTalk 应用程序的说明,请参阅 如何启动业务流程。
在此阶段,请确保:
用于接收业务流程请求消息的 FILE 接收端口正在运行。
用于从业务流程接收响应消息的 FILE 发送端口正在运行。
WCF-Custom 或 WCF-OracleEBS 发送端口来调用 正在运行的客户接口 并发程序。
WCF-Custom 或 WCF-OracleEBS 发送端口来调用正在运行 Get_Status 并发程序。
操作的 BizTalk 业务流程正在运行。
执行操作
运行应用程序后,必须删除符合调用 Customer Interface 并发程序的架构的请求消息。 例如,调用 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 中重复使用适配器绑定。