EGL サービス・パーツをコーディングした後で、そのパーツをサービス・アクセス変数のベースとして使用できます。
以下の 2 つの状況が考えられます。
- Rich UI で作業している場合、アクセス可能な EGL サービスは専用サービスのみです (『Rich UI でのサービス・アクセス』を参照)。
サービス・アクセス変数を次のように宣言します。
myService MyServicePart{@dedicatedService};
この宣言では、インターフェース・パーツではなくサービス・パーツを指定する必要があります。
変数の宣言後に、その変数を call ステートメントで使用します (『Rich UI アプリケーションからのサービスの非同期呼び出し』を参照)。
- Rich UI 外部で作業している場合の標準的な手順は次のとおりです。
- ローカル EGL サービスにアクセスするためのインターフェース・パーツの定義
- デプロイメント記述子での EGL バインディングの設定
- サービス・アクセス変数への EGL バインディングの割り当て
変数を宣言し、サービス・バインディングをその変数に割り当てたら、その変数をサービス・アクセス・ステートメントで使用します (『Rich UI 外部からのサービスの同期呼び出し』を参照)。
ローカル EGL サービスにアクセスするためのインターフェース・パーツの定義
Rich UI 外部からローカル EGL サービスにアクセスする場合、インターフェース・パーツをサービス・アクセス変数のベースにすることができます。このパーツに含まれている関数プロトタイプは、サービス・パーツの一部またはすべての関数に一致します。
EGL サービスへのアクセスに使用されるインターフェース・パーツの例を以下に示します。
Interface MyInterfacePart
Function GetEmployeeDetail(employeeCode STRING IN,
employeeSalary FLOAT OUT,
employeeStatus STRING INOUT)
returns(myEmployeeRecordPart);
end
この例には、1 つの関数プロトタイプが含まれていますが、複数のプロトタイプを含めることもできます。また、さまざまな EGL データ型を指定でき、修飾子 IN、OUT、および INOUT を使用できます。
インターフェース・パーツは、以下のようにしてサービス・パーツから簡単に作成できます。
- Project Explorer で、サービスを定義する EGL ファイルを右クリックします。
- 「EGL サービス」>「EGL インターフェースを抽出」をクリックします。
- 「新規 EGL インターフェース・パーツ」ウィンドウに適切な詳細を指定して、「完了」をクリックします。
SOAP 以外のサービスにアクセスするときに実行時エラーが発生しないようにするため、WSDL ファイルから派生されるインターフェース・パーツを使用しないでください。
デプロイメント記述子での EGL バインディングの設定
Rich UI 外部で作業しており、ローカル EGL サービスにアクセスする場合、EGL デプロイメント記述子でサービス・バインディングを設定する必要があります。サービス・アクセス変数のベースとしてサービス・パーツまたはインターフェース・パーツをいずれを使用する場合でも、このルールが適用されます。
デプロイメント記述子での EGL バインディングの設定手順を以下に示します。
- デプロイメント記述子をダブルクリックする。
- 「サービス・バインディング」タブの「サービス・バインディング」で、「追加」をクリックする。
- 「サービス・バインディングの追加」ウィンドウで「EGL バインディング」をクリックして、「次へ」をクリックする。「EGL バインディングの追加」ウィンドウが表示されます。
- バインディング・キー (サービス・バインディングの名前) を指定する。
バインディング・キーを入力するか、または次の手順を実行する。
- 「EGL バインディング名」フィールドの隣にある「参照」ボタンをクリックする。「インターフェースの選択」ウィンドウが表示されます。
- コードにおけるサービス・アクセス変数の基礎となるインターフェース・パーツの名前を選択します。この名前がバインディング・キーであり、コードに @BindService プロパティーをコーディングする場合は、名前を指定する必要はありません。
- 「OK」をクリックします。
- 「ローカル」を選択します。
- 「終了」をクリックします。その新規クライアント・バインディングが「サービス・バインディング」リストに表示されます。後で「EGL サービス・バインディング」セクションでバインディング情報を更新できます。
サービス・アクセス変数への EGL バインディングの割り当て
開発時にローカル・サービスの EGL バインディングを割り当てる場合は、サービス・アクセス変数を宣言するときに
@BindService 複合プロパティーを含めてください。以下に例を示します。
myService MyInterfacePart {@BindService{bindingKey="MyInterfacePart"}};
@BindService プロパティーには、以下の 1 つのフィールドがあります。
- bindingKey
- バインディングがリクエスターのローカルであることを示すデプロイメント記述子項目指定します。
bindingKey フィールドを指定せずに
@BindService を指定できます。この場合、このプロパティーは、変数宣言で使用されているサービス・パーツまたはインターフェース・パーツと同じ名前のデプロイメント記述子項目を示します。以下に、この使用法の例を示します。ここでは、
MyInterfacePart という名前のデプロイメント記述子項目が参照されています。
MyService MyInterfacePart {@BindService};
実行時のサービス・バインディングの割り当ておよび再割り当てについて詳しくは、『サービス・アクセス変数の動的なバインド』を参照してください。