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 async Task <IActionResult> Add([FromBody] CreateProcessInstanceCommand createProcessInstanceCommand, CancellationToken cancellationToken) { try { var result = await _mediator.Send(createProcessInstanceCommand, cancellationToken); return(new OkObjectResult(result)); } catch (UnknownProcessFileException ex) { return(this.ToError(new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("bad_request", ex.Message) }, HttpStatusCode.NotFound, Request)); } }