AEM開発者ブログ by YAMATO

アドビ社のデリバリーパートナー大和株式会社のAEM開発者ブログです。

Gmailアカウントを利用してワークフローの完了を通知する - Day CQ Mail Service

AEM Developerの皆様、お元気ですか?

大和の蒲生です

ワークフロー開発などを行った際に、AEMからのワークフロー完了のメール通知確認をしたいときってありますよね。 そんなとき皆さんはどんなSMTP(送信メール)サーバーを利用して挙動確認をしてますか?

私が思う簡単な方法の一つとして、Gmailアカウントを利用する方法があります。

今回は、GmailアカウントをSMTP(送信メール)サーバーとして利用した、ワークフローの完了を通知する方法についてまとめます! 1

ワークフロー完了メール通知設定とTransient ワークフローの完了メール通知設定

ワークフローの完了通知

ワークフローの完了または異常終了の際、ワークフローの開始者に通知メールが配信されるように、デフォルトで設定されています。2

この挙動を変更するには、Day CQ Worklow Notification Serviceの設定を変更します。

https://[ホスト名]:[ポート名]/system/console/configMgrでDay CQ Worklow Notification Serviceを検索し、 Editをクリックすると設定画面(下図)が開きます。

f:id:yamato_tech:20200525171046j:plain

  • Notify on Complete・・・完了時に通知
  • Notify on Abort・・・・異常終了時に通知

それぞれのチェックを外すことで、ワークフローの完了時や異常終了時の通知メールが配信されなくなります。

Transient ワークフローの完了通知設定

Transient ワークフローの完了通知設定はSendTransientWorkflowCompletedEmailProcessの設定を変更します。

アセットをアップロードするとDAM Update Assetワークフローが起動しますが、大量のアセットをアップロードした時に、アセット毎に完了のメール通知が来たら、受信ボックスが大変なことになりますよね。

そんな時はSendTransientWorkflowCompletedEmailProcessの設定を変更をすることで、Transientワークフローの完了通知メールを送信しないようにすることが可能です。

https://[ホスト名]:[ポート名]/system/console/configMgrでSendTransientWorkflowCompletedEmailProcessを検索し、Editをクリックすると下記の設定画面(下図)が開きます。

f:id:yamato_tech:20200525174354j:plain

上記のNotify on Complete(完了時に通知する)のチェックを外すと、Transientワークフロー完了時に通知メールが送られない設定になります!

Transientワークフローとは?

f:id:yamato_tech:20200522182830j:plain

Transientワークフローとは、ワークフローのruntimeのデータ情報をJCR内に保持せず実行するワークフローです。 この設定は、ワークフローモデルのプロパティ設定で変更できます。

runtimeデータ(/var/workflow/instances)が保存されないため、ワークフローインスタンスやアーカイブにも表示されません。

ペイロードとプロセスロジックはJCRに保持されますが、ワークフローステップの情報は保持されません。3 レポジトリの肥大化を防げるため、Transientを設定することで、データ取り込み量が多いワークフローの最適化が可能です。4

前述のDAM Upload Asset(DAMアセットの更新)ワークフローはOOTBでは、Transientワークフローの設定になっています。

Gmailアカウントを利用する場合のDay CQ Mail Serviceの設定方法

Day CQ Mail Service

  • Day CQ Mail ServiceはAEMのデフォルトのメールサービスです。
  • OSGiで利用するSMTP(送信メール)サーバーを設定します。

https://[ホスト名]:[ポート名]/system/console/configMgrでDay CQ Mail Serviceを検索し、Editをクリックすると下記項目を設定する画面が開きます。

フィールド名 フィールドの説明と設定値
SMTP server host name (必須)SMTP(送信メール)サーバーのホスト名を設定します。今回はGmailを利用するので、smtp.gmail.comと入力
SMTP server port (必須) SMTP(送信メール)サーバーのポートを設定します。ポートは25以上
SMTP user (必須) SMTP(送信メール)サーバーのユーザー名。Gmailのメールアドレスを入力します。
SMTP password (必須) SMTP(送信メール)サーバーのパスワード。Gmailのパスワードを入力します。
SMTP user (必須) SMTP(送信メール)サーバーのユーザー名。Gmailのメールアドレスを入力します。
"From" address 送信元メールアドレス。Gmailのメールアドレスを入力します。
SMTP use SSL チェックすると、SSLを利用したメール送信が可能になります。SSL設定時のポート番号は465にしておく必要があります。
SMTP use StartTLS TLS通信を利用する。今回は利用しないのでチェックなし。
Debug email チェックすると、SMTP(送信メール)サーバーとの通信ログが記録されます。1

設定後はこんな感じです

f:id:yamato_tech:20200522182648j:plain

Gmailの安全性の低いアプリのアクセスの有効化

Gmailアカウントを利用する場合、こちらにアクセスして、セキュリティ設定で「安全性の低いアプリのアクセス」を許可する必要があります。

f:id:yamato_tech:20200522182800j:plain

注意点ですが、上記の設定をすると、アカウントのセキュリティが下がるので普段利用しているGmailアカウントではなく、ダミーのアカウント利用をおススメします。

AEMからワークフロー完了の通知メールが届くか確認

上記の設定で、SMTP(送信メール)サーバーの設定が完了したので、OOTBのワークフローを実行して実際に通知メールが来るか確認してみましょう!

今回はDAM Upload Asset(DAMアセットの更新)ワークフローを実行して、通知が来るか確認したいと思います。

確認ステップ

  1. プロファイルにメールアドレス設定済みのユーザーでAEMにログイン。

  2. 画像をアップロード

  3. 登録したメールアドレスにメールが配信されたことを確認。

届いたメールは、、、下記です

f:id:yamato_tech:20200522182437j:plain

通知メールのテンプレート

デフォルトの通知メールテンプレートは下記に配置されています(AEM6.5)。

/libs/settings/dam/workflow/notification/email/transientworkflowcompleted/en.txt

subject: Transient Workflow Completed Notification

<div style="font-family:Calibri;font-size:11.0pt">
    -------------------------------------------------------------------------------------
    Time: ${Time}
    Step: ${Step}
    User: ${User}
    Workflow: ${Workflow}
    -------------------------------------------------------------------------------------
    Content: ${host.prefix}${Content}
    -------------------------------------------------------------------------------------<br/>
    This is an automatically generated message. Please do not reply.
</div>

はい、以上がGmailアカウントをSMTP(送信メール)サーバーとして利用したワークフローの完了を通知する方法のまとめになります!

最後まで読んでいただきありがとうございました!

À bientôt