Sitecore XM/XP 10.x のワークフローをカスタマイズする方法
Sitecore XM/XP にはワークフローがあり、カスタマイズが自由に可能です。今回はワークフローにて「Publish(投稿)」のコマンドを実行したときに、アイテムを編集し、Titleを変更する簡単なサンプルを紹介します。
使用環境
- Visual Studio 2019 以上(筆者環境は Visual Studio 2022 英語版)
- .NET Framework 4.8
- Windows 10
- Sitecore XM/XP 10.2
- 2023/3/13 の最新版は10.3です。10.2 の環境で検証しています。
対象者
- Sitecore デベロッパー
事前準備
NuGet のパッケージソースに Sitecore を追加
Visual Studio の設定を開きます。
- Package Sources を選択
- +をクリック
- 追加された Package srouces を選択
- Name に
Sitecore
を入力。Source にhttps://sitecore.myget.org/F/sc-packages/api/v3/index.json
を入力 -
Update
をクリック -
OK
をクリック
作成手順
新規ソリューション作成
ClassLibrary(.NET Framework)
を選択
プロジェクト名を入力、.NET Framework 4.8
が選択されていることを確認し、Create
NuGet パッケージを追加
Visual Studio の Tools
から Nuget Package Manager
の Package Manager Console
をクリック
画面下部に Package Manager Console
が表示されるので Install-Package Sitecore.Kernel -Version 10.2
と入力。バージョンはお使いのバージョンに合わせて変えてください。
正常に完了するとこのような画面になります。
クラス編集
次のように実装します。ログにこのモジュールが動いたことと、タイトルをworkflow!
に変更しています。
using Sitecore.Data.Items;
using Sitecore.Diagnostics;
using Sitecore.Workflows.Simple;
using System;
namespace SampleWorkflow
{
public class Class1
{
public virtual void Process(WorkflowPipelineArgs args)
{
var msg = "SampleWorkflow fired";
Log.Info(msg, this);
Item dataItem = args.DataItem;
using (new Sitecore.SecurityModel.SecurityDisabler())
{
dataItem.Editing.BeginEdit();
try
{
// Edit item
dataItem["title"] = "workflow!";
dataItem.Editing.EndEdit();
}
catch (Exception ex)
{
dataItem.Editing.CancelEdit();
}
}
}
}
}
その他、フィールドの値へのアクセス方法などは以下ドキュメントをご参照ください。
モジュールデプロイ
Visual Studio でビルドしたモジュール(SampleWorkflow.dll)を Sitecoreがインストールされている wwwroot[site name]\bin にコピーします。デバッグビルドでも動作確認可能です。
Content Editor の設定
ワークフローの設定
XM/XP の Content Editor を開いて、ワークフローを編集します。
Sample Workflow
の Submit
を右クリックして新しいアクションを追加します。名前をSampleWorkflow
とします。
データのタイプに SampleWorkflow.Class1, SampleWorkflow
と入力して保存。
.
(ドット), ,
(カンマ)に注意して記述してください。
動作確認
test アイテムを新規追加し、タイトルに「test」が入っていることを確認し、「投稿」ボタンをクリック。
タイトルが workflow!
に変更されていれば成功です。
ログでも SampleWorkflow fired
と出力されていることが確認できました。
まとめ
以上、ワークフローのカスタマイズ方法を紹介しました。皆さまの開発のご参考になれば幸いです。
トラブルシューティング
ワークフローが動作しない
アイテムに目的のワークフローが登録されているか確認してください
Discussion