Uncategorized

Visual Studio で Office SharePoint Server 2007 Workflow を作成するチュートリアル (第4回: 動作の確認とデバッグ編) 【Beta2版】

環境:Office SharePoint Server 2007 Beta 2

(Beta2TR 版については ここ を参照)

こんにちは。

今日は、さいごのチュートリアルとして、前回までに作成したワークフローの実際の実行(動作確認)とデバッグについて記載し、さいごに、この SharePoint ワークフローのさらなる可能性についてまとめたいと思います。

【ワークフローの実行】

では、早速ですが、前回までで設定したワークフローを以下の手順で実行してみましょう

  • SharePoint のサイト上でドキュメントライブラリを表示し (無ければ独自に作成してください)、[Settings] – [Document Library Settings] を選択してください。
  • [Workflow Settings] のリンクをクリックします。
  • ワークフローテンプレートに登録したワークフローが表示されているので、これを選択して、[Name] を適当に固有な名前を入力して、[Task List] にデフォルトの [Tasks] を選択して、[OK] をクリックします。
  • これで、このドキュメントライブラリで作成したワークフローを利用する準備が整いましたので、ここからワークフローを使ってみましょう。
    このドキュメントライブラリにドキュメントを登録し、登録したドキュメントを選択して、表示されるドロップダウンリストから [Workflows] を選択してください。
  • [Start a new workflow] 欄で登録したワークフローを選択します。これで、ワークフローが起動し、登録した InfoPath の Initiation Form が表示されるはずです。
    表示されたフォームの asignee と instructions に適宜内容を設定し、Submit 用のボタンを押してワークフローをつぎに進めます。(asignee には、実際に SharePoint に登録されているユーザのユーザID (ドメイン名ユーザID) を設定してください。)
  • つぎに、asignee で設定したユーザで SharePoint の同じサイトにログインしてみましょう。
    左ペインの [Tasks] をクリックすると、ワークフローが発行した新しいタスクが表示されているはずです。このタスクをクリックしてみましょう。
  • すると、今度は、ワークフローの開発でデザインした Task Form が表示されます。また、[instructions]  には Initiation Form で入力した値が設定されているはずです。
    [isFinished] にチェックを付け、Submit 用のボタンを押して完了します。

【ワークフローのデバッグ】

では、つぎに、以下の手順で、デバッグをおこなってみましょう。

  • Visual Studio でワークフローのプロジェクトを表示します。
  • つぎに、SharePoint のドキュメントライブラリからドキュメントを選択し、ドロップダウンリストから [Workflows] を選択してスタンバイしておいてください。
  • つぎに、Visual Studio で、Workflow1.cs の onWorkflowActivated メソッドの 1 行目にブレークポイント (F9) を設定しましょう。
  • メニュー [Tools] – [Attach To Process] を選択し、表示されている w3wp.exe をすべて選択し、[Attach] ボタンを押します。
  • SharePoint の Web ページ上から、ワークフローをクリックして開始します。上述の通り、InfoPath のフォームが表示されますので、ここで上記同様に値を設定して Submit のボタンを押してみてください。
    設定したブレークポイントで、ブレークし、変数の内容などがチップで表示されるはずです。

【まとめ】

このように、SharePoint ワークフローをコード (C#, VB.NET など) でカスタムに、自由に構築することが可能で、ここでは簡単なサンプルしか示していませんが、もっと強力な実装をおこなうことができるでしょう。
例えば、以下のような応用ができます。

ここではご紹介しませんでしたが、ドキュメントライブラリにアイテムが登録されたタイミングでワークフローを開始するといった設定も可能です。またワークフローのプログラムの側では、ご紹介したワークフロープロパティの ItemUrl プロパティでアイテムの名前を取得できます。例えば、あらかじめ特定のテンプレートの InfoPath フォームが登録されるとわかっている場合には、この登録された InfoPath フォームのファイルを取得して、このファイルの中身を System.Xml で解析して、フォームに入力された情報に応じて動的にその後のワークフローを制御したり (例:メール本文に内容を埋め込む、など) といったことができます。
また、Office Developer Center (Japan) のスクリーンキャストでもご紹介しているような OpenXML を使った実装 (このブログでもサンプルコードを掲載しています) を使って、動的にカスタムの Word 文書などを作成してドキュメントライブラリに登録するといったこともワークフローから実施できます。

<ドキュメントライブラリに登録するサンプル (すみません、動かしてません、、、)>

SPWeb site = new SPSite(targetUrl).OpenWeb();
SPUser user = site.AllUsers[@”TESTDOMAINTESTUser”];
SPFile newSPFile = site.Files.Add(targetUrl, sourceStream, user, user, DateTime.Now,DateTime.Now);
SPListItem spItem = newSPFile.Item;
spItem.Properties[“vti_title”] = “New Document !!”;
spItem.Update();

またさらには、Visual Studio のツールボックスに表示されているアクティビティには、SendMail とアクティビティもあることにお気づきかと思います。このアクティビティで MethodInvoking ハンドラを実装してメールを送信するができます。

<MethodInvoking ハンドラのサンプル (すみません、これも動かしてません、、、)>

sendEmail1.To = @”xxxxxx@xxxxxx.co.jp”;
sendEmail1.From = @”xxxxxx@xxxxxx.co.jp”;
sendEmail1.Subject = @”This is a mail title !!”;
sendEmail1.Body = @”A new task has been assigned to you!<br><br>http://xxxxxx@xxxxxx.co.jp “;

このように、さまざまに応用して、Office Developer Center (Japan) に例示として掲載されているような動きなど、驚くような動作を自動化することが可能となります。

皆さんが必要としている業務ニーズにあわせ、いろいろ実務上のサンプルなども作ってみると、おもしろいかもしれません。

第1回 デザイン編
第2回 コード実装編
第3回 配置・インストール編

Categories: Uncategorized

Tagged as: ,

3 replies»

Leave a Reply