Oracle 电子商务适配器可发现 Oracle E-Business Suite 接口表上的一组插入、查询、更新和删除操作。 通过使用这些操作,可以对接口目标表执行简单的 Insert、Select、Update 和 Delete 语句,这些语句由 Where 子句限定。 本主题提供有关如何使用 WCF 通道模型对接口表执行插入作的说明。
有关适配器如何支持这些操作的详细信息,请参阅 接口表和接口视图上的操作。 有关如何使用 WCF 通道模型对 Oracle 电子商务套件执行操作的详细信息,请参阅 使用 Oracle E-Business Suite 适配器的 WCF 通道模型的概述。
关于本主题中使用的示例
本主题中的示例对MS_SAMPLE_EMPLOYEE接口表执行操作。 该表是通过运行随示例提供的脚本创建的。 有关示例的详细信息,请参阅 Oracle EBS 适配器的示例。 Oracle E-Business 适配器示例中还提供了一个与本主题相关的示例InsertOperation。
插入消息
若要使用 WCF 通道模型对 Oracle 电子商务套件执行操作,您必须具有特定于该操作的请求消息。 对 MS_SAMPLE_EMPLOYEE 接口表中的插入操作的请求消息如下所示:
<Insert xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/InterfaceTables/FND/APPS/MS_SAMPLE_EMPLOYEE">
<RECORDSET>
<InsertRecord xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/TableViewRecord/APPS/MS_SAMPLE_EMPLOYEE">
<EMP_NO>10050</EMP_NO>
<NAME>John Smith</NAME>
<DESIGNATION>Manager</DESIGNATION>
<SALARY>500000</SALARY>
<JOIN_DATE>1999-05-31</JOIN_DATE>
</InsertRecord>
</RECORDSET>
</Insert>
此请求消息插入具有以下详细信息的记录:
Employee Number = 10050
Name = Tom Smith
Designation = Manager
Salary = 500000
必须将消息复制到一个文件,例如 InsertRequest.xml。 此示例使用此文件通过 Oracle E-Business 适配器将请求消息发送到 Oracle E-Business Suite。 有关表操作的消息架构的详细信息,请参阅 用于插入、更新、删除和选择操作的消息架构。
创建 WCF 通道应用程序
本部分提供了关于如何创建一个 WCF 通道应用程序来对 MS_SAMPLE_EMPLOYEE 接口表执行插入操作的指引。
创建用于将记录插入表中的 WCF 通道应用程序
在 Visual Studio 中创建 Visual C# 项目。 对于本主题,请创建控制台应用程序。
在解决方案资源管理器中,添加对
Microsoft.Adapters.OracleEBS、Microsoft.ServiceModel.Channels、System.ServiceModel和System.Runtime.Serialization的引用。打开Program.cs文件并添加以下命名空间:
Microsoft.Adapters.OracleEBSMicrosoft.ServiceModel.ChannelsSystem.ServiceModelSystem.ServiceModel.ChannelsSystem.Xml
创建绑定和终结点。
OracleEBSBinding binding = new OracleEBSBinding(); EndpointAddress address = new EndpointAddress("oracleebs://ebs_instance_name");由于您正在对接口表执行操作,因此必须设置应用程序上下文。 在此示例中,若要设置应用程序上下文,请指定 OracleUserName、 OraclePassword 和 OracleEBSResponsibilityName 绑定属性。 有关应用程序上下文的详细信息,请参阅 “设置应用程序上下文”。
binding.OracleUserName = "myOracleEBSUserName"; binding.OraclePassword = "myOracleEBSPassword"; binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";创建并打开通道工厂。 此应用程序将请求消息发送到 Oracle E-Business Suite 并接收响应,因此必须实现 IRequestChannel 接口。
ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, address); factory.Credentials.UserName.UserName = "<Enter user name here>"; factory.Credentials.UserName.Password = "<Enter password here>"; factory.Open();创建并打开通道。
IRequestChannel channel; try { channel = factory.CreateChannel(); channel.Open(); } catch (Exception ex) { Console.WriteLine("Exception :" + ex.Message); throw; }创建并发送请求消息。
XmlReader readerIn; try { readerIn = XmlReader.Create("InsertRequest.xml"); Console.WriteLine("Reader created"); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; } Message messageIn; Message messageOut; try { messageIn = Message.CreateMessage(MessageVersion.Default, "InterfaceTables/Insert/FND/APPS/MS_SAMPLE_EMPLOYEE", readerIn); messageOut = channel.Request(messageIn); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; }创建请求消息时,必须指定一个消息操作,该操作指示适配器在接口表上执行的动作。 若要对MS_SAMPLE_EMPLOYEE表执行插入操作,消息操作是
InterfaceTables/Insert/FND/APPS/MS_SAMPLE_EMPLOYEE。 有关如何确定各种表操作的消息操作信息,请参阅 用于插入、更新、删除和选择操作的消息架构。获取响应消息。
XmlReader readerOut = messageOut.GetReaderAtBodyContents(); XmlDocument doc = new XmlDocument(); doc.Load(readerOut); doc.Save("C:\\Response.xml");关闭消息、通道和通道工厂。
messageOut.Close(); channel.Close(); factory.Close();构建项目。 生成项目后,必须在项目可执行文件所在的同一位置复制请求消息 InsertRequest.xml。 通常,此位置为项目目录下的 \bin\Debug\ 。
运行该应用程序。 响应消息 Response.xml保存在应用程序中指定的位置。 响应消息包含插入的数字或记录,如下所示:
<InsertResponse xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/InterfaceTables/FND/APPS/MS_SAMPLE_EMPLOYEE"> <InsertResult>1</InsertResult> </InsertResponse>值“1”表示将单个记录插入到MS_SAMPLE_EMPLOYEE表中。