ステップ6. フォームiiiFRM02 - SOAP を利用して社員情報を取得を作成する

LANSA Integrator

ステップ6. フォームiiiFRM02 - SOAP を利用して社員情報を取得を作成する


これは、ユーザーが部門コードと課コードを入力して[社員を取得]というボタンをクリックする非常に簡単なフォームです。

該当する部門と課の社員リストが表示されます。フォームのビジュアル・デザインは以下のようになります。

1.   LANSAエディタで、RDMLX対応フォームiiiFRM02 - SOAP を利用して社員情報を取得を作成します。

      以下のコードをコピーして、フォームに貼り付けます。

Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #PRIM_FORM) Clientheight(460) Clientwidth(476) Height(494) Left(261) Top(120) Width(484)
Define Field(#MSGDTA) Type(*CHAR) Length(132)
Override Field(#empno)
Override Field(#surname)
Override Field(#givename)
Override Field(#salary)
Define_Com Class(#DEPTMENT.Visual) Name(#IN_DEPT) Displayposition(1) Height(19) Left(7) Parent(#COM_OWNER) Tabposition(1) Top(21) Usepicklist(False) Width(201)
Define_Com Class(#SECTION.Visual) Name(#IN_SECT) Displayposition(2) Height(19) Left(7) Parent(#COM_OWNER) Tabposition(2) Top(48) Usepicklist(False) Width(185)
Define_Com Class(#PRIM_PHBN) Name(#phbnGetEmployees) Caption('Get Employees') Displayposition(3) Left(240) Parent(#COM_OWNER) Tabposition(3) Top(45) Width(225)
Define_Com Class(#PRIM_LTVW) Name(#empList) Componentversion(2) Displayposition(4) Fullrowselect(True) Height(345) Left(7) Parent(#COM_OWNER) Showsortarrow(True) Tabposition(4) Top(88) Width(461)
Define_Com Class(#PRIM_LVCL) Name(#empList_1) Caption('Code') Captiontype(Caption) Displayposition(1) Parent(#empList) Source(#EMPNO)
Define_Com Class(#PRIM_LVCL) Name(#empList_2) Caption('Surname') Captiontype(Caption) Displayposition(2) Parent(#empList) Source(#SURNAME) Width(24)
Define_Com Class(#PRIM_LVCL) Name(#empList_3) Caption('Given Name') Captiontype(Caption) Displayposition(3) Parent(#empList) Source(#GIVENAME) Width(27)
Define_Com Class(#PRIM_LVCL) Name(#empList_4) Caption('Salary') Captiontype(Caption) Displayposition(4) Parent(#empList) Source(#SALARY)
Define_Com Class(#PRIM_STBR) Name(#STBR_1) Displayposition(5) Height(24) Left(0) Messageposition(1) Parent(#COM_OWNER) Tabposition(5) Tabstop(False) Top(436) Width(476)

Evtroutine Handling(#com_owner.Initialize)
Set Com(#com_owner) Caption(*component_desc)
Endroutine
*
Evtroutine Handling(#phbnGetEmployees.Click)

Endroutine
* --------------------------------------------------------------------
* Subroutine CHECK - check the JSM status after a JSM call and handle
* . exceptional conditions
* --------------------------------------------------------------------
Subroutine Name(CHECK) Parms((#jsmxsts *RECEIVED) (#jsmxmsg *RECEIVED))

If (#jsmxsts *NE OK)

* Close service and send the HTTP response
Use Builtin(JSMX_CLOSE) With_Args(#jsmxhdle1) To_Get(#jsmxsts #jsmxmsg)
#MSGDTA := 'Error Status Code:' + #JSMXSTS
Message Msgid(DCM9899) Msgf(DC@M01) Msgdta(#MSGDTA)
#MSGDTA := 'Error Message:' + #JSMXMSG
Message Msgid(DCM9899) Msgf(DC@M01) Msgdta(#MSGDTA)
Endif
Endroutine
End_Com

2.   IntegratorスタジオでSOAP Tutorialプロジェクトを開きます。EmployeeAgentソリューション用に生成されたRDMLXコードを探し、テキスト・エディタで開きます。

3.   以下の2箇所の間にあるコードをすべてコピーします。

* The following fields are used by the soap binding map

* #DEPTMENT

. . . .

および

* Close service

USE BUILTIN(JSMX_CLOSE) WITH_ARGS(#JSMXHDLE1) TO_GET(#JSMXSTS #JSMXMSG)

EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMXSTS #JSMXMSG)

上記のコードとともに、#phbnGetEmployeesを処理するイベント・ルーチンにコピーします。フォームをクリックします。これにより、以前のステップで確認したように、SOAPサービスを呼び出すために必要なロジックの大部分が提供されます。

4.   フォーム上のビジュアル・フィールドDEPTMENTとSECTIONの定義を調べ、その名前がIN_DEPTとIN_SECTになっていることに注意してください。SOAPチュートリアル・サービスは、これらのフィールドを変数DEPTMENTおよびSECTIONとしてマッピングします。設定パラメータの前に、変数DEPTMENTとSECTIONの値を設定する必要があります。設定するには、* set parameter - DEPARTMENTCODEと* set parameter - SECTIONCODEのコメント行を探し、割り当てステートメントを追加します。コードは以下のようになります。

5.   * Open SOAP Serviceのコメント行を探します。以下の行を自身のSOAPサービス名に変更します。

* Open SOAP Service

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

6.   フォームで以下のコードを探します。

コマンドGET FRAGMENT(RESPONSE) SERVICE_EXCHANGE(*FIELD)は、返されたフィールドをプログラム変数にマッピングします。つまり、このループ内で、フォームのリスト・ビューにエントリーを追加できます。完了したコードは以下のようになります。

7.   フォームをコンパイルします。