AEMのWorkflowの通知メールについて
AEMのWorkflowは、メール通知機能が持っています。事前に設定したユーザーの宛先に通知メールを送信します。
電子メールテンプレート
メールに出力できる情報は、Workflow通知用の電子メールテンプレートに定義されています。
通知宛先のユーザーの環境設定の言語項目の設定値により、電子メールテンプレートが異なっています。
例えば、「日本語」の場合
/etc/workflow/notification/email/default/ja.txt
「English」の場合
/etc/workflow/notification/email/default/en.txt
また、具体的にメールに出力できる情報は、電子メールテンプレート内では変数で定義されています、実際の値は、Workflowモデル、或いはWorkflowインスタンスから取得されています。
例えば、/etc/workflow/notification/email/default/ja.txtでは、Workflowモデルのタイトルを出力する項目があります。
ワークフロー: ${model.title}\n \
Workflowモデルのプロパティ設定では、タイトル項目に下記のように設定されています。
そして、通知メールには、Workflowモデルのタイトルに関して、下記のように出力されています。
起動時コメント、ワークフロータイトルについて
Workflowの起動時に、Touch UIではワークフロータイトルの入力欄があります。
Classic UIでは、コメント欄、ワークフロータイトル欄、2つの入力欄があります。
ここで入力した内容は、Workflowインスタンスに記録されていますが、
Workflow通知用の電子メールテンプレートでは、出力する変数が用意されていないため、直接的に通知メールに出力できません。どうすればいいだろう。
ここで登場するのは、ECMA スクリプトです。
AEMのCRXDE Lite画面を開き、下記のノードを選択します。
/libs/workflow/scripts
「Overlay Node」ボタンを押下し、下記ダイアログの「OK」ボタンを押下します。
下記のノードを/apps/workflow/scripts配下にコピーし、test.ecmaにリネームします。
/libs/workflow/scripts/sample.ecma
下記のノードの「jcr:title」属性を任意の値に変更します。例えば、「コメントのEmail出力」
/apps/workflow/scripts/test.ecma/jcr:content
/apps/workflow/scripts/test.ecmaの中身は、下記のように編集します。
// コメント欄、ワークフロータイトル欄の入力内容の取得 var startComment = workItem.getWorkflow().getMetaDataMap().get("startComment", Packages.java.lang.String); var workflowTitle = workItem.getWorkflow().getMetaDataMap().get("workflowTitle", Packages.java.lang.String); // 変数 item.data.comment に設定 workItem.getMetaDataMap().put("comment", workflowTitle + startComment);
Workflowモデルの編集画面を開き、メール通知ステップの前に、「プロセスステップ」を追加します。
そして、上記で作成したECMA スクリプトのプロセスを選択し、「ハンドラー処理の設定」のチェックを入れます。
/etc/workflow/notification/email/default/ja.txtでは、下記のようにメッセージの出力する項目しますします。
message=${item.data.comment}\n \
ここまで、コメント欄、ワークフロータイトル欄の入力内容を通知メールに出力する準備ができました。
コメント欄、ワークフロータイトル欄を入力し、Workflowモデルを起動します。
Workflowインスタンスでは、ECMA スクリプトで処理したcomment項目の値が確認できます。
それで、受信した通知メールの中身を見ると、Workflow起動時のコメント欄、ワークフロータイトル欄の入力内容が出力されています。