メタデータを使用したフォームワークフローの電子メール通知の情報の作成
ユーザーまたはグループにタスクを作成して割り当てるには、タスクの割り当て手順を使用します。ユーザーまたはグループにタスクが割り当てられると、電子メール通知が指定されたユーザーまたは指定されたグループのメンバーに送信されます。一般的な電子メール通知には、割り当てられたタスクのリンクと、タスクに関連する情報が含まれています。
電子メールテンプレートのメタデータを使用して、電子メール通知の情報を動的に入力できます。例えば、以下の電子メール通知のタイトル、説明、期限、優先度、最終日の値は、実行時(電子メール通知が生成されるとき)に動的に選択されます。
メタデータは、キーと値のペアで保存されます。電子メールテンプレートでキーを指定すると、そのキーが実行される際(電子メール通知が生成されるとき)、値に置き換えられます。たとえば、下記のコードサンプルでは、「$ {workitem_title}」がキーになります。これは、実行時には「Loan-Request」の値で置き換えられます。
subject=Task Assigned - ${workitem_title}
message=<html><body>\n\
<table>\n\
<tbody>\n\
<tr>\n\
<td>\n\
Sample Company\n\
</td>\n\
</tr>\n\
<tr>\n\
<td>\n\
<pre style="font-size: 13px; font-family: Helvetica, Arial, sans-serif; font-weight: normal; color: #323232;"> Hello ${workitem_assignee},\n\
The following task has been assigned to you:</pre>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td>\n\
<table>\n\
<tbody>\n\
<tr style="border-bottom: solid 2px #FFFCF9;">\n\
<td> TITLE</td>\n\
<td>\n\
<p>${workitem_title}</p>\n\
</td>\n\
</tr>\n\
<tr style="border-bottom: solid 2px #FFFCF9;">\n\
<td> DESCRIPTION</td>\n\
<td>\n\
<p>${workitem_description}</p>\n\
</td>\n\
</tr>\n\
<tr style="border-bottom: solid 2px #FFFCF9;">\n\
<td> DUE DATE</td>\n\
<td>\n\
<p>${workitem_due_date}</p>\n\
</td>\n\
</tr>\n\
<tr style="border-bottom: solid 2px #FFFCF9;">\n\
<td> PRIORITY</td>\n\
<td>\n\
<p>${workitem_priority}</p>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td> WORKFLOW</td>\n\
<td>\n\
<p>${workitem_workflow}</p>\n\
</td>\n\
</tr>\n\
</tbody>\n\
</table>\n\
</td>\n\
</tr>\n\
<tr style = "text-align: center; vertical-align: middle;">\n\
<td> \n\
<a href="${workitem_url}" target="_blank" style="background-color: #1EBBBB; font-size: 18px; line-height: 25px; font-weight: bold; color: #FFFFFF; text-decoration: none; padding: 15px 15px 15px 15px;">Open Task</a>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td>\n\
<p><span style="font-size: 12px; font-weight: normal; font-style: italic; color: #919191;">This is an automatically generated email. Please do not reply to this email.</span></p>\n\
</td>\n\
</tr>\n\
</tbody>\n\
</table>\n\
</body>\n\
</html>\n\
AEM Forms アプリケーションには、すぐに使えるメタデータ変数(キーと値のペア)がいくつか用意されています。これらの変数を電子メールテンプレートに使用することができます。変数の値は、関連する Forms アプリケーションに基づいています。次の表では、すぐに使える全メタデータ変数のリストを示します。
キー | 説明 |
workitem_title | 関連する Forms アプリケーションのタイトル。 |
workitem_url | 関連する Forms アプリケーションにアクセスする URL。 |
workitem_description | 関連する Forms アプリケーションの説明。 |
workitem_priority | 関連する Forms アプリケーションに指定されている優先度。 |
workitem_due_date | 関連する Forms アプリケーションで作業した最終日。 |
workitem_workflow | Forms アプリケーションに関連するワークフローの名前。 |
workitem_assign_timestamp | ワークフローアイテムが現在の担当者に割り当てられた日時。 |
workitem_assignee | 現在の担当者の名前。 |
host_prefix | オーサーサーバーの URL。例えば、https://10.41.42.66:4502 です。 |
publish_prefix | パブリッシュサーバーの URL。例えば、https://10.41.42.66:4503 です。 |
電子メール通知ではカスタムメタデータを使用することもできます。カスタムメタデータには、システム生成メタデータに加えて追加情報が含まれています。例えば、データベースから取得したポリシーの詳細などです。ECMAScript バンドルまたは OSGi バンドルを使用して、カスタムデータを crx-repository に追加することができます。
ECMAScript はスクリプト言語です。この言語は、クライアント側のスクリプト作成とサーバーアプリケーションに使用されます。次の手順を実行して、ECMAScript を使用して電子メールテンプレートにカスタムメタデータを追加します。
管理者アカウントを使用して CRX DE にログインします。URL は https://[server]:[port]/crx/de/index.jsp
です。
/apps/fd/dashboard/scripts/metadataScripts に移動します。拡張子が .ecma のファイルを作成します。例えば、usermetadata.ecma です。
上記のパスが存在しない場合は作成します。
キーと値のペアにカスタムメタデータを生成するロジックを持つコードを .ecma ファイルに追加します。例えば、次の ECMAScript コードは、保険ポリシーにカスタムメタデータを生成します。
function getUserMetaData() {
//Commented lines below provide an overview on how to set user metadata in map and return it.
var HashMap = Packages.java.util.HashMap;
var valuesMap = new HashMap();
valuesMap.put("policyNumber", "2017568972695");
valuesMap.put("policyHolder", "Adobe Systems");
return valuesMap;
}
「すべて保存」をクリックします。これで、スクリプトを AEM ワークフローモデルの選択に使用できるようになりました。
(オプション)スクリプトのタイトルの指定:
タイトルを自分で指定しない場合、カスタムメタデータフィールドには、ECMAScript ファイルの完全なパスが表示されます。次の手順で、スクリプトに有意のタイトルを指定します。
スクリプトノードを拡張します。jcr:content ノードを右クリックしてから、「Mixins」をクリックします。
Mixin を編集ダイアログに mix:title と入力して、「+」をクリックします。
プロパティに次の値を入力します。
名前 | jcr:title |
---|---|
型 | String |
値 | スクリプトのタイトルを指定します。例えば、ポリシーホルダーのカスタムメタデータとします。指定した値がタスクの割り当て手順に表示されます。 |
WorkitemUserMetadataService Java インターフェースを使用して電子メールテンプレートにカスタムメタデータを追加することができます。WorkitemUserMetadataService Java インターフェースを使用する OSGi バンドルを作成して、AEM Forms サーバーにデプロイすることができます。これにより、タスクの割り当て手順でメタデータを選択できるようになります。
Java インターフェイスを使用して OSGi バンドルを作成するには、AEM Forms Client SDK jar ファイルと granite jar ファイルを、外部の依存関係として OSGi バンドルプロジェクトに追加します。OSGi バンドルの作成には、任意の Java IDE を使用できます。以下の手順では、Eclipse を使用して OSGi バンドルを作成します。
Eclipse IDE を開きます。ファイル/新規プロジェクトに移動します。
ウィザードを選択画面で、Maven プロジェクトを選択し、「次へ」をクリックします。
新しい Maven プロジェクトではデフォルトを保持し、「次へ」をクリックします。アーキタイプを選択して「次へ」をクリックします。例えば、maven-archetype-quickstart などです。プロジェクトにグループ ID、アーティファクト ID、バージョン、パッケージを指定して、「完了」をクリックします。プロジェクトが作成されます。
編集のために pom.xml ファイルを開き、ファイルのすべての中身を次で置き換えます。
WorkitemUserMetadataService Java インターフェースを使用するソースコードを追加して、電子メールテンプレートにカスタムメタデータを追加します。以下にサンプルコードを示します。
package com.aem.impl;
import com.adobe.fd.workspace.service.external.WorkitemUserMetadataService;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
import org.osgi.framework.Constants;
import java.util.HashMap;
import java.util.Map;
@Component
@Service
@Properties({
@Property(name = Constants.SERVICE_DESCRIPTION, value = "A sample implementation of a user metadata service."),
@Property(name = WorkitemUserMetadataService.SERVICE_PROPERTY_LABEL, value = "Default User Metadata Service")})
public class WorkitemUserMetadataServiceImpl
implements WorkitemUserMetadataService
{
public WorkitemUserMetadataServiceImpl() {}
public Map<String, String> getUserMetadataMap()
{
HashMap<String, String> metadataMap = null;
metadataMap = new HashMap();
metadataMap.put("test_metadata", "tested-interface implementation");
return metadataMap;
}
}
コマンドプロンプトを開き、OSGi バンドルプロジェクトを含むディレクトリに移動します。以下のコマンドを使用して OSGi バンドルを作成します。
mvn clean install
バンドルを AEM Forms サーバーにアップロードします。AEM パッケージマネージャーを使用して、バンドルを AEM Forms サーバーに読み込むことができます。
バンドルをインポートすると、タスクの割り当て手順でメタデータを選択して、電子メールテンプレートで使用できるようになります。