2012-04-27 6 views
2

ステータスや参加者などのワークフロー情報がSharepointデータベースに保存されている場所を特定しようとしています。ワークフローと呼ばれるテーブルがありますが、文書とworflowデータ内のデータとの間の接続を見つけることはできません。誰でも?Sharepointワークフローテーブル

答えて

5

SharePointワークフローはWindows Workflow Foundation 3.5に基づいているため、その情報はSharePointワークフローに適用されます。これらのうちの1つはhydrating and dehydrating workflowsであり、ワークフローの現在の状態をシリアライズされた形式でデータベース(または他の場所)に保存します。

のSharePointワークフローは、4つのメカニズムに依存している:

  1. ワークフローテンプレート
  2. ...団体
  3. ...インスタンス

ワークフローテンプレートは、SharePoint Designerで作成しますものです/ Visual Studio SharePointデザイナを使用すると、Visual Studioの* .DLLという宣言的な* .XOMLファイルが生成されます。ワークフローのすべてのロジック、割り当て先、参加者がそこに格納されます。

このワークフローテンプレートは、たとえばリスト、コンテンツタイプ、SharePoint内のサイト、および(非表示の)ワークフロー履歴リストとワークフロータスクリスト(使用していない場合でも)を表示できます。この関連付けを使用すると、ワークフローを関連付けると実行される関連付けフォームを作成することもできます。

ワークフローインスタンスは、実際に実行されているインスタンスです。リスト項目(インスタンシエーションではフォームも提示できます)。このインスタンスは実際にあなたがテンプレートで行うように言ったものです。

質問:"ステータスと参加者のようなワークフロー情報はどこにデータベースに保存されていますか?"
短い答え:そうではありません。

回答:テーブルWorkflowAssociationには関連が保存されています。だから、BaseID XYZのワークフローは、ListIdなどのSiteId xyzに関連付けられていることがわかりました(これは、文書とデータの間の接続です)。データベースのWorkflowテーブルには、実行中および過去のワークフローに関する情報が格納されます。だから、ItemGUIDのワークフローインスタンスが実行されていることを知っています。作成されたときとそれが入っているものはInternalStateです。この内部状態はあなたを助けませんが、SPデザイナで必要とする状態をマップするわけではありません。 SharePointの内部にある「実行中/実行中ではない/エラー」のような状態です。しかし、列InstanceDataがあります。私は確信していませんが、いったんワークフローが脱水されると、現在の状態がそこに保存される可能性があります。どのようなエンコーディング/フォームで - いいえ、アイデア。データベース内の実行中のワークフローに関する情報(現在の参加者)を確認することはできません。
最も重要なこと:データベースを調べる必要はありません。

状況や参加者のような情報はコードでしか知ることができず、ワークフローをデバッグしてそこにあるすべての情報を表示することができます。また、この情報のフィールドを作成し、単に「参加者」を表示することもできます。