0

共有リソース (ファイルなど) で機能する一連のカスタム アクティビティを作成したいと考えています。これらのカスタム アクティビティは、多数のワークフローで使用され、それぞれがこの共有リソースを共有します。私の目標は、これらのワークフローをできるだけ簡単に作成できるようにすることです。これは、それぞれがいくつかの基本的なアクティビティを再配置しただけだからです。

InArgument を使用してこのリソースを各アクティビティに渡すことができましたが、これは面倒なので、引数が不要になるように単純化する方法を考えていました。

また、このリソースを 1 か所で初期化して、すべてのワークフローがリソースが既に存在すると想定できるようにすることは可能でしょうか?

4

1 に答える 1

-1

必要に応じて、ワークフロー拡張機能の使用法を調べることができます。基本的に、「サービスロケーター」パターンを活用します。

所有しているこのファイルにアクセス/変更する方法を知っているクラスを定義します。ResourceLocatorと呼ばれるこのクラスがIResourceLocatorインターフェースを実装するとします。次に、ワークフローホストを作成するときに、これを実行します

class ServiceLocator:IServiceLocator
{

public FileStream GetFile(string path){
}

}

//ここでWFホストを開始しますhost.Extensions.Add(()=> {new ResourceLocator();});

次に、カスタムアクティビティ内から実行できます

context.GetExtension<IResourceLocator>().GetFile(pathToFile);

基本的に、この拡張機能は、ワークフロー間で共通のコードを共有するための手段になります。別のアセンブリに分割して、別のワークフロープロジェクト間で共有できます。

于 2012-07-23T08:46:51.533 に答える