次の方法で共有


WCF チャネル モデルを使用して Oracle E-Business Suite のインターフェイス テーブルに対して挿入操作を実行する

Oracle E-Business アダプターは、Oracle E-Business Suite インターフェイス テーブルに対する挿入、選択、更新、および削除の一連の操作を検出します。 これらの操作を使用すると、ターゲット インターフェイス テーブルの Where 句で修飾された単純な Insert、Select、Update、Delete ステートメントを実行できます。 このトピックでは、WCF チャネル モデルを使用してインターフェイス テーブルに対して挿入操作を実行する方法について説明します。

アダプターがこれらの操作をサポートする方法の詳細については、「 インターフェイス テーブルとインターフェイス ビューに対する操作」を参照してください。 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 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 チャネル アプリケーションの作成

このセクションでは、MS_SAMPLE_EMPLOYEE インターフェイス テーブルに対して挿入操作を実行する WCF チャネル アプリケーションを作成する方法について説明します。

テーブルにレコードを挿入するための 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. インターフェイス テーブルに対して操作を実行するため、アプリケーション コンテキストを設定する必要があります。 この例では、アプリケーション コンテキストを設定するために、 OracleUserNameOraclePasswordおよび OracleEBSResponsibilityName バインド プロパティを指定します。 アプリケーション コンテキストの詳細については、「アプリケーション コンテキストを 設定する」を参照してください。

    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 テーブルに対して挿入操作を実行するには、メッセージ アクションは です 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 テーブルに 1 つのレコードが挿入されることを示します。

参照

WCF チャネル モデルを使用して Oracle E-Business Suite アプリケーションを開発する