定期パブリッシュの作成、設定の方法を説明します。
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のバージョンによって実装されている機能が異なります。