1

ワークフローのほぼ全体を対象とするEnableModificationActivityを持つ、かなり単純な順次承認ワークフローがあります。私の変更フォームは、ワークフローでまだ発生していない承認ステップを有効/無効にする機能をユーザーに提供するASPXページです。ワークフローは複数回変更できるため、ワークフローの現在の状態を反映するようにフォームに表示します。つまり、現在有効または無効になっているアクティビティを表示する必要があります。

私はこれについて少し後で共有する不格好な解決策を思いついたが、これを実行するためのクリーンな方法があると信じなければならない。

4

1 に答える 1

0

だからここに私がとったアプローチがあります...

  1. XML シリアル化が可能な特定のワークフローの状態情報を保持するための Plain Old CLR Object (POCO) クラスを作成しました。これを「状態オブジェクト」と呼びます。

  2. 特定の SPWorkflow の単一の状態オブジェクトを読み込んで保存できる「WorkflowStateManager」という再利用可能なクラスを作成しました。このクラスは、ワークフローと変更フォームの両方からアクセスできます。

    • 保存状態の実装:
      1. XML はオブジェクトを文字列にシリアライズします
      2. SPWorkflow リスト アイテムのプロパティ バッグにシリアル化された文字列を設定し、プロパティ バッグの Update() メソッドを呼び出します。
    • Load State 実装 (基本的に Save State 実装の逆)
      1. SPWorkflow リスト アイテムのプロパティ バッグからシリアル化された文字列を取得します。
      2. XML 文字列を状態オブジェクトに逆シリアル化します
  3. ワークフローがアクティブ化されたら、新しい状態オブジェクトを構築し、さまざまなプロパティを初期化し、WorkflowStateManager を使用して保存します。

  4. ワークフローが進行するにつれて、次の方法で必要に応じて状態オブジェクトを読み込んで更新します。

    • WorkflowStateManager を使用して、現在の状態オブジェクトをロードします
    • 状態オブジェクトの値に基づいてワークフローの決定を行う
    • 状態オブジェクトに必要な変更を加えます
    • WorkflowStateManager を使用して状態オブジェクトを保存する
  5. これで、変更フォームは、WorkflowStateManager を使用して状態オブジェクトをロード、操作、および保存し、ワークフローの現在の状態をユーザーに公開することもできます。

これが誰かの役に立てば幸いです。

于 2009-01-19T18:29:15.760 に答える