public async Task Handle(ProcessFileAddedEvent message, CancellationToken token) { var caseWorkerTask = ProcessFileAggregate.New(new DomainEvent[] { message }); await _processFileCommandRepository.Add(caseWorkerTask, token); await _processFileCommandRepository.SaveChanges(token); }
private void InitializeDatabase(IApplicationBuilder app) { using (var scope = app.ApplicationServices.GetRequiredService <IServiceScopeFactory>().CreateScope()) { using (var context = scope.ServiceProvider.GetService <BPMNDbContext>()) { context.Database.Migrate(); if (context.ProcessFiles.Any()) { return; } var pathLst = Directory.EnumerateFiles(Path.Combine(_env.ContentRootPath, "Bpmns"), "*.bpmn").ToList(); foreach (var path in pathLst) { var bpmnTxt = File.ReadAllText(path); var name = Path.GetFileName(path); var processFile = ProcessFileAggregate.New(name, name, name, 0, bpmnTxt); context.ProcessFiles.Add(processFile); } context.DelegateConfigurations.Add(DelegateConfigurationAggregate.Create("GetWeatherInformationDelegate", typeof(GetWeatherInformationDelegate).FullName)); context.SaveChanges(); } } }
public Task Update(ProcessFileAggregate processFile, CancellationToken token) { var record = _processFiles.First(_ => _.AggregateId == processFile.AggregateId); _processFiles.Remove(record); _processFiles.Add((ProcessFileAggregate)processFile.Clone()); return(Task.CompletedTask); }
public async Task Update(ProcessFileAggregate processFile, CancellationToken token) { var result = await _dbContext.ProcessFiles.FirstOrDefaultAsync(_ => _.Id == processFile.AggregateId, token); result.Name = processFile.Name; result.Description = processFile.Description; result.Payload = processFile.Payload; result.Status = processFile.Status; result.UpdateDateTime = processFile.UpdateDateTime; result.Version = processFile.Version; }
public async Task <bool> Handle(UpdateProcessFileCommand request, CancellationToken cancellationToken) { var processFile = await _eventStoreRepository.GetLastAggregate <ProcessFileAggregate>(request.Id, ProcessFileAggregate.GetStreamName(request.Id)); if (processFile == null || string.IsNullOrWhiteSpace(processFile.AggregateId)) { _logger.LogError($"Cannot update process file because it doesn't exist : '{request.Id}'"); throw new UnknownProcessFileException(request.Id); } processFile.Update(request.Name, request.Description); await _commitAggregateHelper.Commit(processFile, ProcessFileAggregate.GetStreamName(request.Id), cancellationToken); return(true); }
public static ProcessFileResult ToDto(ProcessFileAggregate processFile) { return(new ProcessFileResult { Id = processFile.AggregateId, Version = processFile.Version, CreateDateTime = processFile.CreateDateTime, Description = processFile.Description, FileId = processFile.FileId, NbInstances = processFile.NbInstances, Name = processFile.Name, Payload = processFile.Payload, Status = Enum.GetName(typeof(ProcessFileStatus), processFile.Status), UpdateDateTime = processFile.UpdateDateTime }); }
public ServerBuilder AddProcessFiles(List <string> lst) { var processFiles = new ConcurrentBag <ProcessFileAggregate>(); foreach (var path in lst) { var bpmnTxt = File.ReadAllText(path); var name = Path.GetFileName(path); var processFile = ProcessFileAggregate.New(name, name, name, 0, bpmnTxt); processFiles.Add(processFile); } _services.AddSingleton <IProcessFileCommandRepository>(new InMemoryProcessFileCommandRepository(processFiles)); _services.AddSingleton <IProcessFileQueryRepository>(new InMemoryProcessFileQueryRepository(processFiles)); return(this); }
public static ProcessFileModel ToModel(this ProcessFileAggregate processFile) { return(new ProcessFileModel { CreateDateTime = processFile.CreateDateTime, Description = processFile.Description, FileId = processFile.FileId, Id = processFile.AggregateId, Name = processFile.Name, Payload = processFile.Payload, Status = processFile.Status, UpdateDateTime = processFile.UpdateDateTime, NbInstances = processFile.NbInstances, Version = processFile.Version }); }
public ServerBuilder AddProcessFiles(List <string> lst) { var builder = _services.BuildServiceProvider(); var commitAggregateHelper = (ICommitAggregateHelper)builder.GetService(typeof(ICommitAggregateHelper)); var processFiles = new ConcurrentBag <ProcessFileAggregate>(); foreach (var path in lst) { var bpmnTxt = File.ReadAllText(path); var name = Path.GetFileName(path); var processFile = ProcessFileAggregate.New(name, name, name, 0, bpmnTxt); processFiles.Add(processFile); commitAggregateHelper.Commit(processFile, processFile.GetStreamName(), CancellationToken.None).Wait(); } _services.AddSingleton <IProcessFileCommandRepository>(new InMemoryProcessFileCommandRepository(processFiles)); _services.AddSingleton <IProcessFileQueryRepository>(new InMemoryProcessFileQueryRepository(processFiles)); return(this); }
public async Task <CreateProcessFileResult> Handle(CreateProcessFileCommand request, CancellationToken cancellationToken) { var payload = request.Payload; if (string.IsNullOrWhiteSpace(request.Payload)) { payload = _options.DefaultBPMNFile; } var processFile = ProcessFileAggregate.New(Guid.NewGuid().ToString(), request.Name, request.Description, 0, payload); var streamName = ProcessFileAggregate.GetStreamName(processFile.AggregateId); await _commitAggregateHelper.Commit(processFile, streamName, cancellationToken); _logger.LogInformation("Process file has been added"); return(new CreateProcessFileResult { Id = processFile.AggregateId }); }
public async Task <PublishProcessFileResult> Handle(PublishProcessFileCommand request, CancellationToken cancellationToken) { var processFile = await _eventStoreRepository.GetLastAggregate <ProcessFileAggregate>(request.Id, ProcessFileAggregate.GetStreamName(request.Id)); if (request == null || string.IsNullOrWhiteSpace(processFile.AggregateId)) { throw new UnknownProcessFileException(request.Id); } var newProcessFile = processFile.Publish(); await _commitAggregateHelper.Commit(processFile, ProcessFileAggregate.GetStreamName(processFile.AggregateId), cancellationToken); await _commitAggregateHelper.Commit(newProcessFile, ProcessFileAggregate.GetStreamName(newProcessFile.AggregateId), cancellationToken); return(new PublishProcessFileResult { Id = newProcessFile.AggregateId }); }
private void InitializeDatabase(IApplicationBuilder app) { using (var scope = app.ApplicationServices.GetRequiredService <IServiceScopeFactory>().CreateScope()) { using (var context = scope.ServiceProvider.GetService <BPMNDbContext>()) { context.Database.Migrate(); if (context.ProcessFiles.Any()) { return; } var commitAggregateHelper = scope.ServiceProvider.GetService <ICommitAggregateHelper>(); var pathLst = Directory.EnumerateFiles(Path.Combine(_env.ContentRootPath, "Bpmns"), "*.bpmn").ToList(); foreach (var path in pathLst) { var bpmnTxt = File.ReadAllText(path); var name = Path.GetFileName(path); var processFile = ProcessFileAggregate.New(name, name, name, 0, bpmnTxt); commitAggregateHelper.Commit(processFile, processFile.GetStreamName(), CancellationToken.None).Wait(); } } } }
public Task Add(ProcessFileAggregate processFile, CancellationToken token) { _processFiles.Add((ProcessFileAggregate)processFile.Clone()); return(Task.CompletedTask); }
public Task Update(ProcessFileAggregate processFile, CancellationToken token) { _dbContext.ProcessFiles.Update(processFile); return(Task.CompletedTask); }
public async Task <SearchResult <ProcessInstanceResult> > Handle(CreateProcessInstanceCommand request, CancellationToken cancellationToken) { var processFile = await _eventStoreRepository.GetLastAggregate <ProcessFileAggregate>(request.ProcessFileId, ProcessFileAggregate.GetStreamName(request.ProcessFileId)); if (processFile == null || string.IsNullOrWhiteSpace(processFile.AggregateId)) { _logger.LogError($"the process file '{request.ProcessFileId}' doesn't exist"); throw new UnknownProcessFileException(string.Format(Global.UnknownProcessFile, request.ProcessFileId)); } var processInstances = BPMNParser.BuildInstances(processFile.Payload, request.ProcessFileId); var result = new List <ProcessInstanceResult>(); foreach (var processInstance in processInstances) { var pi = ProcessInstanceAggregate.New(request.ProcessFileId, processFile.Name, processInstance.ElementDefs.ToList(), processInstance.Interfaces.ToList(), processInstance.Messages.ToList(), processInstance.ItemDefs.ToList(), processInstance.SequenceFlows.ToList()); await _commitAggregateHelper.Commit(pi, pi.GetStreamName(), cancellationToken); result.Add(ProcessInstanceResult.ToDto(pi)); } return(new SearchResult <ProcessInstanceResult> { Content = result }); }
public Task Add(ProcessFileAggregate processFile, CancellationToken token) { _dbContext.ProcessFiles.Add(processFile.ToModel()); return(Task.CompletedTask); }