サーバー・モジュール内で SRVROUTINE を起動させるために使用する定義やコマンドには共通のフォーマットがあり、次のようになります。
Define_Com Class(#MyServerRoutine.GetData) Name(#GetData)
# GetData.ExecuteAsync EmployeeID(#Empno) EmployeeDetails(#MyEmployee)
status(#io$sts)
または、
# GetData.Execute(#EmployeeID #MyEmployee #io$sts)
ただし、実際の SRVROUTINE 定義をじっくり観察すると、SRVROUTINE には異なる 3 つのクラスがあり、ルーチンからの応答処理やルーチン呼び出しのコーディングの際にこの違いを理解しておくことは大切です。このクラスは、やり取りするデータのタイプと要求の処理方法によって区別されます。明確な DEFINE_COM (F2 使用) がサポートするメソッド、イベント、プロパティを分析すると、その関係はより明瞭になります。
データ要求
SRVROUTINE 呼び出しで最もよくあるタイプがデータ要求です。データ要求処理はクライアントから要求され、任意でデータを伴うこともあります。完了時に状態イベントを起動し、任意でクライアントから JSON 形式のデータを戻します。
データ要求の特徴:
- データは 1 つのフィールド、フィールドのグループまたはフィールドのリストとして、SRVROUTINE に送受信できます。
- 同期および非同期の呼び出し (execute と executeasync メソッド) がサポートされます。
- 完了は Completed と Failed イベントにより、検証できます。
Web ページ要求
別のページへ移行する要求です。
Web ページ要求の特徴:
- 同期実行のみがサポートされます。 (executeasync メソッドはサポートされません)
- *input/*both としてマップされたデータは、要求の Web ページに移行する前に SRVROUTINE で処理することができます。
- *output/*both としてマップされたデータは、要求の Web ページに引き渡されます。
リソース要求
リソース要求を使って、イメージやPDF などのファイルがデータベースまたはアプリケーション・サーバーから戻すことができます。ファイルは保存されていれば Web サーバーから直接アクセスできるので、頻繁に使われるものではありません。
リソース要求の特徴:
- データは、1 つのフィールド、フィールドのグループまたはフィールドのリストとして、SRVROUTINE に渡すことができますが、SRVROUTINE から戻されません。(*input/*both マッピングは入力でのみサポートされ、*output マッピングはサポートされません。)
- 同期実行のみがサポートされます。 (executeasync メソッドはサポートされません)
- 1 つの応答オブジェクト (PRIM_CLRC) のみが、ルーチンから返された情報です。