Exemple #1
0
        public async Task <APIResult> Update([FromBody] UpdateProcessCommand command)
        {
            var rs = await mediator.Send(command);

            return(new APIResult()
            {
                Result = rs
            });
        }
 public async Task <ActionResult <CommandResponse> > Update([FromBody] UpdateProcessCommand command)
 {
     try
     {
         return(await this.mediator.Send(command));
     }
     catch (Exception ex)
     {
         return(this.BadRequest(ex.Message));
     }
 }
Exemple #3
0
            public void Handle(UpdateProcessCommand message)
            {
                var acDomain          = _set._acDomain;
                var processRepository = _set._acDomain.RetrieveRequiredService <IRepository <Process, Guid> >();

                if (!acDomain.NodeHost.Processs.ContainsProcess(message.Input.Id))
                {
                    throw new NotExistException();
                }
                var entity = processRepository.GetByKey(message.Input.Id);

                if (entity == null)
                {
                    throw new NotExistException();
                }
                var bkState = _set._dic[entity.Id];

                entity.Update(message.Input);

                var  newState     = new ProcessDescriptor(acDomain, ProcessState.Create(entity), entity.Id);
                bool stateChanged = newState != bkState;

                lock (Locker)
                {
                    if (stateChanged)
                    {
                        Update(newState);
                    }
                }
                try
                {
                    processRepository.Update(entity);
                    processRepository.Context.Commit();
                }
                catch
                {
                    if (stateChanged)
                    {
                        Update(bkState);
                    }
                    processRepository.Context.Rollback();
                    throw;
                }
                if (stateChanged)
                {
                    _set._acDomain.PublishEvent(new ProcessUpdatedEvent(message.AcSession, entity));
                    _set._acDomain.CommitEventBus();
                }
            }