2

アクティビティの具体的なタイプを知らなくても、以前に永続化されたWF4アクティビティを再開(ロード)する方法を理解しようとしています。

永続化されたアクティビティをロードするには、そのアクティビティworkflowId(私が持っている)だけでなく、アクティビティのインスタンスも渡す必要があります-したがって、そのタイプを知る必要があります:

var workflowApplication = new WorkflowApplication(activity); // what type is activity?
workflowApplication.Load(workflowId);

問題は、それがいくつかのタイプの1つである可能性があることです。このアクティビティは、他のアクティビティやワークフロー内で使用することを目的としています。メッセージをメッセージキューに送信し、ブックマークしてから永続化します。対応するメッセージがメッセージキューを介して受信されると再開されますが、永続性データを調べないと、元のワークフローの正確な具体的なタイプがわかりません。これはキャッチ22のようです。アクティビティタイプを知らずにワークフローをロードすることはできません。また、ワークフローをロードしてその永続データを調べることなく、アクティビティタイプを知ることはできません。

私はここで何かが欠けているように感じます-アクティビティを知らずにホスティングWorkflowActivityを作成する方法、またはactivity作成する前に永続性データをリロードして実際のタイプを計算する方法はありWorkflowActivityますか?

4

1 に答える 1

2

WF API を介してそれを行うためのネイティブ サポートはありません。独自のソリューションを考え出す必要があります。

最速のアプローチ: InstancePromotedProperties テーブルを使用して独自のプロパティを保存するストア拡張機能。

おそらく正しいアプローチ: PersistenceIOParticipantは正しい方法のようです。アクティビティのタイプを含め、必要なものをすべて格納する独自のテーブルを作成するだけです。

カスタム アクティビティを使用して、永続化する前にどこかに保存します。さまざまな理由から、最善でも正しい方法でもありません。

于 2012-04-27T16:58:55.177 に答える