📌

Sitecore XM/XP 10.x のワークフローをカスタマイズする方法

2023/03/14に公開

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 の設定を開きます。

  1. Package Sources を選択
  2. +をクリック
  3. 追加された Package srouces を選択
  4. Name に Sitecore を入力。Source に https://sitecore.myget.org/F/sc-packages/api/v3/index.json を入力
  5. Update をクリック
  6. OK をクリック

作成手順

新規ソリューション作成


ClassLibrary(.NET Framework)を選択


プロジェクト名を入力、.NET Framework 4.8 が選択されていることを確認し、Create

NuGet パッケージを追加


Visual Studio の Tools から Nuget Package ManagerPackage 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();
                }
            }
        }
    }
}

その他、フィールドの値へのアクセス方法などは以下ドキュメントをご参照ください。
https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-manager/access-field-values.html

モジュールデプロイ

Visual Studio でビルドしたモジュール(SampleWorkflow.dll)を Sitecoreがインストールされている wwwroot[site name]\bin にコピーします。デバッグビルドでも動作確認可能です。

Content Editor の設定

ワークフローの設定

XM/XP の Content Editor を開いて、ワークフローを編集します。


Sample WorkflowSubmit を右クリックして新しいアクションを追加します。名前をSampleWorkflow とします。


データのタイプに SampleWorkflow.Class1, SampleWorkflow と入力して保存。
.(ドット), ,(カンマ)に注意して記述してください。

動作確認


test アイテムを新規追加し、タイトルに「test」が入っていることを確認し、「投稿」ボタンをクリック。


タイトルが workflow! に変更されていれば成功です。


ログでも SampleWorkflow fired と出力されていることが確認できました。

まとめ

以上、ワークフローのカスタマイズ方法を紹介しました。皆さまの開発のご参考になれば幸いです。

トラブルシューティング

ワークフローが動作しない


アイテムに目的のワークフローが登録されているか確認してください

Discussion