SITECORE MANIA 技術ブログ

2021.03.22 その他

濱村

濱村

イベントハンドラを追加する方法

アイテムをコピーした時にワークフローの状態をデフォルトで「下書き」状態にするようなカスタマイズをしたいことがあるかと思います。

ここではイベントをトリガーとして処理を実行するイベントハンドラでカスタマイズする方法を紹介します。

ここでは使用するテンプレートは全て作成している前提で説明します。

アイテムの作成

1.SItecoreにログインし、管理画面からコンテンツエディターを開きます。

2.「/sitecore/system/Workflows」に移動し「Test」ワークフローアイテムを作成します。(「ワークフロー」フォルダアイコンのプルダウンメニューから「挿入」を指定して作成します。)

3.作成した「Test」ワークフロー配下に「Workflow/State」テンプレートを挿入して「TestState」アイテムを作成します。

実装方法

1.「ItemEventHandler.cs」と「ItemEventHandler.config」を作成します。

2.「ItemEventHandler.cs」に「TestHandler」メソッドを作成します。

TestHandlerメソッドでは、コピー先のアイテムのワークフローに「Test」ワークフローを、ワークフロー状態に「TestState」を、それぞれ指定します。

public class ItemEventHandler
    {
        //configで指定
        public int Index { get; set; }

        public void TestHandler(object sender, EventArgs args)
        {
            //EventArgsからコピー先のアイテムを取得
            Item item = Event.ExtractParameter(args, Index) as Item;
           
            //アイテムの編集モードを開始
            item.Editing.BeginEdit();
            
            //コピー先アイテムに[Test]ワークフローを設定
            item.Fields["__Workflow"].Value =
            "{63C57A22-D56A-4C58-946F-731716332448}";
            
            //コピー先アイテムに[TestState]ワークフロー状態を設定
            item.Fields["__Workflow state"].Value =
            "{D25DC7EB-BC95-46F1-9776-567E397D4274}";
            
            //アイテムの変更モードを終了
            item.Editing.EndEdit();
        }
     }

ItemEventHandler.cs

3.「ItemEventHandler.config」には、「item:copied」イベントに、上記で作成した「TestHandler」を登録します。







1




ItemEventHandler.config

*「index」で設定している1はコピー先アイテムを指します。 インデックスパラメータについて詳しく知りたい方は後述のリンク先で確認してください。

Sitecoreで事前定義されているイベント

イベント名  イベント 
 item:added  追加
 item:created  作成
 item:copied  コピー
 item:deleted  削除
 item:moved  移動
 item:saved  保存
 item:versionAdded  バージョン追加
 publish:begin  パブリッシュ開始
 publish:end  パブリッシュ終了

*事前定義されているイベントはこの他にもたくさんあります。イベント名やインデックスパラメータについて詳しく載っているので知りたい方はこちらをご確認ください。

 

イベントの実行

1.「/sitecore/content/Home」配下に、コピー元である「sample1」アイテムと、コピー先アイテムを格納する「SampleFolder」フォルダを、作成します。

2.「sample1」を高度なコピーで「SampleFolder」配下に「指定の場所にコピー」でコピーします。

3.コピーして作成されたアイテム「/sitecore/content/Home/SampleFolder/sample1」に移動し、ワークフローとワークフロー状態を確認すると、ワークフローに「Test」がワークフロー状態には「TestState」が設定されています。

以上になります。

この記事を読んだ人はこちらの記事も読んでます

お問い合わせ・資料請求

LYZONにご相談下さい

ご依頼ご質問等まずは私達にお気軽にご相談下さい。

お電話でのお問い合わせ

03-5803-0587平日9:00~18:00