ステップ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. フォームをコンパイルします。