ステータスや参加者などのワークフロー情報が SharePoint データベースのどこに保存されているかを把握しようとしています。ワークフローというテーブルがありますが、ドキュメントとワークフロー データ内のデータとの間の接続を見つけることができないようです。誰?
1 に答える
SharePoint ワークフローは Windows Workflow Foundation 3.5 に基づいているため、そこから得られる情報はすべて、SharePoint ワークフローに適用できる可能性が高いでしょう。これらのことの 1 つは、基本的にワークフローの現在の状態をシリアル化された形式でデータベース (または他の場所) に保存する、ワークフローの水和と脱水です。
SharePoint ワークフローは、次の 4 つのメカニズムに依存しています。
- ワークフロー テンプレート
- ... 協会
- ... インスタンス
ワークフロー テンプレートは、SharePoint Designer / Visual Studio で作成するものです。SharePoint デザイナーでは宣言型 *.XOML ファイルが生成され、Visual Studio では *.DLL が生成されます。ワークフローのすべてのロジック、割り当て先、参加者はそこに保存されます。
このワークフロー テンプレートは、SharePoint のリスト、コンテンツ タイプ、サイト、(非表示の) ワークフロー履歴リスト、ワークフロー タスク リストなどに関連付けます (使用しない場合でも)。この関連付けにより、ワークフローを関連付けると実行される関連付けフォームを持つこともできます。
ワークフロー インスタンスは、たとえばリスト アイテムで実行される実際のインスタンスです (インスタンス化では、フォームも表示できます)。このインスタンスは、テンプレートで実行するように指示したことを実際に実行します。
「ステータスや参加者などのワークフロー情報は、データベースのどこに保存されていますか?」という質問に進みましょう。
簡単な答え: そうではありません。
より長い答え: テーブルWorkflowAssociation
には関連付けが格納されます。したがって、XYZ を使用したワークフローは、 xyzなどにBaseID
関連付けられていることがわかりました (これは、ドキュメントとデータの間の接続です)。データベース内のテーブルには、実行中および過去のワークフローに関する情報が保存されます。したがって、ワークフロー インスタンスが実行されている場所、それが作成されたとき、およびその内容がわかります。この内部状態は役に立ちませんが、SP Designer で設計した状態をマップしていないため、単純に次のような状態です。 SharePoint 内部の「実行中/実行中でない/エラー」。ただし、列がありますSiteId
ListId
Workflow
ItemGUID
InternalState
InstanceData
. よくわかりませんが、ワークフローが脱水状態になると、現在の状態がそこに保存される可能性があります。どのエンコーディング/フォームで - わかりません。データベース内の実行中のワークフローで必要な情報 (現在の参加者) を見つけることはできません。
最も重要なのは、とにかくデータベースを調べる必要がないことです。
ステータスや参加者などの情報は、コードを介してのみ見つけることができます。さらに、ワークフローをデバッグして、そこにあるすべての情報を確認することもできます。この情報用のフィールドを作成して、単に「参加者」を表示することもできます。