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

LANSA Integrator

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


SOAPサーバー・ソリューションをテストまたは使用する前に、ソリューションをサポートするビジネス・ロジックを作成する必要があります。つまり、部門コードと課コードのパラメータを含む要求を受け取り、要求された社員の詳細を含むEmployee戻りパラメータを作成するファンクションです。

LANSA IntegratorとSOAPウィザードによって通信の詳細に対応するファイルが生成されるため、詳細を気にする必要はありません。

以下は、Integratorスタジオで生成されたLANSA RDMLXコードをSAMPLE_RDMLX_GETEMPLOYEES.txtとして使用してコードの機能の概要を示したものです。このプログラムは、RDMLファンクションまたはILE RPGプログラムのどちらかでコード化されています。IntegratorスタジオでもRPGやRDML例が生成されます。

1.   最初に、JSMサーバーへの接続を作成し、SOAPサーバー・サービスをロードします。これを行うには、JSMX_OPEN組み込み関数とSERVICE_LOADサービス・コマンドを使用します。

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

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

4.   SOAP応答の作成が開始されていることがSOAPサービスに伝えられます。これは、SET PARAMETER(*RETURN)サービス・コマンドを使用して行われます。

      各社員の詳細がフラグメントとして渡されることが分かっているため、生成されたコードにはループが含まれます。これは、社員マスターから社員の詳細を読み込むために必要なロジックを追加する必要があるコードです。

      employee idfirst namesurnamesalaryの各フィールドは、Employee戻りパラメータのエレメントにすでにマッピングされています。

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

6.   LANSAエディタを使用して、プロセスiiiPRO08 - SOAP Serverとそれに属するRDMLXファンクションiiiFN11 - Get Employees Serverを作成します。IntegratorスタジオでSOAP Tutorialプロジェクトが開いている状態で、EmployeeServerサービス用に生成されたRDMLXを開き、ファンクションにコピーします(既存のコードを置き換えます)。

前回と同様、必要な変更は非常に簡単です。BEGIN_LOOP/END_LOOPをSELECT/ENDSELECTループに置き換えて、正しいロジカル・ビューを使用してPSLMSTファイルから必要なフィールドを取得します。コードは以下のようになります。

ステップ7の「パートB. サービス・エントリーの定義」で作成したJSMDirectサービス・エントリーがあるため、このファンクションは、一致するWebサービス要求を受け取る際にJSMDirectによって自動的に起動されます。

プロセスやファンクションの名前は、ダイレクト・サービス・エントリーに入力したものと同じでなければなりません。

7.   次のコードを探して、サービス名にイニシャルをつけて変更します。

* Open SOAP service

Change Field(#JSMXCMD) To('OPEN SERVICE(IIIEMPLOYEESERVER)')

8.   ファンクションをコンパイルします。IBM i サーバーを使用している場合、サーバーに登録してコンパイルします。