クラウド型 ワークフロー

イケてる?アンケート管理システムを作ろう!(その2)

メッセージ開始イベント(Form)を用いた公開フォーム画面と自動化(アドオン)を用いたアンケート回答への誘導/回答管理する仕組みの実現例を紹介します。 【アンケート管理実装編】

こんにちは、古久保です。

このブログを含めてブログの記事を書いて、社内のコンテンツマネージメントシステムへ投稿するわけですが、(多分にもれず)面倒くさがりの私は、悪戦苦闘しております。
ロボット君に記事パーツを提供すると自動的にいい感じで記事を仕上げてくれる時代がくるのでしょうか?(くるといいなぁ)

めげずに「業務の自動化」、イロイロ、取り組んで参ります!

さて、前回に引き続き、「イケてる?アンケート管理システム」の紹介です。

イケてる?アンケート管理システムを作ろう!(その1)
…中規模アンケート実施と管理のできるアプリをご紹介をしたいと思います。
可能な限り自動化を行い、実施/管理作業の負荷を下げられることを目的しています。
解説が長くなりますのでシリーズ2回とさせて頂きます。

http://www.questetra.com/ja/blog/cat-questetra-tips-ja/questionary-management-system1/

今回は、「アンケート回答管理編」となります。

はりきって参ります!

◆シナリオ

前回のおさらいになりますが、

<アンケート作成から回答管理までのフローイメージ図>

上記の業務シナリオの

* アンケート送付
* アンケート回答チェック

の部分になります。(青の点線の範囲

準備しておくものは、

* 対象アンケート URL (前回解説内容)
* アンケート回答者リスト(お名前、メールアドレス)
* アンケート回答案内開始日
* アンケート回答督促間隔(日数)

だけです。
これを元に「ロボット君にまかせて状況通知を待つ」事になります。

◆業務フロー解説

<業務フロー図>

大きく、5つのブロックに分けて説明を致します。
(「わかってるちゅーねん」という人は適宜飛ばして下さい。)

アプリ(プロセスモデル)アーカイブをダウンロードしてモデラで見ながら解説を見てもらえると捗ります。
ダウンロード:アンケート案内/回答状況確認管理_ver_editing.qar

◆◆(0)アンケート対象者情報入力

<「アンケート情報入力」工程入力画面例>

入力フォームは、上記となります。
前述の準備情報をインプットするのみです。

◆◆(1)回答案内メール配信

配信までのステップとしては、

1.配信日時まで待ち(タイマ中間イベントを使用し進行を時限停止)
2.アンケート回答リストから案内件数を算出
3.メールにセットする情報(お名前や案内 URL 等)を加工
4.残送信件数をセット
5.メールを送信(メッセージ送信中間イベント email を使用)
6.残送信件数をチェックし、0件なら次工程へ、1件以上なら3.へ

となります。
正確に申しますと、3.と4.のステップは、「送信先セット(回答者)」自動工程にて同時に行っています。

ポイントとしては、

3.メールにセットする情報(お名前や案内 URL 等)を加工

になります。
「加工」と書いておりますが、単に「メッセージ送信中間イベント email」に設定する為のデータ項目だけではありません。

アンケートへ誘導する URL をセットする際に、「お名前」「メールアドレス」をパラメータとしてセットする必要が有ります。
「アンケート回答者リスト」から切り出してセットするには URL エンコード問題を解決しなければなりません。
※infos[0]、infos[1]は、アンケート回答リストから切り出したお名前/メールアドレス情報

<メール埋込用データ項目セット>
engine.setDataByNumber(“10”,infos[0]);
engine.setDataByNumber(“6”,infos[1]);
<アンケート URL のパラメータ用データ項目セット>
engine.setDataByNumber(“19”,encodeURIComponent(infos[0]));
engine.setDataByNumber(“20”,encodeURIComponent(infos[1]));

上記のように「<アンケート URL のパラメータ用データ項目セット>」が対応例です。
encodeURIComponent() を使用することで、アンケート側でパラメータ内容が文字化けすること無く、受け取れるようにしています。
アンケート側でデコード処理が必要です

<アンケート案内メール設定例:メッセージ送信中間イベント(email)>

<アンケート案内メール例>

◆◆(2)回答督促者リスト作成

アンケートの案内が行われましたのでメールの内容の URL (「アンケート」アプリ)から順次、回答が行われます。
このステップでは、要件にある

* アンケート未回答の人々へ督促メールを配信する

を実現する為に「アンケート未回答者」を探す処理を行っています。
(アドオン XML を使って実現をしています。)

1.アンケート回答リスト(案内メール配信対象者)を1行づつ読み込み
2.該当者メールアドレスから調査対象の「アンケート」アプリを API で検索
3.検索結果で未回答であれば未回答者リストへ格納
4.アンケート回答リストが無くなるまで1.へ

上記のステップにてアドオン XML を実装しています。
(長いのでコードは割愛します。ダウンロードして頂いて参照下さい。)
ダウンロード:confirmAnswers.xml

設定に必要な内容は、以下です。

<「アンケート回答確認」自動工程設定(アドオン XML)>

2.該当者メールアドレスから調査対象の「アンケート」アプリを API で検索

において API は、ワークフロー APIs > モニタリング API > 全てのプロセス履歴を検索する(/API/OR/ProcessInstance/list)を使用しています。

◆◆(3)回答督促メール配信

* アンケート未回答の人々へ督促メールを配信する

の部分の「督促メールを配信する」処理に当たります。
既に「(2)回答督促者リスト作成」のステップにて配信リストが出来上がっていますので「(1)回答案内メール配信」とほぼ同じ処理を行っていくことで実現できます。

メールの文面においても回答案内メールの埋込内容をそのまま使用することができます。
固定文言のみを変更することで「回答督促」を促すことができます。

◆◆(4)督促情報変更

このブロックの処理がなければ完全に自動で全ての人が回答できるまで人が介在しない自動処理が動き続けることになります。
しかし、アンケート管理の運用を行う上で、

* 何らかの事情で回答できない人が判明した
* 途中で督促間隔を調整したくなった。(例:間隔日を減らして督促を強化したい)

等の事情が発生した場合、うまく対処ができません。

これを解決する為にアンケート回答督促ブロックと平行でヒューマンタスク「手動変更(回答者)」工程を用意しています。
手動変更(回答者)」工程では、「督促対象者」や「督促間隔」を調整することを想定しています。

「手動変更(回答者)」工程で変更された内容は、現在、督促日を待っている(タイマ中間イベント「未回答督促日時」)タイミングには、反映されません。
次の督促日を待つタイミングに反映されることになります。

◆API 利用についての補足

(2)回答督促者リスト作成」において API (/API/OR/ProcessInstance/list)を使用していると記述しました。少し補足を行います。

API は、criteria パラメータに検索情報(XML)をセットすることで検索が行なえます。
検索情報へのインプットは、

* 対象アンケートのアプリ ID(正確には process-model-info-id)
* 対象者のメールアドレスの格納されるデータ項目の定義番号

が主になります。この検索結果で引っかかれば「回答済」と判断できます。
(アンケートは、メッセージ開始イベント Form で入力されるので状態を見る必要はありません)

* 対象アンケートのアプリ ID(正確には process-model-info-id)

については、アンケートの URL から取得することができます。(「アンケート情報入力」工程で入力)

https://XXX.questetra.net/System/Event/MessageStartForm/{アプリID}/0/XXXXXXXXXXXX/view

* 対象者のメールアドレスの格納されるデータ項目の定義番号

については、アンケートアプリにて動的に変更する可能性があります。
しかし、この仕組を使う限り必ず必要となるデータ項目です。
アンケートアプリのテンプレートを作っておき、コピーして質問項目のみ変えていくような作成方法を取ることで対処できます。

◆あとがき

解説がめちゃくちゃ長くなりまして恐縮です。(しかも2回に渡ってしまった)
解説は長くなりましたが、ご利用環境にて使用するに、大きく手をいれる必要は、無いと思います。

* 各種メール文面の検討
* 環境依存する情報の設定(ご利用環境の URL やアクセス情報)

くらいで、しかも全て Questetra 上の設定となります。(スクリプトの内容を変更する必要は無い)

(その1)でも記載しましたが、

* 一部対象者(100名くらいまで)へのクローズドアンケート
(例えば、グループ内限定アンケート等)
* 可能な限り確実に回答を行わせる(未回答者を把握)

でありましたらお手軽に実装/運用できると思います。

長い解説になっておりますが、解説を省略している部分もあります。
不明点がありましたら、遠慮なくご連絡下さい。

改めてアプリのアーカイブダウンロード可能としておりますのでご活用ください。

<アンケート運用>
アンケート案内/回答状況確認管理_ver_editing.qar
<アンケートアプリ>
201710-ネットワーク利用環境調査_ver16.qar

2017-12-05

Masato Furukubo の紹介

Questetra, Inc. Sales Department
Masato Furukubo の投稿をすべて表示

あわせて読みたい
50.Questetra Tips の前の記事 イケてる?アンケート管理システムを作ろう!(その1)
Masato Furukubo の他の記事 案件削除ができないゾ!対策

アーカイブ

 RSS