Oracle E-Business Suite は、Oracle アプリケーションで特定の操作を実行するために実行できる同時実行プログラムを公開します。 各 Oracle アプリケーションには、一連の標準同時実行プログラム (すべての操作で同じ) と、Oracle アプリケーションに固有の特定の同時実行プログラムがあります。 Oracle E-Business アダプターは、アダプター クライアントが呼び出すことができる操作として、すべての同時実行プログラムを公開します。 アダプターが同時実行プログラムをサポートする方法の詳細については、「 同時実行プログラムに対する操作」を参照してください。
注
メタデータを公開しない同時実行プログラムの場合、Oracle E-Business アダプターは、これらの同時実行プログラムごとに 100 個の省略可能なパラメーターを公開します。 これらの同時実行プログラムを正常に呼び出すには、ユーザーは Oracle E-Business Suite のドキュメントを参照して、値を必要とする同時実行プログラムのパラメーターを調べ、それらを指定する必要があります。 このような同時実行プログラムの例として、元帳アプリケーションの履歴インポート (実際の名前: GLLEZL) があります。
このトピックで使用する例について
このトピックの例では、 MS_SAMPLE_COPY_EMP_DATA 同時実行プログラムを呼び出し、次に Get_Status 同時実行プログラムを呼び出して、最初の同時実行プログラムの状態を確認します。 これらの同時実行プログラムは、 アプリケーション オブジェクト ライブラリ アプリケーションから呼び出されます。 MS_SAMPLE_COPY_EMP_DATAは、サンプルで提供されるスクリプトを実行して作成されます。 サンプルの詳細については、 Oracle EBS アダプターのサンプルを参照してください。 このトピックに基づく サンプル ConcurrentProgram_ServiceModelは、Oracle E-Business アダプターのサンプルでも提供されています。
WCF クライアント クラス
Oracle E-Business アダプターによって同時実行プログラムを呼び出すための WCF クライアントの名前を次の表に示します。
アーティファクト | WCF クライアント名 |
---|---|
同時実行プログラム | ConcurrentPrograms_[APP_NAME]クライアント |
[APP_NAME] = Oracle E-Business Suite アプリケーションの実際の名前。たとえば、FND です。
同時実行プログラムを呼び出すためのメソッド シグネチャ
次の表に、同時実行プログラムのメソッド シグネチャを示します。
オペレーション | メソッド シグネチャ |
---|---|
同時実行プログラム | public <返り値の型><Concurrent_program_name>(param 1, param 2, ...) |
例として、次のコードは、MS_SAMPLE_COPY_EMP_DATAおよびGet_Status同時実行プログラム用に生成された WCF クライアント クラスのメソッド シグネチャを示しています。
public partial class ConcurrentPrograms_FNDClient : System.ServiceModel.ClientBase<ConcurrentPrograms_FND>, ConcurrentPrograms_FND {
public string MS_SAMPLE_COPY_EMP_DATA(schemas.microsoft.com.OracleEBS._2008._05.Options.SetOptions SetOptions,
schemas.microsoft.com.OracleEBS._2008._05.Options.SetPrintOptions SetPrintOptions,
schemas.microsoft.com.OracleEBS._2008._05.Options.SetRepeatOptions SetRepeatOptions,
string Description, string StartTime);
public bool GetStatusForConcurrentProgram(string RequestId, out string Phase, out string Status,
out string DevPhase, out string DevStatus, out string Message);
}
このスニペットでは、 ConcurrentPrograms_FNDClient は、アダプター サービス参照プラグインの追加によって生成されたOracleEBSBindingClient.csの WCF クラスの名前です。 MS_SAMPLE_COPY_EMP_DATA は、同時実行プログラムを呼び出すメソッドの名前です。 GetStatusForConcurrentProgram は、同時実行プログラムを呼び出して最初の同時実行プログラムの状態を取得するメソッドの名前です。
注
GetStatusForConcurrentProgram は、 Get_Status 同時実行プログラムの実際の名前です。
同時実行プログラムを呼び出す WCF クライアントの作成
WCF クライアントを使用して Oracle E-Business Suite で操作を実行するために必要な一般的な一連のアクションには、「 Oracle E-Business Suite アダプターを使用した WCF サービス モデルの概要」で説明されている一連のタスクが含まれます。 このセクションでは、 MS_SAMPLE_COPY_EMP_DATAとGet_Status 同時実行プログラムを呼び出す WCF クライアントを作成 する 方法について説明します。
WCF クライアントを作成するには
Visual Studio で Visual C# プロジェクトを作成します。 このトピックでは、コンソール アプリケーションを作成します。
MS_SAMPLE_COPY_EMP_DATAとGet_Status同時実行プログラムの WCF クライアント クラスを生成します。 WCF クライアント クラスの生成の詳細については、「 Oracle E-Business Suite ソリューション成果物の WCF クライアントまたは WCF サービス コントラクトを生成する」を参照してください。
Von Bedeutung
WCF クライアント クラスを生成する前に、 EnableBizTalkCompatibilityMode バインディング プロパティを false に設定してください。
ソリューション エクスプローラーで、
Microsoft.Adapters.OracleEBS
とMicrosoft.ServiceModel.Channels
への参照を追加します。Program.cs ファイルを開き、次の名前空間を追加します。
Microsoft.Adapters.OracleEBS
System.ServiceModel
Program.cs ファイルを開き、次のスニペットで説明するようにクライアントを作成します。
OracleEBSBinding binding = new OracleEBSBinding(); EndpointAddress address = new EndpointAddress("oracleebs://ebs_instance_name"); ConcurrentPrograms_FNDClient client = new ConcurrentPrograms_FNDClient(binding, address);
このスニペットでは、
ConcurrentPrograms_FNDClient
はOracleEBSBindingClient.csで定義されている WCF クライアントです。 このファイルは、アダプター サービス参照の追加プラグインによって生成されます。注
このスニペットでは、アプリケーション コードでバインディングとエンドポイント アドレスを明示的に指定します。 これらの値は、アダプター サービス参照プラグインの追加によって生成されたアプリケーション構成ファイル app.configからも使用できます。 クライアント バインドを指定するさまざまな方法の詳細については、「 Oracle E-Business Suite のクライアント バインドを構成する」を参照してください。
クライアントの資格情報を設定します。
client.ClientCredentials.UserName.UserName = "myuser"; client.ClientCredentials.UserName.Password = "mypassword";
Oracle E-Business Suite アプリケーションで同時実行プログラムを呼び出す場合は、アプリケーション コンテキストを設定する必要があります。 この例では、アプリケーション コンテキストを設定するために、 OracleUserName、 OraclePassword、 OracleEBSResponsibilityName バインディング プロパティを指定します。 アプリケーション コンテキストの詳細については、「アプリケーション コンテキストの 設定」を参照してください。
binding.OracleUserName = "myOracleEBSUserName"; binding.OraclePassword = "myOracleEBSPassword"; binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";
次のスニペットの説明に従って、クライアントを開きます。
try { Console.WriteLine("Opening Client..."); client.Open(); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; }
MS_SAMPLE_COPY_EMP_DATAおよびGet_Statusという同時実行プログラムを呼び出します。
string RequestID; bool Result; string Phase; string Status; string DevPhase; string DevStatus; string Message; try { Console.WriteLine("Invoking the MS_SAMPLE_COPY_EMP_DATA concurrent program"); RequestID = client.MS_SAMPLE_COPY_EMP_DATA(null, null, null, null, null); Console.WriteLine("The request ID generated for the concurrent program is : " + RequestID); Console.WriteLine("********************************************************"); Console.WriteLine("\nWaiting for 60 seconds for the concurrent program to be complete"); System.Threading.Thread.Sleep(60000); Console.WriteLine("\nInvoking the Get_Status concurrent program"); Result = client.GetStatusForConcurrentProgram(RequestID, out Phase, out Status, out DevPhase, out DevStatus, out Message); Console.WriteLine("\nResult is : " + Result); Console.WriteLine("Phase is : " + Phase); Console.WriteLine("Status is : " + Status); Console.WriteLine("DevPhase is : " + DevPhase); Console.WriteLine("DevStatus is : " + DevStatus); Console.WriteLine("Message is : " + Message); Console.WriteLine("********************************************************"); Console.WriteLine("\nHit <RETURN> to end"); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine("Exception : " + ex); throw; }
次のスニペットで説明されているように、クライアントを閉じます。
client.Close();
プロジェクトをビルドし、実行します。 アプリケーションは MS_SAMPLE_COPY_EMP_DATA を呼び出し、要求 ID を返します。 その後、ID は Get_Status 同時実行プログラムに渡され、最終的に MS_SAMPLE_COPY_EMP_DATA 列プログラムの状態が提供されます。