※ 以下、Tech ED T-405 セッションに関するフォローアップ記事 Part 6 です。
- SharePoint Designer のカスタムアクティビティの開発で workflowProperties と同等の変数を使うには
- SharePoint ワークフローで Modification Form (修正フォーム) を開発する際のいくつかのポイント
- Replicator を使いこなす (実行時にワークフローの流れを変える)
- SharePoint ワークフローにおけるカスタムなワークフローステータスの設定
- SharePoint ワークフロー : 上級者のための IListItemService の活用
- SharePoint の Workflow 用 Web Service を使ってシステム連携をおこなう
環境:
Microsoft Office SharePoint Server 2007
Visual Studio 2005 (及び Workflow 用の extensions)
Office SharePoint Server 2007 SDK
こんにちは。
今日は、小高(エバンジェリスト)の手術快気祝いのため、どうしてもあと30分で書ききる必要があります。(結局、昼すぎから仕事はできませんでした、、、しかも私は幹事ですのでさぼるわけにはいかないのです)
さて、さいごのブログ Tech ED ですが、これは、ECM Starter Kit などでもサンプルがありませんので、コードを含め記載します。
SharePoint ワークフローのシステム連携のシナリオです。ワークフローとシステム間を同期的に連携したいという場合 (例: ワークフローのアクティビティをある時点で止めて、外部システムでデータの処理をしおわったら、次のアクティビティに進める、など)、タスクを有効活用すると便利です。ワークフローからシステム用にタスクを生成して外部システム側に通知し、外部システム側で所定の処理が終了したら AlterTask メソッドなどを使用してタスクを完了させることで、同期連携を実現できます (2007/08/27 赤字追記 : すみません、急いで書きすぎたので、補足しました)。リモートのシステムの場合には、独自に Web サービスを作成して、そこから SharePoint のオブジェクト (Microsoft.SharePoint.dll など) にアクセスして更新するという処理で実現可能でしょう。しかし、例えば、不特定な SharePoint のサイトと連携をするアプリケーションなどを連想して頂くとわかりますが (例:独自システムの側から連携先の SharePoint の URL を入力して接続する、など)、この方法では、毎回接続先のサイトに開発した Web サービスをインストールしておかなければなりません。
こうした場合、もともと SharePoint がもっている Workflow 用の Web サービスを使えば解決されることがあります。
SharePoint をインストールされている環境があれば、http://<your site>/_vti_bin/Workflow.asmx にアクセスしてみてください。上述したタスク関連の更新メソッド (AlterToDo など) が存在しているのがおわかり頂けるでしょう。また、メソッドをみて頂くとわかりますが、StartWorkflow なども存在しています。つまり、リモートから特定のワークフローを開始することもできるようになっています。(SharePoint では、WF では普通におこなわれる、WorkflowRuntime を取得してインスタンスを開始する方法というのはサポートされていませんので、WF に精通されている方は注意してください。)
今日は、その使い方について非常に簡単ではありますが、サンプルをご紹介します。(すみません、セッションでは、もう少し凝ったデモをお見せしたかったのですが、煩雑にしないよう、このブログでは簡単なサンプルをのせておきます、、、)
使い方は難しくありません。が、以下の通り、タスクの ItemUrl を設定する必要などがあるなど、引数に何を入れて良いか、最初は迷われると思いますので参考にしてください。
無論、実行前に、Web 参照の追加をおこなってプロキシコードを作成しておきます。(以下で、FabrikamSystem.localhost は Web 参照の追加で追加されたプロキシオブジェクトの名称とします。)
/////////////////////////// Sample 1 : get task data from remote site// (何も設定していないと ows_PercentComplete や ows_Body は null なので要注意しましょう ,,,)/////////////////////////FabrikamSystem.localhost.Workflow wf = new FabrikamSystem.localhost.Workflow();wf.Url = @"http://kkdeveva01/sites/officedemo/_vti_bin/Workflow.asmx";wf.UseDefaultCredentials = true;wf.Credentials = System.Net.CredentialCache.DefaultCredentials;wf.PreAuthenticate = true;//// get task data (item id = 44, task list guid = 50CA0DD9-BD63-4E80-BB98-E62A4E3FA7C6)//XmlNode node = wf.GetWorkflowTaskData(@"http://kkdeveva01/sites/officedemo/Lists/Tasks/44_.000", 44, new Guid("50CA0DD9-BD63-4E80-BB98-E62A4E3FA7C6"));MessageBox.Show(node.Attributes["ows_Title"].Value);/////////////////////////// Sample 2 : update task data from remote site/////////////////////////FabrikamSystem.localhost.Workflow wf = new FabrikamSystem.localhost.Workflow();wf.Url = @"http://kkdeveva01/sites/officedemo/_vti_bin/Workflow.asmx";wf.UseDefaultCredentials = true;wf.Credentials = System.Net.CredentialCache.DefaultCredentials;wf.PreAuthenticate = true;XmlDocument taskData = new XmlDocument();taskData.LoadXml(@"<z:row xmlns:z=""#RowsetSchema""><Body><div>送信テスト成功!</div></Body><PercentComplete>0.500000000000000</PercentComplete></z:row>");XmlNode result = wf.AlterToDo(@"http://kkdeveva01/sites/officedemo/Lists/Tasks/44_.000", 44, new Guid("50CA0DD9-BD63-4E80-BB98-E62A4E3FA7C6"), taskData);
尚、update 処理で使用している <z:row> の root エレメントですが、ここは使用されていないため、<dummynode> などで設定してもそのまま動作します。(中の child エレメントのみが参照されています。)
Categories: Uncategorized
I just want to say you ROCK!!!
You are the only person in the entire web world who actually knows how to use this webservice without having to specify a document item!!
Thank you x
LikeLike
※ 以下、Tech ED T-405 セッションに関するフォローアップ記事 Part 2 です。 SharePoint Designer のカスタムアクティビティの開発で workflowProperties
LikeLike
※ 以下、Tech ED T-405 セッションに関するフォローアップ記事 Part 3 です。 SharePoint Designer のカスタムアクティビティの開発で workflowProperties
LikeLike
※ 以下、Tech ED T-405 セッションに関するフォローアップ記事 Part 4 です。 SharePoint Designer のカスタムアクティビティの開発で workflowProperties
LikeLike
※ 以下、Tech ED T-405 セッションに関するフォローアップ記事 Part 5 です。 SharePoint Designer のカスタムアクティビティの開発で workflowProperties
LikeLike
今回は VSTO からのワークフローの開始について取り上げたいと思います。 VSTO を利用した Office ドキュメントをワークフローのフロントエンドとして利用する場合、リボン UI や操作ウィンドウからワークフローを操作するようなケースがあるとは思います。
LikeLike