Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Wiki MarkupINT009B - SOAP サービス - エージェントの定義 これは非常に簡単なフォームで、ユーザーは部門コードと課コードを入力して \ [社員を取得\] というボタンをクリックします。 その後、プログラムによって該当する部門と課の社員リストが表示されます。フォームのビジュアル・デザインは以下のようになります。 !worddavaf485e25f57cd86bb5b0fc63f3f1b1cc.png|height=32,width=32! 1.      LANSA エディターの \[ファイル\]

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

Image Added

  1. LANSA エディターの [ファイル] メニューから、作成/基本フォームで、iiiFRM04

...

...

  1. SOAP

...

  1. を使用して社員を取得.を作成します。このフォームは

...

  1. RDMLX対応にします。
    以下のコードをコピーして、このフォームに貼り付けます。

    Function Options(*DIRECT)

...


  1. Begin_Com

...

  1. Role(*EXTENDS

...

  1. #PRIM_FORM)

...

  1. Clientheight(460)

...

  1. Clientwidth(476)

...

  1. Height(494)

...

  1. Left(610)

...

  1. Top(120)

...

  1. Width(484)

...


  1. Define

...

  1. Field(#MSGDTA)

...

  1. Type(*CHAR)

...

  1. Length(132)

...


  1. Override

...

  1. Field(#empno)

...


  1. Override

...

  1. Field(#surname)

...


  1. Override

...

  1. Field(#givename)

...


  1. Override

...

  1. Field(#salary)

...


  1. Define_Com

...

  1. Class(#DEPTMENT.Visual)

...

  1. Name(#IN_DEPT)

...

  1. Displayposition(1)

...

  1. Height(19)

...

  1. Left(7)

...

  1. Parent(#COM_OWNER)

...

  1. Tabposition(1)

...

  1. Top(21)

...

  1. Usepicklist(False)

...

  1. Width(201)

...


  1. Define_Com

...

  1. Class(#SECTION.Visual)

...

  1. Name(#IN_SECT)

...

  1. Displayposition(2)

...

  1. Height(19)

...

  1. Left(7)

...

  1. Parent(#COM_OWNER)

...

  1. Tabposition(2)

...

  1. Top(48)

...

  1. Usepicklist(False)

...

  1. Width(185)

...


  1. Define_Com

...

  1. Class(#PRIM_PHBN)

...

  1. Name(#phbnGetEmployees)

...

  1. Caption('社員を取得')

...

  1. Displayposition(3)

...

  1. Left(240)

...

  1. Parent(#COM_OWNER)

...

  1. Tabposition(3)

...

  1. Top(45)

...

  1. Width(225)

...


  1. Define_Com

...

  1. Class(#PRIM_LTVW)

...

  1. Name(#empList)

...

  1. Componentversion(2)

...

  1. Displayposition(4)

...

  1. Fullrowselect(True)

...

  1. Height(345)

...

  1. Left(7)

...

  1. Parent(#COM_OWNER)

...

  1. Showsortarrow(True)

...

  1. Tabposition(4)

...

  1. Top(88)

...

  1. Width(461)

...


  1. Define_Com

...

  1. Class(#PRIM_LVCL)

...

  1. Name(#empList_1)

...

  1. Caption('Code')

...

  1. Captiontype(Caption)

...

  1. Displayposition(1)

...

  1. Parent(#empList)

...

  1. Source(#EMPNO)

...


  1. Define_Com

...

  1. Class(#PRIM_LVCL)

...

  1. Name(#empList_2)

...

  1. Caption('Surname')

...

  1. Captiontype(Caption)

...

  1. Displayposition(2)

...

  1. Parent(#empList)

...

  1. Source(#SURNAME)

...

  1. Width(24)

...


  1. Define_Com

...

  1. Class(#PRIM_LVCL)

...

  1. Name(#empList_3)

...

  1. Caption('Given

...

  1. Name')

...

  1. Captiontype(Caption)

...

  1. Displayposition(3)

...

  1. Parent(#empList)

...

  1. Source(#GIVENAME)

...

  1. Width(27)

...


  1. Define_Com

...

  1. Class(#PRIM_LVCL)

...

  1. Name(#empList_4)

...

  1. Caption('Salary')

...

  1. Captiontype(Caption)

...

  1. Displayposition(4)

...

  1. Parent(#empList)

...

  1. Source(#SALARY)

...


  1. Define_Com

...

  1. Class(#PRIM_STBR)

...

  1. Name(#STBR_1)

...

  1. Displayposition(5)

...

  1. Height(24)

...

  1. Left(0)

...

  1. Messageposition(1)

...

  1. Parent(#COM_OWNER)

...

  1. Tabposition(5)

...

  1. Tabstop(False)

...

  1. Top(436)

...

  1. Width(476)

...



  1. Evtroutine

...

  1. Handling(#com_owner.Initialize)

...


  1. Set

...

  1. Com(#com_owner)

...

  1. Caption(*component_desc)

...


  1. Endroutine

...


  1. *

...


  1. Evtroutine

...

  1. Handling(#phbnGetEmployees.Click)

...


  1. Endroutine
    --------------------------------------------------------------------

...

  1. *サブルーチン CHECK - 例外の状態になった後

...

  1. *                 JSM ステータスを確認
    --------------------------------------------------------------------
    Subroutine Name(CHECK) Parms((#jsmxsts *RECEIVED) (#jsmxmsg *RECEIVED))

...



  1. If (#jsmxsts *NE OK)

...


  1. *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

...


  1. Integrator スタジオでプロジェクト "iii SOAP チュートリアル" を開きます。EmployeeAgent ソリューション用に生成された RDMLX コードを探し、テキスト・エディターで開きます。SAMPLE_RDMLX_GETEMPLOYEES.TXT. ファイルを参照してください。

...

  1. Image Added

...


  1. 以下の間にあるコードをすべてコピーします。

...


  1. *The following fields are used by the soap binding map

...

  1. *#DEPTMENT
    ....

...

  1. 次に

...

  1. *Close service

...

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

...

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

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

...


  1. フォームの部コードおよび課コードに対するフィールド・コンポーネント定義を確認します。それぞれに IN_DEPT、IN_SECT という名前が付いています。演習用 SOAP サービスでは、これらのフィールドを変数 DEPTMENT および SECTION としてマッピングします。設定パラメータが実行される前に、変数 DEPTMENT と SECTION の値を設定する必要があります。コメント行 * set parameter – DEPARTMENTCODE と * set parameter – SECTIONCODE を探して、割り当てステートメントを追加して設定します。コードは以下のようになります。

...

  1. Image Added

...


  1. コメント行 * Open SOAP Service を探します。次の行で自身の SOAP サービス名を使用するように変更します。

...


  1. *Open SOAP Service
    Change Field(#JSMXCMD) To('OPEN SERVICE(IIIEMPLOYEEAGENT)') 

...


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

...

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

...

  1. Image Added

  2. フォームをコンパイルします。  これ以上行うことはありません。次の演習で変更箇所のテストを行います。