intra-mart Accel Platform IM-Workflow プログラミングガイド 第21版 2019-12-01

8.4.1. 実装例

サンプルとして提供されている「物品購買」の申請書において、GreyBoxで表示される申請画面の閉じる処理が実行された際に、「物品購買」の申請書で定義された関数をコールバック関数として実行する例です。
なお、サンプルはPC用画面のみ用意しています。
スマートフォン用画面の場合も全体の流れは同じです。実装中で使用するタグライブラリや Client-side JavaScript API が異なることに注意してください。
下記のプログラムが、コールバック関数の実行を行うための処理が記述されたプログラムです。
  • スクリプト開発モデル

    <./jssp/src/sample/im_workflow/purchase/screen/apply_callback.html>
  • JavaEE開発モデル

    <(展開したwar)/sample/im_workflow/purchase/apply_callback.jsp>
上記ファイルを、以下のファイル名に変更し、上書き保存することで、申請画面において本機能の動作確認を行うことが出来ます。
  • スクリプト開発モデル

    <./jssp/src/sample/im_workflow/purchase/screen/apply.html>
  • JavaEE開発モデル

    <(展開したwar)/sample/im_workflow/purchase/apply.jsp>
以下のような処理を記述することで、コールバック関数の実行を行うことが出来ます。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<imart type="head">

<imart type="workflowOpenPageCsjs"/>
<script type="text/javascript">

function onClickOpenPage(pageType) {
    if (pageType != "1") {
        if(!inputCheck()) {
            return;
        }
    }

    // 申請画面を表示する際に、コールバック関数を引数で指定します。
    workflowOpenPage(pageType, callbackFnc);
}

// 申請画面を「閉じる」または「戻る」際に実行する処理を記載します。
function callbackFnc() {
    alert("Callback function is executed.");
}
.
.
.
<imart type="form" name="backForm" method="POST" page=$data.imwCallOriginalPagePath>
    <imart type="hidden" imwCallOriginalParams=$data.imwCallOriginalParams />
</imart>
IM-Workflow で提供する各処理(申請/再申請/申請(起票案件)/一時保存/処理/確認)画面の処理完了後にコールバック関数が実行された場合、コールバック関数は処理された案件の情報を引数として受け取ることができます。
1
2
3
4
5
function callbackFnc(result) {
    alert("Callback function is executed.");
    alert( result.imwSystemMatterId );    // システム案件ID
    alert( result. imwUserDataId );    // ユーザデータID
}
処理種別と受け取ることのできる情報の関係は以下の通りです。
処理種別

システム案件ID
imwSystemMatterId
ユーザデータID
imwUserDataId
申請 -
再申請 -
申請(起票案件) -
一時保存 -
処理 -
確認 -
< 「○」 : 取得可能 / 「-」 : 取得不可能>