/// <summary> /// Метод исполнения команды. /// </summary> /// <param name="command">Команда.</param> public void ExecuteBlackboardCommand(Command command) { if (command == null) { return; } Exception error = null; if (command.CommandID == GeneralServiceCommands.UpdateEntityCollection || command.CommandID == GeneralServiceCommands.UpdateEntity) { OnUpdateEntityCommand(command); } else if (command.CommandID == GeneralServiceCommands.CloseService) { Close(); } else { error = new NotSupportedException(String.Format("Компонента {0} не поддерживает команду с CommandID:{1}", BlackboardService.ServiceName, DebugNames.GetDebugName(command.CommandID))); } // если есть канал ответа - отсылаем ошибку if (command.ResponseChannel != null) { object data = null; if (error != null) { data = new ErrorResult(BlackboardService.ServiceId, error, "Ошибка при исполнении команды в Blackboard"); } command.SendResponseData(data); } else if (error != null) { throw error; } }
/// <summary> /// Метод добавления нового сыбытия. /// </summary> /// <param name="newEvent">Новое событие.</param> public void AddEvent(ref CoreInterfaces.Event newEvent) { try { if (!newEvent.PublishToDataBase) { // внутреннее событие, не имеющее отражения в базе данных событий return; } // добавляем событие AddObject(ref newEvent); } catch (Exception ex) { // записать ошибку в лог Logger.Error(ex, "Ошибка добавления нового события в БД. Событие: " + DebugNames.GetDebugName(newEvent.Type), ex); } }