条件ノードの使用
サブスクリプション
条件 ノードは、ワークフロー内で条件付きでアクション (遷移、割り当てなど) を実行するのに役立ちます。複数のレビュアがいて、どのレビュアにタスクを割り当てるべきかを決定しなければならない場合があります。例えば、法務部によるレビューが必要な文書もあれば、マーケティングチームによるレビューが必要な文書もあります。
条件ノードにはスクリプトが必要ですが、DXP 2024.Q3以降はデフォルトで無効になっています。これは、SaaS環境では条件を使用できないことを意味します。セルフホスト型およびPaaS型のデプロイメントでは、システム設定 → スクリプト管理(セキュリティカテゴリ内)でスクリプトを有効にできます。
条件は、指定された条件が満たされているかどうかを確認することでゲートキーパーとして機能し、その条件に基づいて適切なレビュー担当者を割り当てたり、特定のタスクに移行したりして、アセット—に対してアクションを実行します。
カテゴリ固有の定義 には条件ノードが含まれています。条件ロジックは、資産カテゴリをチェックして、 法務レビュー タスクまたは コンテンツレビュー タスクに移行するかどうかを選択します。ワークフローに条件ノードを追加するには、以下の手順を行います。
-
グローバルメニュー (
) を開き、 アプリケーション → プロセスビルダー に移動します。 -
新しいワークフローを追加するには、(
)をクリックします。 -
ワークフローデザイナーのキャンバスで、ワークフローの名前を入力します。
-
ソース ビューを開きます。
-
カテゴリ固有の定義 を見つけます。生の内容をソース ビューにコピーして既存の内容をすべて上書きするか、 ファイルのインポート をクリックして定義の XML ファイルをアップロードします。
-
ダイアグラム ビューを開きます。
-
条件ノード 決定分岐をクリックして、ノードのプロパティを設定します。
-
Script (Groovy) フィールドを見つけます。内容をより鮮明に見るには、フィールドのサイズを変更(拡大)してください。

スクリプトは、アセットのカテゴリをループして、文字列
legalを探します。それが見つかった場合、ワークフローは法務レビューパスに沿って続行されます。それ以外の場合は、コンテンツレビューパスに沿って進みます。全内容は カテゴリ固有定義の条件スクリプトで確認できます。
-
条件のスクリプトの操作が完了したら、戻る矢印(
)または をクリックして保存 (以前のバージョンのワークフローデザイナーを使用している場合)します。

条件 ノードが 3 つの異なるタスク ノードに接続されていることに注目してください。
- 文書が
法的カテゴリに属している場合、資産は法務部に送られます。 - それ以外の場合は、そのアセットはマーケティングチームに送られます。
- 更新 ノードは、元の作成者によって更新されると (アセットがレビュー ノードのいずれかで拒否された場合)、処理を Condition に送り返します。
タスク ノードの設定方法については、 ワークフロー タスクの作成 および タスク ノードの割り当て を参照してください。
カテゴリ固有の定義の条件スクリプト
import com.liferay.asset.kernel.model.AssetCategory;
import com.liferay.asset.kernel.model.AssetEntry;
import com.liferay.asset.kernel.model.AssetRenderer;
import com.liferay.asset.kernel.model.AssetRendererFactory;
import com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.kernel.workflow.WorkflowHandler;
import com.liferay.portal.kernel.workflow.WorkflowHandlerRegistryUtil;
import java.util.List;
String className = (String)workflowContext.get(WorkflowConstants.CONTEXT_ENTRY_CLASS_NAME);
WorkflowHandler workflowHandler = WorkflowHandlerRegistryUtil.getWorkflowHandler(className);
AssetRendererFactory assetRendererFactory = workflowHandler.getAssetRendererFactory();
long classPK = GetterUtil.getLong((String)workflowContext.get(WorkflowConstants.CONTEXT_ENTRY_CLASS_PK));
AssetRenderer assetRenderer = workflowHandler.getAssetRenderer(classPK);
AssetEntry assetEntry = assetRendererFactory.getAssetEntry(assetRendererFactory.getClassName(), assetRenderer.getClassPK());
List<AssetCategory> assetCategories = assetEntry.getCategories();
returnValue = "Content Review";
for (AssetCategory assetCategory : assetCategories) {
String categoryName = assetCategory.getName();
if (categoryName.equals("legal")) {
returnValue = "Legal Review";
return;
}
}