2012-02-08 8 views
1

私は、invokeworkflowapplicationを使用していくつかの目的でワークフローアクティビティを起動するC#アプリケーションを実行しています。私は自分のアプリケーションから起動しているすべてのフロー間で静的クラスを共有できるようにしたいと考えています(シングルトンクラスのいくつかの並べ替えは、いつでもすべてアクセスできます)。WorkFlow Application/SIngelton Workflow間の変数の共有

私が起動しているフローをシングルトンのコンテキストで実行する方法はありますか?

ありがとうございます!

答えて

3

異なるワークフローとインスタンス間でデータを共有する良い方法は、workflowInstanceExtensionを作成することです。この拡張は、アプリケーションによって追加され、同じインスタンスがすべてのWorkflowApplication、呼び出し元またはサービスに使用される必要があるため、「シングルトン」になります。

例:

MyDataSharingExtension dse = new MyDataSharingExtension(); 

WorkflowApplication wfApp1 = new WorkflowApplication(); 
wfApp1.Extensions.Add(dse); 

WorkflowApplication wfApp2 = new WorkflowApplication(); 
wfApp2.Extensions.Add(dse); 

その後、活動の内側に、あなたはワークフローレベル(ないコード)でデータが必要な場合は、あなたが取得するために、カスタムアクティビティを作ることができ

context.GetExtension<MyDataSharingExtension>().GetData(); 

を呼び出すことができますデータを変数に格納します。

あなたのニーズに合わない場合は、enterprise variables

の実装をご覧ください
1

ワークフロー内で必要なVB式を使用すると、シングルトンオブジェクトにアクセスできます。 Extensionsコレクションを使用して、同じオブジェクトを各WorkflowApplicationに追加することもできます。その場合は、カスタムアクティビティの中でオブジェクトを取得することはできますが、VB式は使用しないでください。