次の名前のクラスを使用しています。
public class ProcessFlowPersistenceIOParticipant : PersistenceIOParticipant
WF4 フレームワークの System.Activities.Persistence.PersistenceIOParticipant から継承します。
BeginOnLoad(..) メソッドをオーバーライドしたいと思います。
このオーバーライドでは、ワークフロー インスタンスの逆シリアル化をインターセプトし、ビジネス エンティティをエンティティ データベースからエンティティ ワークフロー変数に挿入したいと考えています。
BeginOnLoad は、ワークフロー インスタンスがインスタンス ストアから読み込まれるときに発生します。
経由:workflowApplication.Load(workflowInstanceGuid);
readwritevalues ディクショナリ内にワークフロー GUID が表示されます。
名前空間 "urn:schemas-microsoft-com:System.Activities/4.0/properties" に一致する readWriteValues.Keys でキーを見つけます。
次に、GUIDは内部にあります:
値 = readWriteValues[xName]; _workflowInstanceId = ((System.Activities.Runtime.ActivityExecutor)value).WorkflowInstanceId;
ActivityExecutor は内部クラスであるため、デバッガーを介してアクセスできますが、コードではアクセスできません。
では、BeginOnLoad 内で読み込まれているワークフロー インスタンスを特定する方法はありますか?
どんなヒントでも大歓迎です。
マイク
この質問は、 BeginOnSave 内からワークフロー ID にアクセスするのに似ています。ただし、BeginOnLoad の場合、ワークフロー インスタンス GUID を取得するために使用できるアクティビティ実行コンテキストはありません。