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)); } }
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(); } }