3

ステータスや参加者などのワークフロー情報が SharePoint データベースのどこに保存されているかを把握しようとしています。ワークフローというテーブルがありますが、ドキュメントとワークフロー データ内のデータとの間の接続を見つけることができないようです。誰?

4

1 に答える 1

6

SharePoint ワークフローは Windows Workflow Foundation 3.5 に基づいているため、そこから得られる情報はすべて、SharePoint ワークフローに適用できる可能性が高いでしょう。これらのことの 1 つは、基本的にワークフローの現在の状態をシリアル化された形式でデータベース (または他の場所) に保存する、ワークフローの水和と脱水です。

SharePoint ワークフローは、次の 4 つのメカニズムに依存しています。

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

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

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

ワークフロー インスタンスは、たとえばリスト アイテムで実行される実際のインスタンスです (インスタンス化では、フォームも表示できます)。このインスタンスは、テンプレートで実行するように指示したことを実際に実行します。

「ステータスや参加者などのワークフロー情報は、データベースのどこに保存されていますか?」という質問に進みましょう。
簡単な答え: そうではありません。

より長い答え: テーブルWorkflowAssociationには関連付けが格納されます。したがって、XYZ を使用したワークフローは、 xyzなどにBaseID関連付けられていることがわかりました (これは、ドキュメントとデータの間の接続です)。データベース内のテーブルには、実行中および過去のワークフローに関する情報が保存されます。したがって、ワークフロー インスタンスが実行されている場所、それが作成されたとき、およびその内容がわかります。この内部状態は役に立ちませんが、SP Designer で設計した状態をマップしていないため、単純に次のような状態です。 SharePoint 内部の「実行中/実行中でない/エラー」。ただし、列がありますSiteIdListIdWorkflowItemGUIDInternalStateInstanceData. よくわかりませんが、ワークフローが脱水状態になると、現在の状態がそこに保存される可能性があります。どのエンコーディング/フォームで - わかりません。データベース内の実行中のワークフローで必要な情報 (現在の参加者) を見つけることはできません。
最も重要なのは、とにかくデータベースを調べる必要がないことです。

ステータスや参加者などの情報は、コードを介してのみ見つけることができます。さらに、ワークフローをデバッグして、そこにあるすべての情報を確認することもできます。この情報用のフィールドを作成して、単に「参加者」を表示することもできます。

于 2012-04-30T07:29:35.050 に答える