ワークフロー通知テンプレート変数
Liferay 7.3以降
一部の変数は、ワークフローの通知コンテキストに自動挿入されます。これらは、ワークフローの通知テンプレートで使用すると便利です。
通常、Freemarkerでは、変数を明示的に宣言する必要があります。
<#assign variableName = "Variable Name" />
インジェクトされた変数はすでに宣言されており、テンプレート内で直接使用することができます。
${variableName}
これらの変数を使用するには、ワークフローの通知コンテキストで利用可能な変数を知っておく必要があります。利用できる変数は、ワークフロー定義の詳細やワークフロー内のアセットに応じて変化します。ここで紹介する方法は、特定のコンテキストに合わせて変数のリストを取得する方法を示していますので、推測で行う必要はありません。
ワークフロー通知テンプレート変数の発見
ワークフロー通知コンテキストで使用可能な変数を表示するには、 TemplateNotificationMessageGenerator クラスに対して、DEBUG レベル のログ を有効にしてください。
-
グローバルメニュー (
) → コントロールパネル → サーバー管理 に移動します。 -
[ログレベル]タブをクリックします。
-
この設定でログレベルを追加します。
- ロガー名:
com.liferay.portal.workflow.kaleo.runtime.internal.notification.TemplateNotificationMessageGenerator - ログレベル:
デバッグ
- ロガー名:
-
アセット (例: ブログエントリ) でワークフロー定義 (例: 単一承認者定義) をアクティブ化します。
-
テストエントリを送信すると、ワークフローのコンテキスト内で利用可能な通知テンプレート変数を示すログメッセージが表示されます。
例えば、唯一の承認者のワークフローでは、アセットの初回提出時にこれらの変数が表示されます。
2020-03-30 14:21:42.089 DEBUG [liferay/kaleo_graph_walker-2][TemplateNotificationMessageGenerator:94] saxReaderUtil (class com.sun.proxy.$Proxy447)
2020-03-30 14:21:42.097 DEBUG [liferay/kaleo_graph_walker-2][TemplateNotificationMessageGenerator:94] getterUtil (class com.liferay.portal.kernel.util.GetterUtil_IW)
2020-03-30 14:21:42.098 DEBUG [liferay/kaleo_graph_walker-2][TemplateNotificationMessageGenerator:94] portalPermission (class com.liferay.portal.service.permission.PortalPermissionImpl)
2020-03-30 14:21:42.098 DEBUG [liferay/kaleo_graph_walker-2][TemplateNotificationMessageGenerator:94] entryClassPK (class java.lang.String)
2020-03-30 14:21:42.098 DEBUG [liferay/kaleo_graph_walker-2][TemplateNotificationMessageGenerator:94] layoutPermission (class com.liferay.portal.service.permission.LayoutPermissionImpl)
2020-03-30 14:21:42.098 DEBUG [liferay/kaleo_graph_walker-2][TemplateNotificationMessageGenerator:94] expandoTableLocalService (class com.sun.proxy.$Proxy43)
2020-03-30 14:21:42.098 DEBUG [liferay/kaleo_graph_walker-2][TemplateNotificationMessageGenerator:94] localeUtil (class com.liferay.portal.kernel.util.LocaleUtil)
2020-03-30 14:21:42.099 DEBUG [liferay/kaleo_graph_walker-2][TemplateNotificationMessageGenerator:94] groupId (class java.lang.String)
2020-03-30 14:21:42.099 DEBUG [liferay/kaleo_graph_walker-2][TemplateNotificationMessageGenerator:94] portalUtil (class com.liferay.portal.util.PortalImpl)
...
上の出力のスニペットを見ると、 saxReaderUtil、getterUtil, portalPermission、entryClassPK、layoutPermission、expandoTableLocalService、localeUtil、groupId、portalUtilは、これらのメッセージがログに出力される原因となったコンテキストで利用可能です。
ワークフロー通知テンプレート変数の使用
コンテクストに注入される通知変数は、主に2つのタイプに分類されます。
-
値 変数は単一の値を提供します。変数が単一の値を提供する場合、その変数を使用して通知にその値を表示することもできますし、通知メッセージに表示するその他の有用な情報を取得する操作のパラメータとして渡すこともできます。
例: 単一承認者定義では、FreeMarker テンプレートで次の通知が提供されます。
${userName} sent you a ${entryType} for review in the workflow.userNameとentryTypeは値を提供するので、通知は次のようにレンダリングされる可能性があります。ジョー・ブログスがワークフローの一環として、レビュー用のブログ記事をあなたに送信しました。
値型の変数についても、内容をチェックすることができます。単一承認者定義には、以下の通知テンプレートも含まれています。
Your submission was reviewed<#if taskComments?has_content> and the reviewer applied the following ${taskComments}</#if>.レビュー担当者がタスクに関するコメントを記入している場合は、それが表示されます。それ以外の場合、通知の受信者には
あなたの提出物は審査されました。
-
操作 変数は Liferay DXP Java クラスを公開するため、通知テンプレートでその操作にアクセスできます。これらの変数については、クラスの Javadoc をよく読むか、 ソースコード を調べて、その動作を理解する必要があります。
例: この FreeMarker は、デフォルトのロケールを使用して、特定のパターン (月/日/年、時:分 で現在の日付を取得します。
${dateUtil.getCurrentDate("MM/dd/yyyy, HH:mm", localeUtil.getDefault())}`
ワークフロー通知テンプレート変数の理解
これらは、ブログエントリの唯一の承認者の定義を有効にして、新しいエントリーを公開用に送信したときに記録される変数です。
| 変数名 | 値 | 操作 | 説明またはリンク |
|---|---|---|---|
${saxReaderUtil} | ✔ | SaxReaderUtil | |
${getterUtil} | ✔ | GetterUtil | |
${portalPermission} | ✔ | ポータルパーミッション | |
${entryClassPK} | ✔ | エントリークラスのプライマリーキー | |
${layoutPermission} | ✔ | レイアウトパーミッション | |
${expandoTableLocalService} | ✔ | ExpandoTableLocalService | |
${localeUtil} | ✔ | LocaleUtil | |
${groupId} | ✔ | グループのID | |
${portalUtil} | ✔ | PortalUtil | |
${validator} | ✔ | Validator | |
${dateUtil} | ✔ | DateUtil | |
${serviceLocator} | ✔ | ServiceLocator | |
${serviceContext} | ✔ | ServiceContext | |
${jsonFactoryUtil} | ✔ | JSONFactoryUtil | |
${stringUtil} | ✔ | StringUtil | |
${freeMarkerPortletPreferences} | ✔ | TemplatePortletPreferences | |
${dateFormats} | ✔ | FastDateFormatFactory | |
${dateFormatFactory} | ✔ | DateFormatFactory | |
${userPortraitURL} | ✔ | ブログのエントリーにのみ適用され、ユーザーのポートレートのURLを返します。 | |
${portal} | ✔ | Portal | |
${commonPermission} | ✔ | CommonPermission | |
${userURL} | ✔ | ブログエントリーにのみ適用され、ログインしたユーザーのプロフィールページのURLを返します。 UserImpl#getDisplayURL を参照してください。 | |
${expandoValueLocalService} | ✔ | ExpandoValueLocalService | |
${entryType} | ✔ | ワークフローのエントリのタイプ(例:Blogs Entry) | |
${organizationPermission} | ✔ | OrganizationPermission | |
${passwordPolicyPermission} | ✔ | PasswordPolicyPermission | |
${expandoColumnLocalService} | ✔ | ExpandoColumnLocalService | |
${taskComments} | ✔ | レビュアが残したコメント(ある場合)。 | |
${staticFieldGetter} | ✔ | StaticFieldGetter | |
${htmlUtil} | ✔ | HtmlUtil | |
${languageUtil} | ✔ | LanguageUtil | |
${enumUtil} | ✔ | アクセス列挙型の beansWrapper.getEnumModels();を返します。 | |
${windowStateFactory} | ✔ | WindowStateFactory | |
${companyId} | ✔ | ポータルのCompany/Virtual InstanceのIDです。 | |
${unicodeFormatter} | ✔ | UnicodeFormatter | |
${propsUtil} | ✔ | PropsUtil | |
${browserSniffer} | ✔ | BrowserSniffer | |
${portletProviderAction} | ✔ | PortletProvider#Action 呼び出しの結果を返します。 | |
${taskName} | ✔ | 通知が入っているタスクの名前 | |
${httpUtil} | ✔ | HttpUtil | |
${portletURLFactory} | ✔ | PortletURLFactory | |
${imageToken} | ✔ | WebServerServletToken.getToken(long imageId)からの画像トークンは非推奨となり、削除されます。 | |
${groupPermission} | ✔ | GroupPermission | |
${timeZoneUtil} | ✔ | TimeZoneUtil | |
${unicodeLanguageUtil} | ✔ | UnicodeLanguageUtil | |
${expandoRowLocalService} | ✔ | ExpandoRowLocalService | |
${auditRouterUtil} | ✔ | AuditRouterUtil | |
${kaleoTaskInstanceToken} | ✔ | ワークフロースクリプトに関してはドキュメントを参照してください | |
${accountPermission} | ✔ | AccountPermission | |
${httpUtilUnsafe} | ✔ | ${httpUtil}と同様に、 Httpのインスタンスですが、ローカルネットワークにアクセスするために使用できます。 | |
${workflowTaskAssignees} | ✔ | ワークフロースクリプトに関してはドキュメントを参照してください | |
${random} | ✔ | Random 数字を生成するためのJavaユーティリティ; 非推奨で将来削除予定 | |
${rolePermission} | ✔ | RolePermission | |
${portletPermission} | ✔ | PortletPermission | |
${paramUtil} | ✔ | ParamUtil | |
${locationPermission} | ✔ | OrganizationPermissionUtil.getOrganizationPermission()の結果を返します。 | |
${calendarFactory} | ✔ | CalendarFactory | |
${webServerToken} | ✔ | WebServerServletToken.getToken(long imageId) からの画像トークン | |
${sessionClicks} | ✔ | SessionClicks | |
${userPermission} | ✔ | UserPermission | |
${entryClassName} | ✔ | ||
${userGroupPermission} | ✔ | UserGroupPermission | |
${arrayUtil} | ✔ | ArrayUtil | |
${userName} | ✔ | ワークフローに最後に介入したユーザーのユーザー名 | |
${userId} | ✔ | ワークフローに最後に介入したユーザーのユーザーID。ロジックを理解するには、ワークフロースクリプトの記事を参照してください。 | |
${prefsPropsUtil} | ✔ | PrefsPropsUtil | |
${url} | ✔ | ページに表示される特定のコンテンツタイプのURL(例:ブログのエントリー、メッセージボードのメッセージ、およびWikiページ | |
${kaleoInstanceToken} | ✔ | ワークフロースクリプティングの記事をご覧ください。 | |
${utilLocator} | ✔ | UtilLocator | |
${objectUtil} | ✔ | new LiferayObjectConstructor()を返します。 | |
${urlCodec} | ✔ | URLCodec | |
${portletModeFactory} | ✔ | PortletModeFactory | |
${imageToolUtil} | ✔ | ImageToolUtil | |
${auditMessageFactoryUtil} | ✔ | AuditMessageFactoryUtil | |
${staticUtil} | ✔ | beansWrapper.getStaticModels()の結果を返します ; スタティック・メソッドへのアクセスの結果を返します。 |