/// <summary> /// 지정된 예외정보를 포함하는 응답메시지를 빌드합니다. /// </summary> /// <param name="exceptions"></param> /// <returns></returns> public static ResponseMessage CreateResponseMessageWithException(params Exception[] exceptions) { var responseMsg = new ResponseMessage(); foreach(var ex in exceptions) responseMsg.AddError(ex); return responseMsg; }
/// <summary> /// DATA 처리를 위한 요청정보를 처리해서, 응답정보를 빌드해서 반환합니다. /// </summary> /// <param name="requestMessage">요청 메시지</param> /// <returns>응답 메시지</returns> public virtual ResponseMessage Execute(RequestMessage requestMessage) { var responseMsg = new ResponseMessage(); if(IsDebugEnabled) log.Debug("요청정보에 따른 작업을 시작합니다..."); if(requestMessage == null) { if(log.IsWarnEnabled) log.Warn("요청 정보가 NULL입니다."); responseMsg.Errors.Add(new ErrorMessage { Code = 0, Message = DataServiceTool.NoRequestProvided }); return responseMsg; } TransactionScope txScope = null; try { // 1. 사전 작업 // responseMsg.MessageId = requestMessage.MessageId; if(requestMessage.Transactional) { if(IsDebugEnabled) log.Debug("요청작업이 Transaction을 필요로 하여, Transaction을 시작합니다..."); txScope = AdoTool.CreateTransactionScope(TransactionScopeOption.Required, IsolationLevel.ReadCommitted); } // // 2. 본 작업 // ExecuteInternal(requestMessage, responseMsg); // 3. 사후 작업 // if(txScope != null) { txScope.Complete(); if(IsDebugEnabled) log.Debug("요청작업의 Transaction을 Commit 했습니다."); } } catch(Exception ex) { responseMsg.AddError(ex); if(log.IsErrorEnabled) log.Error("요청정보에 따른 작업처리 중 예외가 발생했습니다.", ex); if(txScope != null) txScope.Dispose(); } if(IsDebugEnabled) log.Debug("요청정보에 따른 작업을 완료했습니다!!! Request MessageId=[{0}], Response MessageId=[{1}]", requestMessage.MessageId, responseMsg.MessageId); return responseMsg; }