AEMのWorkflowの通知メールについて

AEMのWorkflowは、メール通知機能が持っています。事前に設定したユーザーの宛先に通知メールを送信します。

電子メールテンプレート

メールに出力できる情報は、Workflow通知用の電子メールテンプレートに定義されています。

通知宛先のユーザーの環境設定の言語項目の設定値により、電子メールテンプレートが異なっています。

f:id:www0532:20210823160922p:plain

例えば、「日本語」の場合

/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モデルのプロパティ設定では、タイトル項目に下記のように設定されています。

f:id:www0532:20210823163028p:plain

そして、通知メールには、Workflowモデルのタイトルに関して、下記のように出力されています。

f:id:www0532:20210823163405p:plain

起動時コメント、ワークフロータイトルについて

Workflowの起動時に、Touch UIではワークフロータイトルの入力欄があります。

f:id:www0532:20210823165250p:plain

Classic UIでは、コメント欄、ワークフロータイトル欄、2つの入力欄があります。

f:id:www0532:20210823165307p:plain

ここで入力した内容は、Workflowインスタンスに記録されていますが、

f:id:www0532:20210823165604p:plain

Workflow通知用の電子メールテンプレートでは、出力する変数が用意されていないため、直接的に通知メールに出力できません。どうすればいいだろう。

ここで登場するのは、ECMA スクリプトです。

AEMのCRXDE Lite画面を開き、下記のノードを選択します。

/libs/workflow/scripts

「Overlay Node」ボタンを押下し、下記ダイアログの「OK」ボタンを押下します。

f:id:www0532:20210823171250p:plain

下記のノードを/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モデルの編集画面を開き、メール通知ステップの前に、「プロセスステップ」を追加します。

f:id:www0532:20210823173521p:plain

そして、上記で作成したECMA スクリプトのプロセスを選択し、「ハンドラー処理の設定」のチェックを入れます。

f:id:www0532:20210823173546p:plain

/etc/workflow/notification/email/default/ja.txtでは、下記のようにメッセージの出力する項目しますします。

message=${item.data.comment}\n \

ここまで、コメント欄、ワークフロータイトル欄の入力内容を通知メールに出力する準備ができました。

コメント欄、ワークフロータイトル欄を入力し、Workflowモデルを起動します。

f:id:www0532:20210823165307p:plain

Workflowインスタンスでは、ECMA スクリプトで処理したcomment項目の値が確認できます。

f:id:www0532:20210823174826p:plain

それで、受信した通知メールの中身を見ると、Workflow起動時のコメント欄、ワークフロータイトル欄の入力内容が出力されています。

f:id:www0532:20210823174953p:plain