public static ElsaIndexingOptions UseElasticsearch(this ElsaIndexingOptions options, Action <ElsaElasticsearchOptions> configure) { options.Services.Configure(configure); options.Services .AddScoped <IWorkflowDefinitionSearch, WorkflowDefinitionSearch>() .AddScoped <IWorkflowInstanceSearch, WorkflowInstanceSearch>() .AddScoped <IWorkflowDefinitionIndexer, WorkflowDefinitionIndexer>() .AddScoped <IWorkflowInstanceIndexer, WorkflowInstanceIndexer>() .AddSingleton <ElasticsearchContext>() .AddScoped(services => { var context = services.GetRequiredService <ElasticsearchContext>(); var indexName = services.GetRequiredService <IOptions <ElsaElasticsearchOptions> >().Value.WorkflowInstanceIndexName; return(new ElasticsearchStore <ElasticWorkflowInstance>(context, indexName)); }) .AddScoped(services => { var context = services.GetRequiredService <ElasticsearchContext>(); var indexName = services.GetRequiredService <IOptions <ElsaElasticsearchOptions> >().Value.WorkflowDefinitionIndexName; return(new ElasticsearchStore <ElasticWorkflowDefinition>(context, indexName)); }) .AddAutoMapperProfile <ElasticsearchProfile>() .AddStartupTask <ElasticsearchInitializer>(); return(options); }
public static ElsaOptionsBuilder UseIndexing(this ElsaOptionsBuilder options, Action <ElsaIndexingOptions> configure) { var indexingOptions = new ElsaIndexingOptions(options.Services); configure.Invoke(indexingOptions); ServiceRegistrar.AddMediatRClasses(options.Services, new[] { Assembly.GetExecutingAssembly() }); return(options); }