4.3.5.2. オプショナルタスクのパラメータをFormaアプリケーションと連携する¶
コラム
- 「IM-FormaDesigner」で作成したアプリケーション : 「IM-FormaDesigner 作成者操作ガイド」-「インポート・エクスポートを利用した IM-FormaDesigner のアプリケーションやデータソース定義の移行」
- ロジックフロー: 「IM-LogicDesigner ユーザ操作ガイド」-「インポート/エクスポート」
コラム
4.3.5.2.1. プロセス定義を作成する¶
「アンケート実施中」サブプロセス「健康診断アンケートフロー」を開始することで、最初に実行状態に入るサブプロセスです。 「アンケート完了」タスクオプショナルタスク「アンケート依頼」を実行している間、フローを開始したユーザに滞在するタスクです。このタスクを処理することで「アンケート実施中」サブプロセスが終了し、「アンケート結果」タスクに移行します。 「アンケート依頼」タスク複数追加可能な設定がされているオプショナルタスクです。タスクの担当者やアンケート回答者の年齢などを「タスク追加」画面のパラメータで設定します。実行されたタスクは、フォームキーで設定された「健康診断アンケート」画面を表示します。アンケートで入力された値は、タスクリスナで設定されている「IM-LogicDesigner」で計算されます。 「アンケート結果」タスク「アンケート実施中」サブプロセスが完了すると到達するタスクです。「IM-LogicDesigner」で集計した値を、フォームキーで設定された「アンケート結果」画面に表示します。
- 「開始イベント」を設置します。
- フローを開始したユーザを各タスクの担当者に設定するために、「イニシエータ」を設定しておきます。「開始イベント」の「メインコンフィグ」から、「イニシエータ」に starter と設定します。
- プロセス全体の設定を行います。キャンパスの空白部分をクリックし、「プロパティ」をプロセス全体切り替えます。「プロセス」タブから、以下のように項目を設定します。
- 名前 : 健康診断アンケートフロー
- 処理対象ユーザ : aoyagi
- Formaアプリケーションで使用する初期値を設定します。「データオブジェクト」タブから、データプロパティの「追加」リンクをクリックします。
- 「データプロパティ」ダイアログが表示されます。以下のように、3つのパラメータを設定します。
バリウム検査希望人数の初期値
- ID : barium
- 名前 : barium
- 型 : int
- 値 : 0
胃カメラ検査希望人数の初期値
- ID : gastroscope
- 名前 :gastroscope
- 型 : int
- 値 : 0
回答合計人数の初期値
- ID : total
- 名前 : total
- 型 : int
- 値 : 0
- アンケートの実施に関係するタスクを内包するサブプロセスを設置します。
- サブプロセス内に「開始イベント」を設置します。
- アンケートの実施を終了する際に処理する「アンケート完了」タスクを設置します。サブプロセス内に「ユーザタスク」を設置します。
- 動作確認の際に「タスク一覧」画面でわかりやすくするため、ユーザタスクに名前を付けます。「ユーザタスク」を選択した状態で、「基本情報」タブから「名前」に アンケート完了 と設定します。
- このプロセス定義を開始したユーザに対して「アンケート完了」タスクが実行されるように、EL式を設定します。「ユーザタスク」を選択した状態で、「メインコンフィグ」タブから「担当者」に ${starter} と設定します。
- 「アンケート完了」タスクを処理することで「アンケート実施中」サブプロセスが終了するようにします。「強制終了イベント」を設置します。
- アンケートを依頼したいユーザに対して作成する「アンケート依頼」タスクを設置します。「ユーザタスク」を設置します。
- 設置したユーザタスクを「オプショナルタスク」にします。「ユーザタスク」を選択した状態で、「基本情報」タブから以下のように項目を設定します。
名前 : アンケート依頼
オプショナル : 有効
実行中のタスクを複数追加可能にする : 有効
図 : 「ユーザタスク」 - 「プロパティ」 - 「基本情報」 - 「オプショナルタスク」にパラメータを設定します。ユーザタスクを選択した状態で、「基本情報」タブから「タスク追加時のパラメータ」にある「追加」リンクをクリックします。
- 「タスク追加時のパラメータ」ダイアログが表示されます。以下のように、5つのパラメータを設定します。
- アンケート対象者表示名 : アンケート対象者変数名 : target_person入力タイプ : ユーザ検索
- 候補日From表示名 : 候補日From変数名 : preferred_date_from入力タイプ : 日付
- 候補日To表示名 : 候補日To変数名 : preferred_date_to入力タイプ : 日付
- 年齢表示名 : 年齢変数名 : age入力タイプ : 数字
- 備考表示名 : 備考変数名 : note_textarea入力タイプ : 複数行の文字列
- 「タスク追加」画面で指定されたユーザを担当者に設定し、フォーム画面を紐づけるためEL式を設定します。「ユーザタスク」をクリックし、「メインコンフィグ」タブから以下の項目を設定します。
担当者 : ${target_person}
フォームキー : forma:physical_checkup_questionnaire
図 : 「ユーザタスク」 - 「プロパティ」 - 「メインコンフィグ」 - 「タスク追加」画面で入力される値を、ユーザタスクのローカル変数に詰め替える設定をします。「ユーザタスク」を選択した状態で、「リスナ」タブから「タスクリスナ」にある「追加」リンクをクリックします。
「タスクリスナ」ダイアログから、下記のように項目を設定します。
- イベント : create
- タイプ : 式
- 式 : ${task.setVariablesLocal(execution.getVariablesLocal())}
- アンケートの回答内容を「IM-LogicDesigner」で計算します。「ユーザタスク」を選択した状態で、「リスナ」タブから「タスクリスナ」にある「追加」リンクをクリックします。
「タスクリスナ」ダイアログから、下記のように項目を設定します。
イベント : complete
タイプ : IM-LogicDesigner
フローID : optional_task_parameter_usage
最新バージョン : 最新バージョンを使用
入力データ
- taskId : ${task.getId()}
- processInstanceId : ${task.getProcessInstanceId()}
- stomach_cancer : ${stomach_cancer}
- 複数追加した「アンケート依頼」タスクは同じForma画面を使用するため、各タスクの情報を混同しないようにリセットするEL式を設定します。「ユーザタスク」を選択した状態で、「リスナ」タブから「実行リスナ」にある「追加」リンクをクリックします。
「実行リスナ」ダイアログから、下記のように項目を設定します。
- アンケートの集計結果を表示するForma画面を開く「アンケート結果」タスクを設置します。プロセスを開始したユーザを担当者に設定し、フォーム画面を紐づけます。「ユーザタスク」をクリックし、「メインコンフィグ」タブから以下の項目を設定します。
- 担当者 : ${starter}
- フォームキー : forma:physical_checkup_result
- 「終了イベント」を設置します。
4.3.5.2.2. 「IM-FormaDesigner」のアプリケーション画面を確認する¶
「サイトマップ」→「Forma管理画面」→「Formaアプリ作成」→「アプリ一覧」をクリックして、「アプリケーション一覧」画面を表示します。
チュートリアルを開始する前にインポートした「健康診断アンケート」の「」をクリックし、「フォーム設定」画面を開きます。
「フォーム設定」画面の「フォーム設定」タブから、「アプリケーション履歴一覧」にある「」をクリックし、「フォーム一覧」画面を表示します。
図 : 「フォーム設定」「フォーム一覧」画面の「フォーム一覧」タブから、フォーム名「健康診断アンケートフォーム」の「」をクリックして「フォーム編集」画面を表示します。
「フォーム編集」画面が表示されます。
- オプショナルタスクのパラメータを紐づけるには、「変数名」と入力アイテムの「フィールド識別ID」を統一します。アンケート対象者のユーザIDを表示する入力アイテム「文字列」のプロパティを確認します。入力アイテム「アンケート対象ユーザID」をダブルクリック、または、アイテムを選択した状態で表示される「」をクリックします。
- 「プロパティ」ダイアログの「詳細設定」タブから、「フィールド識別ID」を確認します。オプショナルタスクの「タスク追加時のパラメータ」に設定した「変数名」と、入力アイテムの「フィールド識別ID」を統一しています。図 : 「フォーム編集」
- 入力アイテム「期間」のプロパティを確認します。オプショナルタスクの「タスク追加時のパラメータ」に設定した「変数名」と、入力アイテムの「フィールド識別ID」を統一しています。
- 表示アイテム「ラベル」のプロパティを確認します。オプショナルタスクの「タスク追加時のパラメータ」に設定した「変数名」と、入力アイテムの「フィールド識別ID」を統一しています。図 : 「フォーム編集」
- 汎用アイテム「隠しパラメータ」のプロパティを確認します。オプショナルタスクの「タスク追加時のパラメータ」に設定した「変数名」と、入力アイテムの「フィールド識別ID」を統一しています。
- 隠しパラメータ「age」を使用している箇所を確認します。「フォーム編集」画面のツールバーにある「アクション設定」ボタンをクリックし、「イベント設定」ダイアログを表示します。
- 「胃がん検診を非表示にする」の設定を確認します。「初期表示イベント」タブから、「胃がん検診を非表示にする」の「」ボタンをクリックします。図 : 「イベント設定」
- 「表示モード変換設定」ダイアログが表示されます。アイテム「ラジオボタン」の表示モードが「非表示」にされていることを確認します。条件がTrueだった場合、「ラジオボタン」が非表示にされるよう設定されていることがわかります。図: 「表示モード変換設定」
- 「胃がん検診を非表示する」の条件を確認します。初期表示イベントタブから、説明が「胃がん検診を非表示する」の「」ボタンをクリックします。図 : 「イベント設定」
- 「条件設定」ダイアログが表示されます。入力欄に「age < 40」と設定してあるのを確認します。隠しパラメータ「age」が40歳未満だった場合、Trueの判定が出るように設定されていることがわかります。図: 「条件設定」
4.3.5.2.3. 結果を確認する¶
- 「健康診断アンケートフロー」を開始します。「サイトマップ」→「BPM」→「プロセス開始一覧」画面を表示し、「健康診断アンケートフロー 」の「」アイコンンをクリックします。図 : 「プロセス開始一覧」
- 開始されたプロセスを確認します。「プロセス開始一覧」画面のツールバーにある「タスク一覧」をクリックし、「タスク一覧」画面を表示します。図 : 「プロセス開始一覧」
-
図 : 「タスク一覧」 - 「個人タスク」
- 「プロセス参照」画面が表示されます。ツールバーにある「タスク追加」ボタンをクリックし、「タスク追加」画面を表示します。図 : 「プロセス参照」
- 「アンケート依頼」タスクを作成します。「アンケート実施中」サブプロセスの中にあるオプショナルタスク「アンケート依頼」をクリックします。図 : 「タスク追加」
- 「タスクの追加」ダイアログが表示されます。今回のチュートリアルでは結果確認動作を簡易化するため、全ての担当者に aoyagi を指定します。まず、40歳以上のユーザに対するアンケートを作成するため、パラメータを以下のように設定して作成します。
- 「アンケート依頼」のタスクが追加されたことを確認します。また、このオプショナルタスクは「複数追加を可能にする」と設定されているため、オプショナルタスク一覧にある「アンケート依頼」がグレーアウトしていないことを確認します。図 : 「タスク追加」
- 40歳未満に対するアンケートを作成します。「アンケート実施中」サブプロセスの中にあるオプショナルタスク「アンケート依頼」をクリックします。図 : 「タスク追加」
- 「タスクの追加」ダイアログが表示されます。40歳未満のユーザに対するアンケートを作成するため、パラメータを以下のように設定して作成します。図 : 「タスクの追加」
「アンケート依頼」タスクの実行マークに「2」と表示され、かつ、オプショナルタスクはクリックできる状態であることを確認します。
図 : 「タスク追加」「アンケート依頼」タスクを処理するため、「タスク一覧」画面に戻ります。
「タスク一覧」画面の「個人タスク一覧」に、「アンケート依頼」タスクが2件追加されているのを確認します。
- 40歳以上のユーザとしてアンケートに回答します。先に作成された「アンケート依頼」タスクの「」アイコンボタンをクリックします。図 : 「タスク一覧」 - 「個人タスク」
- FormaDesignerで作成された「健康診断アンケート」画面が表示されます。オプショナルタスクのパラメータで年齢を「40」と設定したため、Formaアプリケーションのアクション設定により「胃がん検診」の選択項目が表示されています。
任意の日付を選択し、今回は「バリウム」を選択して送信します。
図 : 健康診断アンケート(IM-FormaDesigner)- 「個人タスク」から、「アンケート依頼」タスクが1つだけ処理されていることを確認します。
- 40歳未満のユーザとしてアンケートに回答します。未処理である「アンケート依頼」タスクの「」アイコンをクリックします。図 : 「タスク一覧」 - 「個人タスク」
- 「健康診断アンケート」画面が表示されます。オプショナルタスクのパラメータで年齢を「39」と設定したため、Formaアプリケーションの設定で「胃がん検診」の選択項目が表示されません。図 : 健康診断アンケート(IM-FormaDesigner)
- 任意の日付を設定し、「送信」ボタンをクリックします。図 : 健康診断アンケート(IM-FormaDesigner)
- アンケートの集計結果を確認するため、「アンケート実施中」サブプロセスを完了させます。個人タスクにある「アンケート完了」タスクの「」アイコンをクリックし、タスクを処理します。図 : 「タスク一覧」 - 「個人タスク」
- アンケートの集計結果を確認します。個人タスクにある「アンケート結果」タスクの「」アイコンをクリックしします。図 : 「タスク一覧」 - 「個人タスク」
- 「アンケート結果」画面が表示されます。上記の段取り通り、回答人数が「2」、バリウム希望者が「1」になっていることを確認し「確認」ボタンをクリックします。図 : アンケート結果(IM-FormaDesigner)
- 「健康診断アンケートフロー」が完了したため、「タスク一覧」画面の「個人タスク」にタスクがないことを確認します。図 : 「タスク一覧」 - 「個人タスク」
- オプショナルタスクに設定したパラメータと、個人の回答結果を確認します。「サイトマップ」→「BPM」→「プロセス一覧」画面を表示します。
- 既に完了しているプロセスのため、初期表示のステータス「実行中」では表示されません。「ステータス」のラジオボタンを「完了」、または、「全て表示する」にして「検索」ボタンをクリックします。
-
図 : 「プロセス一覧」
- オプショナルタスク詳細を確認します。「プロセス詳細」画面、または、「プロセス図とタイムラインを拡大表示」画面から、プロセス履歴を表示します。「アンケート依頼」タスクの「詳細」リンクをクリックします。
- 「オプショナルタスク詳細」ダイアログが表示されます。ここから、タスクを追加した際に設定したパラメータを確認できます。
- 個人の回答結果を確認します。プロセス履歴から「アンケート依頼」タスクの「タスク詳細」リンクをクリックします。
- 新しいウィンドウで「健康診断アンケート」が表示されます。ここから各個人の受診希望日、胃がん検診の希望検診内容などが確認できます。図 : 健康診断アンケート(IM-FormaDesigner)