環境:
Microsoft Office SharePoint Server (MOSS) 2007
Visual Studio 2005
SharePoint Server 2007 SDK and ECM Starter Kit
こんにちは。
今日は、SharePoint ワークフローの client integration のテクニックについて記載します。
ご存知の方も多いと思いますが、SharePoint ワークフローでは createTask アクティビティなどを使ってタスクを扱うことができるようになっており、作成されたワークフローは、SharePoint のタスクリストの中から編集(起動、実行)できますが、Office クライアント (Excel, Word, など) からも直接起動して利用することもできるようになっています。また、タスク編集以外にワークフローそのものの起動も Office 上から可能です。
このテクノロジーが実際のビジネスシナリオにおいていかに使えるものであるかは容易に連想して頂けるでしょう。例えば、ドキュメント (Excel, Word, など) が登録されたらタスクを作成し、担当者にメールを送信して、メール本文にそのドキュメントへのリンクを埋め込んでおくことで、使う側はメールからリンクをクリックし、表示されるドキュメント上でメッセージバーから承認行為などをおこなえば、ワークフローがまわっていきます。利用者は、メールに答えるだけで、わざわざ毎朝 SharePoint のポータルを開いてタスクリストをチェックしておく必要はないのです。
さて、この client integration の仕組みの実装ですが、一般には、非常に単純な手順で完了します。以下に記載されているように、フォームオプション 互換性タブの [ブラウザまたは InfoPath で開くことができるフォーム テンプレートをデザインする] にチェックを付けて InfoPath のフォームを (タスクフォームとして) 作成し、あとは 過去に記載した要領 で、Visual Studio でワークフローを作成すればよいだけです (尚、この方法は、SharePoint Designer を使ったワークフローの場合には不可能です)。
http://msdn2.microsoft.com/en-us/library/ms548723.aspx
このように Compatibility に配慮されたフォームを作成することで、タスクリストから実行した場合はブラウザモードで起動し、クライアント(Excel, Word, など)から起動する場合には InfoPath のクライアントモードでタスクフォームが起動します。(フォームを aspx で作成した場合には、ブラウザが表示されます。)
しかし、実際にこの仕組みをちゃんと使う場合には、実は、いくつかコツがあります。
今日はその辺りのコツを以下に記載しましょう。
- まず1つめですが、タスクの TaskProperties オブジェクトの AssignedTo プロパティに正確なユーザ名を設定する必要があります。
例えば、EXAMPLE ドメインの Demo ユーザにアサインする際に、AssignedTo に EXAMPLEDemo ではなく Demo と設定した場合、タスクリストには正しく割り当てられますが、クライアント (Word, Excel, など) のビジネスバー (business bar) は表示されなくなってしまいます。(これは、タスクリストで [担当者] カラムがブランクかどうか確認するとわかります。)回避方法ですが、入力値からコードの中で正式な LoginName を取得するようにしても良いのですが、もっともスマートな方法は、Contact Selector のコントロールを使用することでしょう。Contanct Selector の使い方を理解したい方は、以下 (InfoPath チームブログ) を参照してください。
http://blogs.msdn.com/infopath/archive/2007/02/28/using-the-contact-selector-control.aspx
- まだあります!(すみません、、、)
ドキュメントライブラリからアイテムを選択して表示されるワークフローの一覧 (ドロップダウンで [Workflow] を選択して表示される画面) で、使用していないワークフローが含まれている場合にも、client integration のためのビジネスバーは表示されません。
例えば、ワークフローフィーチャーを stsadm でインストールし、フィーチャー(機能)の設定画面でアクティブ化 (Activate) して、ドキュメントライブラリに対し [ワークフロー設定] でこのワークフローを追加したとします。そして、このドキュメントライブラリへのワークフロー設定を放置したままで、該当のワークフローフィーチャーを stsadm でアンインストールしてしまうと、このドキュメントライブラリ上では、どのワークフローに対しても client integration はできなくなります。
workflow.xml で AssociateOnActivation を指定してフィーチャーインストールをおこなうと、ドキュメントライブラリへの関連付けをおこなうことなくどのドキュメントライブラリでもこのワークフローを使うことができますが(デフォルトで表示される [承認] ワークフローなどはまさにこの仕組みが使われています)、この仕組みでインストールしたものも削除方法などの問題でアンインストールして残ってしまった場合には、同様の現象が発生します。(この場合には、すべてのドキュメントライブラリでこの現象が発生することになります。)非アクティブ化などを確実におこなって、アンインストールをおこなってください。この場合の回避方法は簡単で、 [ワークフロー設定] で該当のワークフローが確実に削除されるようにしてください。
SharePoint は、開発の観点では、正直、おぼえることの多い製品ですが、使いこなすと、大変強力な仕組みや製品を構築していくことができます。(カスタムの監査や、情報管理ポリシーの作成、デプロイについても、マニフェストや CAML を理解することで、製品パッケージの作成などにも対応した非常に幅広いデプロイシナリオを実現できます。)
前回も記載しましたが、これまでは「新機能は何か?」「2007のコンセプトは?」といった内容説明が主体でしたが、今後はセミナー、MSDNなど通し、より実践的な内容(どううまく使いこなしていくか)をご紹介していきたいと思っています。
Categories: Uncategorized