You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

ステップ 8. SOAP サーバーのビジネス・ロジックを作成する

INT009A - SOAP サービス - サーバーの定義
SOAP サーバー・ソリューションのテスト、利用の前に、ソリューションをサポートするビジネス・ロジックを作成する必要があります。つまり、部門コードと課コードのパラメータを含む要求を受け取り、要求された社員の詳細を含む Employee 戻りパラメータを作成するファンクションが必要です。
通信の詳細に関しては、LANSA Integrator と SOAP ウィザードによって対応するファイルが生成されるため、心配する必要はありません。
以下は、Integratorスタジオによって生成された LANSA RDMLX コード (SAMPLE_RDMLX_GETEMPLOYEES.txt) を利用する機能の概要です。このプログラムは代わりに RDML ファンクションや RPG プログラムとしてコーディングすることも可能です。Integrator スタジオでは、RDML や RDML のサンプルも生成されます。
1.       LANSA エディターを使用して、新規のプロセス iiiPRO08 –SOAP サーバーとこれに属する RDMLX ファンクション iiiFN09– 社員取得サーバーを作成します (テンプレートは使用しません)。Integrator スタジオでiii SOAP チュートリアル・プロジェクトを開いた状態で、EmployeeServer サービス用に生成された RDMLX を開き、このファンクションにコピーします (既存のコードと置き換えます)。

2.次のステップは、ファンクション内のロジックの記述です。ます最初に、JSM サーバーへの接続を作成し、その後、SOAP サーバー・サービスをロードします。これは、JSMX_OPEN 組み込み関数と SERVICE_LOAD サービス・コマンドを使用して行います。

2.      このファンクションは、サービス iiiEMPLOYEESERVER を開いてオブジェクト *OPERATION を取得します。操作が GETEMPLOYEES 以外の場合はエラーが発生して終了します。SOAP 操作を処理するファンクションは複数作成することが可能です。GetEmployees サービス操作が要求された場合、処理は続行されます。

3.      プログラムは GET PARAMETER サービス・コマンドを使用して、部門コードと課コードに対して受信した値を取得します。「ステップ 5. プログラム変数にパラメータをマッピングする」で、プログラム変数名にこれらのパラメータをマッピングしたことを思い出してください。これを呼び出すことで、変数が自動的に入力されます。

4.      SOAP 応答の作成が開始されていることが、このプログラムによって SOAP サービスに伝えられます。これは、SET PARAMETER(*RETURN)サービス・コマンドを使用して行われます。
         各社員の詳細が 1 つのフラグメントとして渡されることが分かっているので、生成されたコードにはループが含まれます。修正が必要となるのがこのコーディング部分で、社員ファイルから社員の詳細を読み込むために必要なロジックを追加する必要があります。
         社員 ID、名、姓、給与の各フィールドは、Employee 戻りパラメータのエレメントにすでにマッピングされています。

5.      最後に、iiiEmployeeServer ソリューションを閉じて JSM への接続を閉じるとプログラムが終了します。これにより、SOAP サーバー・サービスでは、プログラムで提供されたデータを使用して SOAP 応答を送信します。

 
6.      BEGIN_LOOP/END_LOOP を SELECT/ENDSELECT ループに置き換えて、正しい論理ビューを使用して PSLMST ファイルから必要なフィールドを取得します。コードは以下のようになります。

「ステップ 7B. サービス・エントリーを定義する」で作成した JSMDirect サービス・エントリーがあるため、このファンクションは、一致する Web サービス要求の受信時に JSMDirect によって自動的に起動されます。
プロセスやファンクションの名前は、Direct サービスのエントリーに入力したものと同じでなければなりません。
7.    以下のコードを探して、サービス名を自身のイニシャルに変更します。

  • Open SOAP service
    Change Field(#JSMXCMD) To('OPEN SERVICE(IIIEMPLOYEESERVER)')
     
    8.      ファンクションをコンパイルします。IBM i サーバーを使用している場合は、サーバーにチェックインしてコンパイルします。
     
  • No labels