Rich UI では、サービスを非同期に呼び出すには call ステートメントを使用します。
call serviceName.operationName(argumentList)
returning to myCallbackFunction onException myExceptionHandler
{timeout = milliseconds};
引数に関する制約については、『サービス・アクセスのプロトタイプ』を参照してください。
serviceLib.serviceExceptionHandler = myLibrary.myExceptionHandler;
call ステートメント (ステートメントに serviceLib.serviceExceptionHandler が含まれる場合) によって呼び出されるすべてのサービスについて、EGL ランタイム・コードは、カスタマイズ済みの例外ハンドラーを実行する (この場合は、myLibrary.myExceptionHandler を実行する) ことによって、ランタイム例外に応答します。
milliseconds のデフォルト値は、defaultServiceTimeout ビルド記述子オプションで設定できます。defaultServiceTimeout ビルド記述子オプションには設定されているデフォルト値はありません。 defaultServiceTimeout と milliseconds のいずれにも値を指定していない場合、サービス呼び出しはタイムアウトしません。詳しくは、『defaultServiceTimeout』を参照してください。
コールバック関数は、サービスによって送信された応答内に値がある場合は、その値を受け取ります。コールバック自体は戻り値を持ちません。
コールバック関数がサード・パーティーの REST サービスから呼び出される場合、関数にゼロまたは 1 つのパラメーターが使用されている可能性があります。パラメーターが指定されている場合は、その型は、インターフェース・パーツで指定された戻りの型と一致する必要があり、パラメーター修飾子は IN です。
Interface EmployeeService {}
Function GetEmployeeDetail(employeeCode STRING IN,
employeeSalary FLOAT OUT,
employeeStatus STRING INOUT)
returns(myEmployeeRecordPart);
end
myInterface EmployeeService;
call myInterface.GetEmployeeDetail("A123", 25.8, "Full-time")
returning to myCallback onException myExceptionHandler;
Function myCallBack(salary FLOAT IN,
status STRING IN,
myRecord myEmployeeRecordPart IN)
// statements here
end
関数には、OUT または INOUT であるサービス操作パラメーターごとに 1 つのパラメーターが含まれています。コールバック関数におけるこれらのパラメーターの順序は、サービス操作での順序と同じです。 サービス操作の戻り値は、コールバック関数内での最後のパラメーターとして表されます。
以下に、onException 関数の概要を示します。
Function myExceptionHandler(exp AnyException)
case
when (exp isa ServiceBindingException)
;
when (exp isa ServiceInvocationException)
;
otherwise
;
end
end
サービス・バインディングの問題により、ServiceBindingException が発生します。 その他の問題によって ServiceInvocationException または RuntimeException が発生することがありますが、発生する可能性は高くありません。