/// <summary> /// 요청정보를 실행하여 응답정보를 반환합니다. /// </summary> /// <param name="requestDocument">요청정보</param> /// <param name="commandTimeout">요청 처리 제한 시간 (단위 : seconds, 기본값 : 90)</param> /// <returns>요청 처리 응답정보</returns> public virtual XdsResponseDocument Execute(XdsRequestDocument requestDocument, int? commandTimeout) { if(IsDebugEnabled) log.Debug("요청정보에 따른 Database 작업을 시작합니다..."); requestDocument.ShouldNotBeNull("requestDocument"); if(requestDocument == null) return XmlDataTool.CreateResponseWithError(new InvalidOperationException(MsgConsts.NoRequestProvided)); var responseDocument = new XdsResponseDocument(); TransactionScope txScope = null; try { if(IsDebugEnabled) log.Debug("요청문서 분석 및 응답문서를 초기화 합니다."); requestDocument.CopyRequestHeader(responseDocument); if(requestDocument.CommandTimeout > commandTimeout.GetValueOrDefault(90)) commandTimeout = requestDocument.CommandTimeout; if(requestDocument.Transaction) { if(IsDebugEnabled) log.Debug("요청문서에 Transaction 적용 옵션이 설정되어 있습니다. TransactionScope를 이용하여, 전체 요청을 Transaction 하에서 실행합니다."); txScope = AdoTool.CreateTransactionScope(TransactionScopeOption.Required, IsolationLevel.ReadCommitted); } //! 실제 요청 처리 ExecuteRequestCore(requestDocument, responseDocument); // Transaction을 Commit 한다 // if(txScope != null) { if(IsDebugEnabled) log.Debug("Transaction Commit을 시작합니다..."); txScope.Complete(); if(IsDebugEnabled) log.Debug("Transaction Commit에 성공했습니다.!!!"); } } catch(Exception ex) { responseDocument.ReportError(ex); } finally { if(txScope != null) txScope.Dispose(); } if(IsDebugEnabled) log.Debug("모든 요청을 처리하고, ResponseDocument를 반환합니다."); return responseDocument; }
/// <summary> /// 해당 제품 DB에 대해 요청정보를 처리한 후 결과를 반환합니다. /// </summary> /// <param name="xdsRequest"></param> /// <param name="productName"></param> /// <returns></returns> public static XdsResponseDocument Execute(XdsRequestDocument xdsRequest, string productName) { xdsRequest.ShouldNotBeNull("xdsRequest"); if(productName.IsWhiteSpace()) productName = AdoTool.DefaultDatabaseName; CheckProductExists(productName); return XmlDataTool.Execute(xdsRequest, productName); }