IM-BPM for Accel Platform IM-BPM チュートリアルガイド 第18版 2021-04-01

4.3.5.2. オプショナルタスクのパラメータをFormaアプリケーションと連携する

このチュートリアルでは、オプショナルタスクを追加する際に設定できるパラメータを「IM-FormaDesigner」で作成したアプリケーション画面で使用する方法を解説します。
オプショナルタスクの詳細については、「IM-BPM 仕様書」 - 「オプショナルタスク」 もあわせて参照してください。
../../../../_images/optional_task_0101.png
図 : 概要図
プロセスを進めていく中で、「IM-LogicDesigner」のロジックフローと「IM-FormaDesigner for Accel Platform」で作成したFormaアプリケーションを使用します。
チュートリアルを開始する前に以下の資材をインポートしてください。

コラム

各種インポート方法については、以下のリンクを参照してください。

コラム

このチュートリアルで作成するプロセス定義は、以下のリンクからダウンロードできます。


プロセス定義のアップロード方法については、以下のリンクを参照してください。
アップロード手順は「IM-BPM プロセスデザイナ 操作ガイド」-「プロセス定義のアップロード」を参照してください。

4.3.5.2.1. プロセス定義を作成する

下記のプロセス図は、「健康診断のアンケートフロー」です。
アンケート実施者がプロセスを開始し、アンケートに回答してほしいユーザに対して「アンケート依頼」タスクを実行します。
Formaアプリケーションの「アクション設定」を使用し、「タスク追加時に設定された年齢が40歳以上だった場合、胃がん検診の内容(バリウム・胃カメラ)を選択させる」ようにします。
「アンケート完了」タスクを処理すると未回答のアンケートが強制終了され、「アンケート結果」タスクからアンケートの集計内容が確認できます。
  • 「アンケート実施中」サブプロセス
    「健康診断アンケートフロー」を開始することで、最初に実行状態に入るサブプロセスです。
  • 「アンケート完了」タスク
    オプショナルタスク「アンケート依頼」を実行している間、フローを開始したユーザに滞在するタスクです。
    このタスクを処理することで「アンケート実施中」サブプロセスが終了し、「アンケート結果」タスクに移行します。
  • 「アンケート依頼」タスク
    複数追加可能な設定がされているオプショナルタスクです。
    タスクの担当者やアンケート回答者の年齢などを「タスク追加」画面のパラメータで設定します。
    実行されたタスクは、フォームキーで設定された「健康診断アンケート」画面を表示します。
    アンケートで入力された値は、タスクリスナで設定されている「IM-LogicDesigner」で計算されます。
  • 「アンケート結果」タスク
    「アンケート実施中」サブプロセスが完了すると到達するタスクです。
    「IM-LogicDesigner」で集計した値を、フォームキーで設定された「アンケート結果」画面に表示します。
    ../../../../_images/optional_task_0102.png
    図 : プロセス定義図
  1. 「開始イベント」を設置します。
  2. フローを開始したユーザを各タスクの担当者に設定するために、「イニシエータ」を設定しておきます。
    「開始イベント」の「メインコンフィグ」から、「イニシエータ」に starter と設定します。
    ../../../../_images/optional_task_0103.png
    図 : プロセス全体 - 「プロパティ」 - 「メインコンフィグ」
  3. プロセス全体の設定を行います。
    キャンパスの空白部分をクリックし、「プロパティ」をプロセス全体切り替えます。
    「プロセス」タブから、以下のように項目を設定します。
    • 名前 : 健康診断アンケートフロー
    • 処理対象ユーザ : aoyagi
    ../../../../_images/optional_task_0104.png
    図 : プロセス全体- 「プロパティ」 - 「プロセス」
  4. Formaアプリケーションで使用する初期値を設定します。
    「データオブジェクト」タブから、データプロパティの「追加」リンクをクリックします。
    ../../../../_images/optional_task_0105.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「データオブジェクト」
  5. 「データプロパティ」ダイアログが表示されます。
    以下のように、3つのパラメータを設定します。
    • バリウム検査希望人数の初期値

      • ID : barium
      • 名前 : barium
      • 型 : int
      • 値 : 0
    • 胃カメラ検査希望人数の初期値

      • ID : gastroscope
      • 名前 :gastroscope
      • 型 : int
      • 値 : 0
    • 回答合計人数の初期値

      • ID : total
      • 名前 : total
      • 型 : int
      • 値 : 0
    ../../../../_images/optional_task_0106.png
    図 : 「データプロパティ」
  6. アンケートの実施に関係するタスクを内包するサブプロセスを設置します。
  7. サブプロセス内に「開始イベント」を設置します。
  8. アンケートの実施を終了する際に処理する「アンケート完了」タスクを設置します。
    サブプロセス内に「ユーザタスク」を設置します。
  9. 動作確認の際に「タスク一覧」画面でわかりやすくするため、ユーザタスクに名前を付けます。
    「ユーザタスク」を選択した状態で、「基本情報」タブから「名前」に アンケート完了 と設定します。
    ../../../../_images/optional_task_0107.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「基本情報」
  10. このプロセス定義を開始したユーザに対して「アンケート完了」タスクが実行されるように、EL式を設定します。
    「ユーザタスク」を選択した状態で、「メインコンフィグ」タブから「担当者」に ${starter} と設定します。
    ../../../../_images/optional_task_0108.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「メインコンフィグ」
  11. 「アンケート完了」タスクを処理することで「アンケート実施中」サブプロセスが終了するようにします。
    「強制終了イベント」を設置します。
  12. アンケートを依頼したいユーザに対して作成する「アンケート依頼」タスクを設置します。
    「ユーザタスク」を設置します。
  13. 設置したユーザタスクを「オプショナルタスク」にします。
    「ユーザタスク」を選択した状態で、「基本情報」タブから以下のように項目を設定します。
    • 名前 : アンケート依頼

    • オプショナル : 有効

    • 実行中のタスクを複数追加可能にする : 有効

      ../../../../_images/optional_task_0109.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「基本情報」
  14. 「オプショナルタスク」にパラメータを設定します。
    ユーザタスクを選択した状態で、「基本情報」タブから「タスク追加時のパラメータ」にある「追加」リンクをクリックします。
    ../../../../_images/optional_task_0110.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「基本情報」
  15. 「タスク追加時のパラメータ」ダイアログが表示されます。
    以下のように、5つのパラメータを設定します。
    • アンケート対象者
      表示名 : アンケート対象者
      変数名 : target_person
      入力タイプ : ユーザ検索
    • 候補日From
      表示名 : 候補日From
      変数名 : preferred_date_from
      入力タイプ : 日付
    • 候補日To
      表示名 : 候補日To
      変数名 : preferred_date_to
      入力タイプ : 日付
    • 年齢
      表示名 : 年齢
      変数名 : age
      入力タイプ : 数字
    • 備考
      表示名 : 備考
      変数名 : note_textarea
      入力タイプ : 複数行の文字列
    ../../../../_images/optional_task_0111.png
    図 : 「タスク追加時のパラメータ」
  16. 「タスク追加」画面で指定されたユーザを担当者に設定し、フォーム画面を紐づけるためEL式を設定します。
    「ユーザタスク」をクリックし、「メインコンフィグ」タブから以下の項目を設定します。
    • 担当者 : ${target_person}

    • フォームキー : forma:physical_checkup_questionnaire

      ../../../../_images/optional_task_0112.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「メインコンフィグ」
  17. 「タスク追加」画面で入力される値を、ユーザタスクのローカル変数に詰め替える設定をします。
    「ユーザタスク」を選択した状態で、「リスナ」タブから「タスクリスナ」にある「追加」リンクをクリックします。
    ../../../../_images/optional_task_0113.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「リスナ」
  18. 「タスクリスナ」ダイアログから、下記のように項目を設定します。

    • イベント : create
    • タイプ :
    • 式 : ${task.setVariablesLocal(execution.getVariablesLocal())}
    ../../../../_images/optional_task_0114.png
    図 : 「タスクリスナ」

    コラム

    スコープとは、変数の参照可能範囲を指します。
    変数のスコープは、それぞれ以下のような参照範囲を表します。
    • Process : 当該のプロセス内のどこからでも参照できます。
    • Execution : 当該のアクティビティが実行されているエグゼキューション内からのみ参照できます。
    • Task : 当該のユーザタスクからのみ参照できます。
    Formaアプリケーションとの連携は、ProcessおよびTaskのスコープの変数のみ連携されるため、オプショナルタスクで追加した変数情報をTaskのスコープに詰め替えをしています。
  19. アンケートの回答内容を「IM-LogicDesigner」で計算します。
    「ユーザタスク」を選択した状態で、「リスナ」タブから「タスクリスナ」にある「追加」リンクをクリックします。
    ../../../../_images/optional_task_0115.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「リスナ」
  20. 「タスクリスナ」ダイアログから、下記のように項目を設定します。

    • イベント : complete

    • タイプ : IM-LogicDesigner

    • フローID : optional_task_parameter_usage

    • 最新バージョン : 最新バージョンを使用

    • 入力データ

      • taskId : ${task.getId()}
      • processInstanceId : ${task.getProcessInstanceId()}
      • stomach_cancer : ${stomach_cancer}
    ../../../../_images/optional_task_0116.png
    図 : 「タスクリスナ」
  21. 複数追加した「アンケート依頼」タスクは同じForma画面を使用するため、各タスクの情報を混同しないようにリセットするEL式を設定します。
    「ユーザタスク」を選択した状態で、「リスナ」タブから「実行リスナ」にある「追加」リンクをクリックします。
    ../../../../_images/optional_task_0117.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「リスナ」
  22. 「実行リスナ」ダイアログから、下記のように項目を設定します。

    • イベント : end
    • タイプ :
    • 式 : ${execution.removeVariable("stomach_cancer")}${execution.removeVariable("preferred_date_req")}
    ../../../../_images/optional_task_0118.png
    図 : 「実行リスナ」
  23. アンケートの集計結果を表示するForma画面を開く「アンケート結果」タスクを設置します。
    プロセスを開始したユーザを担当者に設定し、フォーム画面を紐づけます。
    「ユーザタスク」をクリックし、「メインコンフィグ」タブから以下の項目を設定します。
    • 担当者 : ${starter}
    • フォームキー : forma:physical_checkup_result
    ../../../../_images/optional_task_0119.png
    図 : 「ユーザタスク」 - 「プロパティ」 - 「メインコンフィグ」
  24. 「終了イベント」を設置します。

4.3.5.2.2. 「IM-FormaDesigner」のアプリケーション画面を確認する

このチュートリアルでは、オプショナルタスクを追加時に設定するパラメータが「IM-FormaDesigner」と紐づいている部分の解説のみ行います。
「アンケート結果」タスクに設定したForma画面「physical_checkup_result」は、プロセスインスタンス変数を表示しているのみなので解説しません。
以降の説明は、ユーザタスク「アンケート依頼」に設定されているForma画面「physical_checkup_questionnaire」に関するものです。

「IM-FormaDesigner」の使用方法については「IM-FormaDesigner 作成者操作ガイド」を参照してください。
  1. 「サイトマップ」→「Forma管理画面」→「Formaアプリ作成」→「アプリ一覧」をクリックして、「アプリケーション一覧」画面を表示します。

  2. チュートリアルを開始する前にインポートした「健康診断アンケート」の「edit」をクリックし、「フォーム設定」画面を開きます。

    ../../../../_images/optional_task_0120.png
    図 : 「アプリケーション一覧」
  3. 「フォーム設定」画面の「フォーム設定」タブから、「アプリケーション履歴一覧」にある「edit」をクリックし、「フォーム一覧」画面を表示します。

    ../../../../_images/optional_task_0121.png
    図 : 「フォーム設定」
  4. 「フォーム一覧」画面の「フォーム一覧」タブから、フォーム名「健康診断アンケートフォーム」の「edit」をクリックして「フォーム編集」画面を表示します。

    ../../../../_images/optional_task_0122.png
    図 : 「フォーム一覧」
  5. 「フォーム編集」画面が表示されます。

    ../../../../_images/optional_task_0123.png
    図 : 「フォーム編集」
  6. オプショナルタスクのパラメータを紐づけるには、「変数名」と入力アイテムの「フィールド識別ID」を統一します。
    アンケート対象者のユーザIDを表示する入力アイテム「文字列」のプロパティを確認します。
    入力アイテム「アンケート対象ユーザID」をダブルクリック、または、アイテムを選択した状態で表示される「forma_property」をクリックします。
    ../../../../_images/optional_task_0124.png
    図 : 「フォーム編集」
  7. 「プロパティ」ダイアログの「詳細設定」タブから、「フィールド識別ID」を確認します。
    オプショナルタスクの「タスク追加時のパラメータ」に設定した「変数名」と、入力アイテムの「フィールド識別ID」を統一しています。
    ../../../../_images/optional_task_0125.png
    図 : 「フォーム編集」
  8. 入力アイテム「期間」のプロパティを確認します。
    オプショナルタスクの「タスク追加時のパラメータ」に設定した「変数名」と、入力アイテムの「フィールド識別ID」を統一しています。
    ../../../../_images/optional_task_0126.png
    図 : 「フォーム編集」
  9. 表示アイテム「ラベル」のプロパティを確認します。
    オプショナルタスクの「タスク追加時のパラメータ」に設定した「変数名」と、入力アイテムの「フィールド識別ID」を統一しています。
    ../../../../_images/optional_task_0127.png
    図 : 「フォーム編集」
  10. 汎用アイテム「隠しパラメータ」のプロパティを確認します。
    オプショナルタスクの「タスク追加時のパラメータ」に設定した「変数名」と、入力アイテムの「フィールド識別ID」を統一しています。
    ../../../../_images/optional_task_0128.png
    図 : 「フォーム編集」
  11. 隠しパラメータ「age」を使用している箇所を確認します。
    「フォーム編集」画面のツールバーにある「アクション設定」ボタンをクリックし、「イベント設定」ダイアログを表示します。
    ../../../../_images/optional_task_0129.png
    図 : 「フォーム編集」
  12. 「胃がん検診を非表示にする」の設定を確認します。
    「初期表示イベント」タブから、「胃がん検診を非表示にする」の「edit」ボタンをクリックします。
    ../../../../_images/optional_task_0130.png
    図 : 「イベント設定」
  13. 「表示モード変換設定」ダイアログが表示されます。
    アイテム「ラジオボタン」の表示モードが「非表示」にされていることを確認します。
    条件がTrueだった場合、「ラジオボタン」が非表示にされるよう設定されていることがわかります。
    ../../../../_images/optional_task_0131.png
    図: 「表示モード変換設定」
  14. 「胃がん検診を非表示する」の条件を確認します。
    初期表示イベントタブから、説明が「胃がん検診を非表示する」の「forma-application-pencil」ボタンをクリックします。
    ../../../../_images/optional_task_0132.png
    図 : 「イベント設定」
  15. 「条件設定」ダイアログが表示されます。
    入力欄に「age < 40」と設定してあるのを確認します。
    隠しパラメータ「age」が40歳未満だった場合、Trueの判定が出るように設定されていることがわかります。
    ../../../../_images/optional_task_0133.png
    図: 「条件設定」

4.3.5.2.3. 結果を確認する

このチュートリアルで作成した「プロセス定義」を実行環境にデプロイし、実行結果の確認を行います。
  1. 「健康診断アンケートフロー」を開始します。
    「サイトマップ」→「BPM」→「プロセス開始一覧」画面を表示し、「健康診断アンケートフロー 」の「startable_list-start_processes」アイコンンをクリックします。
    ../../../../_images/optional_task_0134.png
    図 : 「プロセス開始一覧」
  2. 開始されたプロセスを確認します。
    「プロセス開始一覧」画面のツールバーにある「タスク一覧」をクリックし、「タスク一覧」画面を表示します。
    ../../../../_images/optional_task_0135.png
    図 : 「プロセス開始一覧」
  3. 開始したプロセスに対して「オプショナルタスク」を追加します。
    「タスク一覧」画面の「個人タスク」にある「健康診断アンケートフロー」の「icon_reference」アイコンをクリックし、「プロセス参照」画面を表示します。
    ../../../../_images/optional_task_0136.png
    図 : 「タスク一覧」 - 「個人タスク」
  4. 「プロセス参照」画面が表示されます。
    ツールバーにある「タスク追加」ボタンをクリックし、「タスク追加」画面を表示します。
    ../../../../_images/optional_task_0137.png
    図 : 「プロセス参照」
  5. 「アンケート依頼」タスクを作成します。
    「アンケート実施中」サブプロセスの中にあるオプショナルタスク「アンケート依頼」をクリックします。
    ../../../../_images/optional_task_0138.png
    図 : 「タスク追加」
  6. 「タスクの追加」ダイアログが表示されます。
    今回のチュートリアルでは結果確認動作を簡易化するため、全ての担当者に aoyagi を指定します。
    まず、40歳以上のユーザに対するアンケートを作成するため、パラメータを以下のように設定して作成します。
    • アンケート対象者 : aoyagi

    • 候補日From : 任意(必須)

    • 候補日To : 任意(必須)

    • 年齢 : 40

    • 備考 : 任意

      ../../../../_images/optional_task_0139.png
    図 : 「タスクの追加」

    注意

    オプショナルタスクの「タスク追加時のパラメータ」には必須チェックが存在しないため、タスク発行の際には未入力の項目がないか注意してください。
    実行中の範囲に対して追加したオプショナルタスクは編集できません。
  7. 「アンケート依頼」のタスクが追加されたことを確認します。
    また、このオプショナルタスクは「複数追加を可能にする」と設定されているため、オプショナルタスク一覧にある「アンケート依頼」がグレーアウトしていないことを確認します。
    ../../../../_images/optional_task_0140.png
    図 : 「タスク追加」
  8. 40歳未満に対するアンケートを作成します。
    「アンケート実施中」サブプロセスの中にあるオプショナルタスク「アンケート依頼」をクリックします。
    ../../../../_images/optional_task_0141.png
    図 : 「タスク追加」
  9. 「タスクの追加」ダイアログが表示されます。
    40歳未満のユーザに対するアンケートを作成するため、パラメータを以下のように設定して作成します。
    • 担当者 : aoyagi
    • 候補日From : 任意(必須)
    • 候補日To : 任意(必須)
    • 年齢 : 39
    • 備考 : 任意
    ../../../../_images/optional_task_0142.png
    図 : 「タスクの追加」
  10. 「アンケート依頼」タスクの実行マークに「2」と表示され、かつ、オプショナルタスクはクリックできる状態であることを確認します。

    ../../../../_images/optional_task_0143.png
    図 : 「タスク追加」
  11. 「アンケート依頼」タスクを処理するため、「タスク一覧」画面に戻ります。

  12. 「タスク一覧」画面の「個人タスク一覧」に、「アンケート依頼」タスクが2件追加されているのを確認します。

    ../../../../_images/optional_task_0144.png
    図 : 「タスク一覧」 - 「個人タスク」
  13. 40歳以上のユーザとしてアンケートに回答します。
    先に作成された「アンケート依頼」タスクの「startable_list-start_processes」アイコンボタンをクリックします。
    ../../../../_images/optional_task_0145.png
    図 : 「タスク一覧」 - 「個人タスク」
  14. FormaDesignerで作成された「健康診断アンケート」画面が表示されます。
    オプショナルタスクのパラメータで年齢を「40」と設定したため、Formaアプリケーションのアクション設定により「胃がん検診」の選択項目が表示されています。
    ../../../../_images/optional_task_0146.png
    図 : 健康診断アンケート(IM-FormaDesigner)
  15. 任意の日付を選択し、今回は「バリウム」を選択して送信します。

    ../../../../_images/optional_task_0147.png
    図 : 健康診断アンケート(IM-FormaDesigner)
  16. 「個人タスク」から、「アンケート依頼」タスクが1つだけ処理されていることを確認します。
    ../../../../_images/optional_task_0148.png
    図 : 「タスク一覧」 - 「個人タスク」
  17. 40歳未満のユーザとしてアンケートに回答します。
    未処理である「アンケート依頼」タスクの「startable_list-start_processes」アイコンをクリックします。
    ../../../../_images/optional_task_0149.png
    図 : 「タスク一覧」 - 「個人タスク」
  18. 「健康診断アンケート」画面が表示されます。
    オプショナルタスクのパラメータで年齢を「39」と設定したため、Formaアプリケーションの設定で「胃がん検診」の選択項目が表示されません。
    ../../../../_images/optional_task_0150.png
    図 : 健康診断アンケート(IM-FormaDesigner)
  19. 任意の日付を設定し、「送信」ボタンをクリックします。
    ../../../../_images/optional_task_0151.png
    図 : 健康診断アンケート(IM-FormaDesigner)
  20. アンケートの集計結果を確認するため、「アンケート実施中」サブプロセスを完了させます。
    個人タスクにある「アンケート完了」タスクの「startable_list-start_processes」アイコンをクリックし、タスクを処理します。
    ../../../../_images/optional_task_0152.png
    図 : 「タスク一覧」 - 「個人タスク」
  21. アンケートの集計結果を確認します。
    個人タスクにある「アンケート結果」タスクの「startable_list-start_processes」アイコンをクリックしします。
    ../../../../_images/optional_task_0153.png
    図 : 「タスク一覧」 - 「個人タスク」
  22. 「アンケート結果」画面が表示されます。
    上記の段取り通り、回答人数が「2」、バリウム希望者が「1」になっていることを確認し「確認」ボタンをクリックします。
    ../../../../_images/optional_task_0154.png
    図 : アンケート結果(IM-FormaDesigner)
  23. 「健康診断アンケートフロー」が完了したため、「タスク一覧」画面の「個人タスク」にタスクがないことを確認します。
    ../../../../_images/optional_task_0155.png
    図 : 「タスク一覧」 - 「個人タスク」
  24. オプショナルタスクに設定したパラメータと、個人の回答結果を確認します。
    「サイトマップ」→「BPM」→「プロセス一覧」画面を表示します。
  25. 既に完了しているプロセスのため、初期表示のステータス「実行中」では表示されません。
    「ステータス」のラジオボタンを「完了」、または、「全て表示する」にして「検索」ボタンをクリックします。
    ../../../../_images/optional_task_0156.png
    図 : 「プロセス一覧」
  26. プロセス定義名「健康診断アンケートフロー」の「icon_reference」アイコンをクリックします。
    ../../../../_images/optional_task_0157.png
    図 : 「プロセス一覧」
  27. オプショナルタスク詳細を確認します。
    「プロセス詳細」画面、または、「プロセス図とタイムラインを拡大表示」画面から、プロセス履歴を表示します。
    「アンケート依頼」タスクの「詳細」リンクをクリックします。
    ../../../../_images/optional_task_0158.png
    図 : 「プロセス図とタイムラインを拡大表示」
  28. 「オプショナルタスク詳細」ダイアログが表示されます。
    ここから、タスクを追加した際に設定したパラメータを確認できます。
    ../../../../_images/optional_task_0159.png
    図 : 「オプショナルタスク詳細」
  29. 個人の回答結果を確認します。
    プロセス履歴から「アンケート依頼」タスクの「タスク詳細」リンクをクリックします。
    ../../../../_images/optional_task_0160.png
    図 : 「プロセス図とタイムラインを拡大表示」
  30. 新しいウィンドウで「健康診断アンケート」が表示されます。
    ここから各個人の受診希望日、胃がん検診の希望検診内容などが確認できます。
    ../../../../_images/optional_task_0161.png
    図 : 健康診断アンケート(IM-FormaDesigner)