SITECORE MANIA 開発者向け技術ブログ

その他

濱村

濱村

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

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

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

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

アイテムの作成

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」が設定されています。

以上になります。



※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。

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

Sitecore導入に関するご相談・資料ダウンロード

導入をご検討・ご依頼の方や、サービスについてご不明点がございましたらお気軽にお問い合わせください。

Sitecoreの運用問題を解決する

既にSitecoreを導入しているお客様向けサービス