サービス・アクセスのプロトタイプ

サービスへアクセスするために関数プロトタイプにパラメーターを指定するときに、ここで述べるルールに従う必要があります。

インターフェース・パーツはサービス・アクセスに対して使用され、次のような関数プロトタイプを含みます。
Function GetEmployeeDetail(employeeCode STRING IN,                             
                           employeeSalary FLOAT OUT,
                           employeeStatus STRING INOUT)
         returns(myEmployeeRecordPart);
プロトタイプを使用して EGL REST-RPC サービスにアクセスする場合に適用されるルールを以下に示します。
  • プロトタイプには、IN、OUT、および INOUT パラメーターを含めることができます。
  • このサービスが受け取るデータおよびこのサービスが返すデータは常に JSON フォーマットです。JSON には HEX、BLOB、または CLOB データを含めることはできません。
  • このサービスは常に JSON 文字列を返します。Rich UI アプリケーションでは、サービスによって返された有効数字が 15 桁を超えるすべての数値データが、EGL ランタイム・コードによって丸められます。JSON が EGL 生成 Java™ コードに返されるときには、丸めは行われません。

プロトタイプが SOAP サービスにアクセスするために使用される場合は、プロトタイプには、IN、OUT、および INOUT パラメーターを含めることができます。

プロトタイプを使用してサード・パーティー REST サービスにアクセスする場合に適用されるルールを以下に示します。
  • IN 修飾子が各パラメーターに必要です。
  • パラメーターが URI または照会ストリングを作成するために使用される場合は、以下の規則が適用されます。
    • パラメーターの名前は、 URI テンプレートの置換変数の名前に一致する必要がある。
    • パラメーターのデータ型には、プリミティブ型または関係するデータ項目が可能。
    • リクエスターが JavaScript で生成される場合、プリミティブ型は STRING、STRING と代入互換性がある FLOAT、BIN、または BIN と等価の整数型 (INT、SMALLINT、または BIGINT) のいずれかである必要があります。
    • リクエスターが Java で生成される場合、HEX、BLOB、および CLOB 以外のすべてのプリミティブ型が有効です。
    • REST サービスが Rich UI アプリケーションに JSON 文字列を返す場合、サービスによって返された有効数字が 15 桁を超えるすべての数値データが、EGL ランタイム・コードによって丸められます。JSON が EGL 生成 Java コードに返されるときには、丸めは行われません。
  • 表記パラメーターの値として、文字列、前述の代入互換性があるデータ型のいずれか、または次の規則を満足するフィールドのみを持つ非構造化レコード・パーツが可能です。
    • フィールドは、 STRING 型であるか、または STRING と代入互換性がある。
    • フィールドは、非構造化レコード・パーツに基づいている。厳密には、フィールドは、文字列 (または、代入互換性のある値) またはその他の非構造化レコード・パーツのみを含むレコード・パーツに基づくことが可能です。レコード内では任意のレベルで別のレコードをネストできます。
ネイティブ・バインディングを使用した IBM® i サービス・プログラムへの直接アクセスにプロトタイプを使用する場合に適用されるルールを以下に示します。
  • パラメーターは固定長でなければなりません。例えば、非構造化レコードおよび STRING 型の値はサポートされていません。動的配列もサポートされていません。
  • サービスは、整数を戻す場合もあれば、値を戻すことができない場合もあります。 ネイティブ・サービスが整数を戻した場合 、以下に示す 2 つの方法のいずれかを使用して、theOperation という名前のサービス・オペレーションを呼び出すことができます。
       theService myEGLInterfacePart {@BindService{}};
       myStatus INT;
    
       // 整数が戻された場合、次の呼び出しのいずれかが有効
       theService.theOperation();
       myStatus = theService.theOperation();
  • 『EGL コア例外レコード』で説明するように、ネイティブ・サービスへのアクセスの失敗、またはゼロ以外の戻りコードでは、ServiceInvocationException 例外がスローされます。