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

管理機能

新藤

新藤

定期Publishの方法

定期パブリッシュの作成、設定の方法を説明します。

1.パブリッシュ用のプログラムの作成

/Sitecore/Content/Home アイテムをすべての言語ですべてのパブリッシュ ターゲットにパブリッシュする例)

using System;

namespace AutoPublish
{
    public class PublishClass
    {
        public void PublishItem()
        {
            DateTime publishDate = DateTime.Now;
            Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

            Sitecore.Data.Items.Item targets = master.GetItem("/sitecore/system/publishing targets");

            foreach (Sitecore.Data.Items.Item target in targets.Children)
            {
                string targetDBName = target["target database"];
                Sitecore.Data.Database targetDB = Sitecore.Configuration.Factory.GetDatabase(targetDBName);

                foreach (Sitecore.Globalization.Language language in master.Languages)
                {
                    Sitecore.Publishing.PublishOptions publishOptions = new Sitecore.Publishing.PublishOptions(master, targetDB, Sitecore.Publishing.PublishMode.Incremental, language, publishDate);
                    publishOptions.Deep = true;
                    Sitecore.Publishing.Publisher publisher = new Sitecore.Publishing.Publisher(publishOptions);
                    publisher.Publish();
                }
            }
        }
    }
}

2.コンパイルしたファイルの設置

このアセンブリをコンパイルし、結果ファイル(例えば:AutoPublish.dll)をSitecoreのWebルートの/binフォルダに置く。

3.コマンドをSitecoreで設定する

コンテンツエディタの/system/Tasks/Commandsアイテムにコマンドテンプレートに基づくアイテムを新しく作成する。

4.データの入力

Type:AutoPublish.PublishClass, AutoPublish
Method:PublishItem
Typeは(namespace).(class),(アセンブリファイル)を入力
Methodは指定されたクラスのメソッドを入力

これで作成したコマンドがスケジュールタスクとして準備されました。

5.スケジュールタスクの登録

コンテンツエディタの/system/Tasks/Schedulesアイテムにスケジュールテンプレートに基づくアイテムを新しく作成する。

6.データの入力

Command:先ほど作成したコマンドアイテムを選択する。
Item:未入力

7.スケジュールの登録

Schedule:20040720T235900|20060725T235900|127|01:00:00
この例ではこのタスクは2004/7/20 23:59:00から2006/7/25 23:59:00まで毎日(127)、毎時間(01:00:00)実行される。
Scheduleは「|」によって分けられた4つのパラメータを入力

  • a.開始日時
  • b.終了日時
  • c.曜日(例えば月曜日と金曜日を指定したい場合は、34(2+32)を指定

        public enum DaysOfWeek 
        { 
          None = 0, 
          Sunday = 1, 
          Monday = 2, 
          Tuesday = 4, 
          Wednesday = 8, 
          Thursday = 16, 
          Friday = 32, 
          Saturday = 64, 
        } 
        
  • d.期間(例えば01:00:00 → 毎時)

注意Auto Removeフィールドはスケジュールアイテムを削除したいときに使います。もしAutoRemoveを設定したら、スケジュールアイテムは実行後に削除されます。

8.Web.configの設定

frequencyとintervalパラメータを必ず設定する

<scheduling>  
  <!-- Time between checking for scheduled tasks waiting to execute --> 
  <frequency>01:00:00</frequency> 
     
  <!-- Agent to process schedules embedded as items in a database --> 
  <agent type="Sitecore.Tasks.DatabaseAgent" method="Run" interval="01:00:00"> 
    <param desc="database">core</param> 
    <param desc="schedule root">/sitecore/system/tasks/schedules</param> 
    <LogActivity>true</LogActivity> 
  </agent>
  ・・・・  

注意:DatabaseAgentのintervalはfrequencyの値より大きく設定する必要があります。



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

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

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

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

Sitecoreの運用問題を解決する

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