使用 WCF 通道模型对 Oracle E-Business Suite 中的接口表运行插入操作

Oracle 电子商务适配器发现一组对 Oracle E-Business Suite 接口表的“插入”、“选择”、“更新”和“删除”操作。 通过使用这些操作,可以对目标接口表执行由 Where 子句限定的简单 Insert、Select、Update 和 Delete 语句。 本主题提供有关如何使用 WCF 通道模型对接口表执行 Insert 操作的说明。

有关适配器如何支持这些操作的详细信息,请参阅 接口表和接口视图上的操作。 有关如何使用 WCF 通道模型对 Oracle E-Business Suite 执行操作的详细信息,请参阅 使用 Oracle E-Business Suite 适配器的 WCF 通道模型概述

关于本主题中使用的示例

本主题中的示例对 MS_SAMPLE_EMPLOYEE 接口表执行操作。 表是通过运行示例提供的脚本创建的。 有关示例的详细信息,请参阅 Oracle EBS 适配器的示例。 基于本主题的示例 InsertOperation 也随 Oracle E-Business 适配器示例一起提供。

插入消息

若要使用 WCF 通道模型在 Oracle E-Business Suite 上执行操作,必须具有特定于该操作的请求消息。 对MS_SAMPLE_EMPLOYEE接口表执行 Insert 操作的请求消息如下所示:

<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 电子商务适配器将请求消息发送到 Oracle 电子商务套件。 有关表操作的消息架构的详细信息,请参阅 用于插入、更新、删除和选择操作的消息架构

创建 WCF 通道应用程序

本部分提供有关如何创建 WCF 通道应用程序以对MS_SAMPLE_EMPLOYEE接口表执行 Insert 操作的说明。

创建用于将记录插入表中的 WCF 通道应用程序

  1. 在 Visual Studio 中创建 Visual C# 项目。 对于本主题,请创建控制台应用程序。

  2. 在解决方案资源管理器中添加对 Microsoft.Adapters.OracleEBSMicrosoft.ServiceModel.ChannelsSystem.ServiceModel和 的System.Runtime.Serialization引用。

  3. 打开 Program.cs 文件并添加以下命名空间:

    • Microsoft.Adapters.OracleEBS

    • Microsoft.ServiceModel.Channels

    • System.ServiceModel

    • System.ServiceModel.Channels

    • System.Xml

  4. 创建绑定和终结点。

    OracleEBSBinding binding = new OracleEBSBinding();  
    EndpointAddress address = new EndpointAddress("oracleebs://ebs_instance_name");  
    
    
  5. 由于要对接口表执行操作,因此必须设置应用程序上下文。 在此示例中,若要设置应用程序上下文,请指定 OracleUserNameOraclePasswordOracleEBSResponsibilityName 绑定属性。 有关应用程序上下文的详细信息,请参阅 设置应用程序上下文

    binding.OracleUserName = "myOracleEBSUserName";  
    binding.OraclePassword = "myOracleEBSPassword";  
    binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";  
    
  6. 创建并打开通道工厂。 此应用程序将请求消息发送到 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();  
    
  7. 创建并打开通道。

    IRequestChannel channel;  
    try  
    {  
       channel = factory.CreateChannel();  
       channel.Open();  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception :" + ex.Message);  
       throw;  
    }  
    
  8. 创建并发送请求消息。

    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表执行 Insert 操作,消息操作为 InterfaceTables/Insert/FND/APPS/MS_SAMPLE_EMPLOYEE。 有关如何确定对表的各种操作的消息操作的信息,请参阅 插入、更新、删除和选择操作的消息架构

  9. 获取响应消息。

    XmlReader readerOut = messageOut.GetReaderAtBodyContents();  
    XmlDocument doc = new XmlDocument();  
    doc.Load(readerOut);  
    doc.Save("C:\\Response.xml");  
    
  10. 关闭消息、通道和通道工厂。

    messageOut.Close();  
    channel.Close();  
    factory.Close();  
    
  11. 生成项目。 生成项目后,必须将请求消息(InsertRequest.xml)复制到项目可执行文件所在的同一位置。 通常,此位置在项目目录下为 \bin\Debug\。

  12. 运行应用程序。 响应消息 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表中。

另请参阅

使用 WCF 通道模型开发 Oracle E-Business Suite 应用程序