SharePoint WCM (1) : コンテンツ承認ワークフロー (CMS 用ワークフロー) の開発と設定

環境 :
Microsoft Office SharePoint Server 2007
Visual Studio 2008 (Professional Edition 以上)

こんにちは。

昨日のセミナー (SharePoint Developer Forum 「インターネットでのSharePoint Server 2007 活用技術」) では、1 時間延長というとんでもない延長試合になってしまい、申し訳ございませんでした。
さんざんデモだけ実施して終わってしまいましたが、SharePoint の CMS 関連の機能 (= WCM, Web コンテンツ管理) の利点は、ご覧頂いたように以下が特徴です。

  • .NET を基盤としてフルカスタマイズ可能
  • さらに、カスタマイズした機能をモジュール化できる (デザイン担当、ベース機能開発、カスタマイズ& 設定 & 管理 の明確な分業が可能)

逆にカスタマイズをまったく実施しないのであれば、フリーの CMS ツールなどと比べ、SharePoint の利点がかすんでしまうかもしれません。(世の中には、同等の機能を持ったいくつかの CMS ツールが存在しています。) SharePoint の CMS 機能は、上記の特性から、Web サイトの構築/保守がコア業務で、専門の機能を永続的に保守していくような場合に投資 (機能の初期構築) する価値のあるソリューションと言えるかもしれません。

さて、ご参加いただいた皆様向けに、セミナーでさらさらと流してしまったコードの部分のみを順番に掲載していきます。

SharePoint WCM (セミナー補足) :

まず最初は、デモで構築したコンテンツ承認ワークフローです。

事前の設定 (軽い復習, ただし匿名認証等は除く、、、)

セミナーでご説明した要領で、コンテンツ管理 (WCM) 用にサイトを構成します。下記に手順を復習します。

  1. サイトコレクション (SPSite) の [発行インフラストラクチャー] の機能 (フィーチャー) と、サイト (SPWeb) の [発行機能] の機能 (フィーチャー) をアクティブにします。
    (この設定により、このサイトで、ページの発行機能、再利用可能コンテンツ、リンク関連の追跡、差分管理、バリエーション等々の CMS 関連のさまざまな機能が使用可能になります。)

  2. 上記でも基本機能は使えますが、スケジュール設定 (公開日の設定、など)、ワークフローによる承認発行などの便利機能も使えるように、設定をおこないます。
    作成するページが保管される [ページ] のドキュメントライブラリの設定ページを開き、 [バージョン管理] をクリックして、[コンテンツ承認] 欄の [送信されたアイテムに対してコンテンツの承認を必須にする] のラジオボタンを選択して確定します。

以上で、設定が終了しました。
ページを新規作成して、[ワークフロー] メニューをドロップダウンするとわかりますが、この段階だと、まだ、承認ワークフローにまわさずに、いきなり [発行] をおこなうことができてしまいます (下図)。そこで、ワークフローを設定して、承認をおこなって発行させるように変更します。

ワークフローの作成 / 設定 

ご説明したように、ワークフローは、わざわざ自作をしなくても、発行承認用のワークフローが既に入っていて、これを設定することができます。
しかし、日本の多くのコンテンツ管理の現場では、企業にあわせて独自のワークフローが必要とされる場面が多くなることでしょう。そこで、以下では、独自のワークフローを作成して、これをコンテンツ承認で使用していきます。

まず、ワークフローの作成からはじめます。簡単なワークフローで結構ですので、Visual Studio 2008 を使用して、こちら で紹介しているような単純なワークフローを作成してみてください。(ここでは、基本的な作成方法は省略します。)

ここで、コンテンツ承認用のワークフローを作成するためには、セミナーでご説明したように 2 つだけやるべきことがあります。

まず 1 つ目は、下図のように、このワークフローが完了したら、アイテムをメジャーバージョン (バージョン 1.0) として発行できるようにしておくという点です。

この設定がおこなえるようにするために、開発したワークフローのワークフローマニフェスト (workflow.xml) に以下のように #OnMajorCheckIn の初期化フラグを設定しておきます。

<?xml version=”1.0″ encoding=”utf-8″ ?>
<Elements xmlns=”http://schemas.microsoft.com/sharepoint/”&gt;
  <Workflow
     Name=”SharePointWorkflow1″
     . . . . .

    <MetaData>
      <InitiationType>Manual;#OnMajorCheckIn</InitiationType>
      . . . . .

    </MetaData>
  </Workflow>
</Elements>

2 つ目は、ワークフローの完了時に、発行モデレート機能のステータスを設定するという点です。

たとえば、さいごのタスク完了アクティビティのハンドラに、以下のように記述をおこなうことで、ワークフロー終了時に「承認澄み」のコンテンツ承認用のステータスを設定します。(実際の開発では、ワークフロー開始時に「承認待ち」ステータスにするなど、細やかに設定をおこなってください。)

private void completeTask1_MethodInvoking(object sender, EventArgs e)
{
    SPListItem item = workflowProperties.Item;
    SPModerationInformation modInfo = item.ModerationInformation;
    modInfo.Status = SPModerationStatusType.Approved;
    item.Update();
}

以上で、このワークフローは、立派なコンテンツ承認ワークフローとして使用することができます。

このワークフローをビルド / 配置して、[ページ] ライブラリのワークフローとして設定をおこなってください。(上図の通り、[アイテムのメジャーバージョンの発行を承認するために、このワークフローを開始する] のチェックをおこなってワークフローの設定をおこなうようにしてください。)

これで、下図のように、承認をせずに「発行」をおこなうことはできなくなり、必ず承認依頼 (ワークフローの開始、など) をおこなわないとページの公開ができないような “まっとうなコンテンツ管理” のサイトが完成しました。[ワークフロー] メニューの [承認のため送信] を選択すると、ワークフローが開始され、ワークフローが完了すると、ドキュメントのメジャーバージョンが発行されて公開されます。

 

 

Advertisements

One thought on “SharePoint WCM (1) : コンテンツ承認ワークフロー (CMS 用ワークフロー) の開発と設定

  1. セミナーではお世話になりまして、ありがとうございました。
    クリエ・イルミネートさんのインターネット接続のご説明と、松崎さんの開発よりのご説明で、ボリューム満載のセミナーとなっておりました。(マウスをお貸しできなかったのが、唯一の私の失態です。)
    また機会があるときには、よろしくお願い致します。

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s