У меня есть приложение для обработки данных, оно имеет несколько рабочих процессов, которые извлекают данные и генерируют отчет.
Рабочие процессы принимают список экстракторов данных и службы отчетов.
Рабочий процесс определяется во время выполнения.
Я настроил создание рабочего процесса, используя карту структуры, учитывая ключ рабочего процесса, он сгенерирует экземпляр рабочего процесса. Я новичок в структурировании карты, и вот первая конфигурация, которую я получил для работы.
Это выглядит правильно или я что-то пропустил? Есть ли лучший способ настроить это?
Вот класс реестра:
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();