/// <summary> /// Метод проверки данных запроса. /// Вызывается Ядром перед передачей объекта в прикладной код. /// </summary> /// <remarks> /// Метод проверяет, чтобы наименование описания структуры иерархии в /// метаданных было задано (явно или в результате разбора XML-запроса). /// </remarks> public override void Validate() { // Вызываем базовую реализацию - проверка свойств базового класса base.Validate(); // Наименование описания структуры иерархии в метаданных должно // быть задано (явно или в результате разбора XML-запроса): XRequest.ValidateRequiredArgument(MetaName, "MetaName"); }
/// <summary> /// Метод выполнения операции, типизированная реализация /// </summary> /// <param name="oRequest">Объект-запрос на выполнение операции</param> /// <param name="oContext">Представление контекста выполнения операции</param> /// <returns> /// Экземпляр объекта-результата выполнения операции /// </returns> public XResponse Execute(XDeleteObjectRequest oRequest, IXExecutionContext oContext) { // Проверка параметров запроса XRequest.ValidateRequiredArgument(oRequest.TypeName, "XDeleteObjectRequest.TypeName"); XRequest.ValidateRequiredArgument(oRequest.ObjectID, "XDeleteObjectRequest.ObjectID"); DomainObjectData objData = DomainObjectData.CreateStubLoaded(oContext.Connection, oRequest.TypeName, oRequest.ObjectID); XObjectRights rights = XSecurityManager.Instance.GetObjectRights(objData); if (!rights.AllowDelete) { throw new XSecurityException(String.Format( "Выполнение операции невозможно: нет прав на удаление объекта \"{0}\" ({1}[oid='{2}'])", objData.TypeInfo.Description, oRequest.TypeName, oRequest.ObjectID )); } // Вызываем метод подсистемы Storage (уровень Level-2); экземпляр // Storage представлен в рамках контекста выполнения опеарции return(new XDeleteObjectResponse(XStorageGateway.Delete(oContext, oRequest.TypeName, oRequest.ObjectID))); }