SharePoint 開発: 日本の開発者向け、使える Sample 集 !
こんにちは。
エンタープライズコンテンツ管理スタータキットサンプルステップバイステップ操作ガイド が日本の開発者に向けてリリースされました。米国で作成されたオリジナルの ECM Starter Kit を日本の開発者の方向けに、日本で自己学習してもらえるよう、日本独自で作成されたステップバイステップのガイド文書です。
以下、このサンプルでとりあげているテーマを早見表形式で記載します。
SharePoint 上におけるカスタムな製品開発など、コアの Developer の方にとって有用なソースサンプルがいくつか含まれています。SharePoint の機能をあますところなく使い倒して、皆さんなりの完成されたプロダクトなどの開発にお役立てください。(どんなことをやっているかサマリーを憶えておくだけでも、困ったときの役に立つと思います。)
【ドキュメント管理とコンテンツ処理】
- 語句置換ドキュメント検査モジュール (TermReplacementDocumentInspector)
Word 2007 で、コントロールメニューの [配布準備] - [ドキュメント検査] をおこなうと表示されるドキュメント検査用モジュールのカスタム版を作成するサンプルです。
Office クライアントは、アンマネージのモジュールですので、マネージコードで作成したモジュールを regasm を使って COM として登録をおこないます。
- ドキュメント コンバータ (Document Converters)
Word 文書 (docx) に設定されたカスタムプロパティを Open XML を使って削除するカスタムのコンバーターです。SharePoint のフィーチャーとしてインストールされ、SharePoint 上からメニューを選択して変換をおこなうことができます。
(英語のオリジナルのサンプルガイドでは、docm から docx に変換するコンバーターも含まれていると記載されていますが、すみません、ドキュメントの記述ミスで、残念ながらサンプルには入っていません。)
【レコード管理とポリシー】
- 重複解除ルーター (DeduplicationRouter)
カスタムルーターと呼ばれるもので、レコードセンターでルーティング設定をおこなう際にルーティングをおこなうロジックをマネージコードで実装することができます。
ここでは、ドキュメントのバイナリの内容を検査し、重複したドキュメントの振り分け (ルーティング) の要求があった場合に、重複のないようにルーティングをブロックするカスタムルーターを作成しています。
- ドキュメント完全性 Verifier (DocIntegrityPolicyFeature)
ドキュメントライブラリーなどで、[情報管理ポリシーの設定] のリンクをクリックすると表示されるポリシー (ラベルを付ける機能や、監査機能、など) ですが、このポリシーもマネージコードを使ってカスタムなものを追加することができます。
ここでは、ドキュメントのバイナリが登録時から勝手に書き換えられていなかをチェックするカスタムなポリシー機能を実装しています。
- レコード センター Webサービス コンソール アプリケーション (RecordsRepositorySubmit)
レコードセンター Web サービス (_vti_bin/OfficialFile.asmx) を使って、レコードセンターからの情報の取得や、レコードセンターへのファイルの登録をおこなうサンプルコードです。
- 検索、収集、およびホールド ツール (SearchCollectAndHold)
以前、このブログでも SharePoint のタイマー (Timer) を使った処理について記述しましたが、レコードセンターへの転送と収集、及び保留処理をこのタイマーを使って実装したサンプルコードです。
- サンプル バーコード ジェネレータ (SampleBarcodeProvider)
ドキュメントライブラリーで [情報管理ポリシーの設定] を選択して表示されるバーコード挿入の機能で、カスタムのバーコード作成モジュールを作成して組み込むサンプルコードです。(feature.xml がありませんが、内部的にはフィーチャーとして組み込んでいます。)
登録したカスタムのバーコード作成機能は、[サーバーの全体管理] - [サーバー構成の管理] - [情報管理ポリシーの構成] で使用するバーコード作成機能として組み込むことができます。
【ワークフロー】
- ハロー ワールド シーケンシャル ワークフロー (HelloWorldSequential)
これからワークフローをはじめる方向けの、シーケンシャルワークフローの基本サンプルです。
- ステートマシン承認 ワークフロー (StateMachineApprovalWorkflow)
同様に、ステートマシーンを使った基本サンプルです。
- カスタム ワークフロー レポート (CustomReports)/ レポートクエリ ジェネレータ (ReportQuery)
ワークフローレポートをカスタムに実装したサンプル (独自な形式のワークフローレポート) です。
レポートは aspx の画面で表示されます。(カスタムコントロール (ascx) を作成して実装しています。)
- カスタム ワークフロー レポート (CustomReports)/ カスタム XLSX インジェクタ (XlsxInjector)
上記のカスタムなレポートの Excel 版です。(Excel ファイルのダウンロード、もしくは XLViwer による表示をおこないます。)
- エンタープライズ コンテンツ管理のワークフロー アクティビティ (ECMActivities)
他のサンプルで使用されるアクティビティの実装コードのため、このサンプル単独で意味をなすものではありませんが、こうしたアクティビティの他に、Tech ED でもご紹介しようと思っている、SharePoint Designer 用のアクティビティの実装コード例 (及び .action ファイル) も入っています。(Tech ED では、SPD 用のもう少し違った技もご紹介しますが、、、)
- リストアイテム アクティビティ (ListItemActivities)
IListItemService という SharePoint ワークフローが内部でもっているインタフェース (データ交換サービス用のインタフェース) を使ったサンプルコードです。
実は、このインタフェースを使ったアクティビティは、Visual Studio のツールボックス上のアクティビティには存在していません。しかし、このデータ交換サービス用のインタフェースを使ったカスタムなアクティビティを作成することで、「タスク」を使わずに連携をおこなうような強力なワークフローを作成することができます。
これも、Tech ED では、エッセンスをご紹介する予定です。(同じく、Tech ED では、このサンプルにないもう少し別の技もあわせてご紹介します、、、)
- 変更ワークフロー (ModificationSample)
Modification Form を使ったサンプルコードです。
Modification Form を使った場合、変更要求を受け付けて処理するアクティビティは、他のアクティビティと異なり、いつでも呼び出されていつでも処理されなければなりません。こうしたアクティビティはどのように実装すれば良いのでしょうか? (私のブログでは、以前、その答えを記載しましたが、、、)
その答えをこのサンプルで実演しています。(Modification Form を使った場合には、実はこのサンプル以外にもいくつか踏まえておくべきコツがあるので、それはおいおいこのブログでもご紹介していきます。)
- 複製および連絡先の選択ワークフロー (ReplicatorContactSelectorSample)
Contact Selector を使ったワークフローフォームの良いサンプルです。
「マルチステージ ワークフロー」のサンプル同様、Replicator を使って不特定な複数名へのアサインというのを実現していますが、「マルチステージ ワークフロー」のように Replicator のネスト構造にはなっていないので、まず Replicator の基本的な使い方 (InitialChildData を渡すことで数を決定し、それぞれを初期化して、などの Replicator のお作法) を学びたい方にとってもこのサンプルは良いかもしれません。
- システム間受注(InterSystemWorkflow)
SharePoint と外部システム間で "同期して" 連携するワークフローのサンプルです。SharePoint らしく、「タスク」を介在させます。(尚、Tech ED では、ワークフロー Web サービスを使った InterSystemWorkflow をお見せしようと思っていますが、これは、そのサンプルとは異なり Workflow 用の Web サービスを使用する予定です。)
- 機密承認ワークフロー (ConfidentialApprovalSample)
このブログでもご紹介した、フローの進みに応じてドキュメントのアクセス権を変更するというワークフローのサンプルです。
- マルチステージ ワークフロー (MultiStage)
WF で提供されている Replicator の上手な使い方をマスターしたい方向けのサンプルです。
Replicator の中に Replicator を配置することで、例えば、「設計承認」、「製造承認」などの段階の 1 つ 1 つで、
複数ユーザへのアサインを実現しています。またこうしたマルチステップの場合に使える InfoPath の「繰り返しテーブル」や「繰り返しセクション」を上手に組み合わせています。
これは、そのものを Tech ED でもご紹介する予定です。
- サーバー側署名収集ワークフロー (SignaturesWorkflowSample)
Word 文書などに埋め込んだ署名情報を Open XML を使って読み込むことで、ドキュメントに設定された情報をもとにユーザを特定しワークフローを実行するということをおこなっているサンプルで、「ドキュメント連携」を理解する良いサンプルになっています。(Tech ED でも、こうした「ドキュメント連携」をテーマとした少し手の込んだサンプルをお見せします。)
- レビュー ワークフロー (ApprovalWorkflowSample)
これは、大変高度なことをやっています。(あまりマネしなくて結構ですが、どうしても必要な方は、こんなサンプルがあるということを憶えておいてください。)
これは、既存の承認ワークフロー (ReviewWorkflows というフィーチャーフォルダのもの) で使用されているワークフローフォームやリソースを使って、まったくカスタムな独自の承認ワークフローを実現しています。
また、ワークフローフォームに初期値 (デフォルト値) を渡すサンプルとしても良いサンプルです。
- グループ承認ワークフロー (GroupApproval)
これも、レビューワークフローに次いで、非常にマニアックな技です。
実は、GAC の中に、カスタマイズを目的として Microsoft.Office.Workflow 名前空間の中のワークフロークラス EADocumentApproval (及び関連して使うクラスとして EADocumentApprovalStopReplicatorException, EawfUser) というものが入っています (EA は、東アジア向けに作成されたという意味です)。このワークフローのカスタマイズを カスタマイズガイド付きで提供しているサンプルがこれになります。
大変複雑なワークフローですが、このワークフローを継承して、ガイドに書かれているお作法で作成することで、この複雑なワークフローをカスタマイズした処理を作成し、ワークフローフィーチャーとしてデプロイして使用することができます。
※ なお、API などの理解を目的としたサンプルコードです。いくつか細かな配慮がなされていない実装なども含まれていますので、活用する際は、こうした点を改良してお使いください。