データ処理アプリケーションがあり、データを抽出してレポートを生成するいくつかのワークフローがあります。
ワークフローには、データエクストラクタとレポートサービスの一覧があります。
実行するワークフローは実行時に決定されます。この構造マップの設定を行うより良い方法はありますか?
構造マップを使用してワークフローの作成を設定しました。ワークフローのキーを指定すると、ワークフローのインスタンスが生成されます。私は構造マップを初めて学びました。ここで私が働かなければならない最初の構成です。
これは正しいか、私は何かを見逃しましたか?これを設定するより良い方法はありますか?ここで
は、レジストリのクラスである:ここで
class WorkflowRegistry : Registry
{
public WorkflowRegistry()
{
var container = new Container(x =>
{
x.For<DossierExtraction.Library.Interfaces.IProgressReporter>().Use<ProgressReporter>();
x.For<IDossierService>().Use<DossierService>();
x.For<IReportingService>().Use<VendorReportingService>().Named("VendorReport");
x.For<IReportingService>().Use<ClientReportingService>().Named("ClientReport");
});
For<IWorkflow>().Add(x => new GenericWorkflow(
new List<IExtractionService>() { container.GetInstance<DossierExtractor>(), container.GetInstance<NativeExtractor>(), container.GetInstance<TranslationExtractor>() },
container.GetInstance<IReportingService>("VendorReport")
)).Named("VendorWorkflow");
For<IWorkflow>().Add(x => new GenericWorkflow(
new List<IExtractionService>() { container.GetInstance<TranslationExtractor>() },
container.GetInstance<IReportingService>("ClientReport")
)).Named("Clientflow");
}
}
は、私のアプリケーションでレジストリクラスの使用を示す抜粋です。
ObjectFactory.Initialize(x =>
{
x.AddRegistry<WorkflowRegistry>();
});
var workflow = ObjectFactory.GetNamedInstance<IWorkflow>(workflowKey);
workflow.Run();