[Sitecore][Publishing]だれがパブリッシュしたの?

以前サポート業務をした際によくお客さんに何でサイトをパブリッシュしたのと聞かれ、いいえ、してないよと言っても信じてくれなかった。よくあったのは、自社の社員がアイテムを更新し、パブリッシュはせず、お客さんの最終確認を得ようとします。しかし、お客さんは過ってサイトをパブリッシュして、サイトにエラーが発生。アイテムの最後更新者をみては自社の社員であったので、お客さんにあなたの社員が最後にアイテムを更新したのでパブリシュしたに違いと言われたことがもある。

例を挙げれば、サポーターの高志君がアイテムを更新し、お客さんに確認をするようにお願いする。お客さんの浩様が誤ってアイテムをパブリッシュする。ただ、コードの変更がまた更新していないのでサイトにてエラーとなった。浩様が自分がパブリッシュしたことも覚えていないので、もしかして、最終の更新者である高志君がサイトを壊したのではと思い始める。

20130211_01

誰があるアイテムをパブリシュを探すにはログファイルをみることです。 アイテムを検索すれば、最後に誰かパブリシュしたのは一目瞭然です。

20130211_02

ログファイルを見るには、サイトコアのログビューアーにてみればいいです。

20130211_03

もしサーバへのアクセスがあれが、だーターフォルダにあるログファイルフォルダにてログファイルをみればいい

20130211_04

  • これをお客さんに見せれば納得するはずです。ただ、一般のお客さんにログファイルを検索させるわけいけません。これについて、同僚のマイケルと話をしたら、彼はカスタムフィールドを定義し、カスタムPublishItemProcessor を追加すりことでこのパブリシュの情報をサイトコアにて見ることができるようにできます。詳細およびコードはここで掲載されています
  • また、サイトコアにてカスタムツールを作って独自のレポートを作ってもいいです。カスタムのツールを作るには、ここを参照すればいいです。

お客さんが誤ってパブリッシュしたこともよくあるので、開 発者として、このようなのことを事前突き止めることが大事です。ワークフローを使ってある程度防ぐことができますが、ただ莫大なアイテムを頻繁に更新する と、細かく確認せずに一気に承認しパブリッシュするお客さんもいます。それをさらに防ぐにかいくつかの方法があります。

  • アイテムのパブリッシュを停止する。Sitecore CMS 6 コンテンツ クックブックの 4.3 アイテムをパブリッシュ停止にする方法にて詳細が書いています。
  • パブリッシュ禁止。これはサイトコアについてくる基本の機能で、パブリッシュセクションにて、パブリッシュ禁止をチェックすれば、アイテムはパブリッシュされません。

20130211_05

個人的にはこのパブリッシュ禁止が好みます。なぜなら、 これはサイトコアの既存フィールドなので、簡単なツールを書いて、テンプレートやアイテムのパスをもどに、簡単に更新することができます。カスタムフィー ルドもいいですが、将来サイトコアーのアップグレードする際にこれらのカスタムコードの更新も考慮しなければなりません。サイトコアーは非常に拡張性と柔 軟性を優れているので、拡張しやすいですが、これまでにサイトコアーのアプグレードをいくつかしてきたことから、それぞれのバージョン更新にて、既存 フィールドがなくなったり、新しいフィールドが追加されたら、関数の変更など沢山の更新があります。拡張した分新しいバージョンでも動作するかどうかを考 慮しなければならならないので、私はできるだけ既存の機能使って開発を心得ております。ただ、サイトコアを拡張するのは楽しいタスです。拡張性について、John West のブログにてある記事が参照になるかも。