Пример #1
0
        public async Task <SearchResult <ProcessInstanceResult> > Handle(CreateProcessInstanceCommand request, CancellationToken cancellationToken)
        {
            var processFile = await _processFileCommandRepository.Get(request.ProcessFileId, cancellationToken);

            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 _processInstanceCommandRepository.Add(pi, cancellationToken);

                result.Add(ProcessInstanceResult.ToDto(pi));
            }

            await _processInstanceCommandRepository.SaveChanges(cancellationToken);

            return(new SearchResult <ProcessInstanceResult>
            {
                Content = result
            });
        }
Пример #2
0
        public async Task Handle(ProcessInstanceCreatedEvent message, CancellationToken token)
        {
            var record = ProcessInstanceAggregate.New(new List <DomainEvent>
            {
                message
            });
            await _processInstanceCommandRepository.Add(record, token);

            await _processInstanceCommandRepository.SaveChanges(token);
        }
Пример #3
0
 public async Task RegisterProcessInstance(ProcessInstanceAggregate processInstance, CancellationToken token)
 {
     await _processInstanceCommandRepository.Add(processInstance, token);
 }