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 チャネル アプリケーションを作成するには
Visual Studio で Visual C# プロジェクトを作成します。 このトピックでは、コンソール アプリケーションを作成します。
ソリューション エクスプローラーで、および への参照を
Microsoft.Adapters.OracleEBS
Microsoft.ServiceModel.Channels
System.ServiceModel
追加します。System.Runtime.Serialization
Program.cs ファイルを開き、次の名前空間を追加します。
Microsoft.Adapters.OracleEBS
Microsoft.ServiceModel.Channels
System.ServiceModel
System.ServiceModel.Channels
System.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 テーブルに 1 つのレコードが挿入されることを示します。