/// <summary> /// B層の終了処理を実装 /// </summary> /// <param name="parameterValue">引数クラス</param> /// <param name="returnValue">戻り値クラス</param> /// <remarks>業務コード親クラス1から利用される派生の末端</remarks> protected override void UOC_AfterAction(BaseParameterValue parameterValue, BaseReturnValue returnValue) { // 性能測定終了 this.perfRec.EndsPerformanceRecord(); // ACCESSログ出力----------------------------------------------- MyParameterValue myPV = (MyParameterValue)parameterValue; // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, レイヤ, // 画面名, コントロール名, メソッド名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // ------------ string strLogMessage = "," + myPV.User.UserName + "," + myPV.User.IPAddress + "," + "<<-----" + "," + myPV.ScreenId + "," + myPV.ControlId + "," + myPV.MethodName + "," + myPV.ActionType + "," + this.perfRec.ExecTime + "," + this.perfRec.CpuTime; // Log4Netへログ出力 LogIF.InfoLog("ACCESS", strLogMessage); // ------------------------------------------------------------- }
/// <summary> /// B層の開始処理を実装 /// </summary> /// <param name="parameterValue">引数クラス</param> /// <remarks>業務コード親クラス1から利用される派生の末端</remarks> protected override void UOC_PreAction(BaseParameterValue parameterValue) { // ACCESSログ出力----------------------------------------------- MyParameterValue myPV = (MyParameterValue)parameterValue; // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, レイヤ, // 画面名, コントロール名, メソッド名, 処理名 // ------------ string strLogMessage = "," + myPV.User.UserName + "," + myPV.User.IPAddress + "," + "----->>" + "," + myPV.ScreenId + "," + myPV.ControlId + "," + myPV.MethodName + "," + myPV.ActionType; // Log4Netへログ出力 LogIF.InfoLog("ACCESS", strLogMessage); // ------------------------------------------------------------- // 性能測定開始 this.perfRec = new PerformanceRecorder(); this.perfRec.StartsPerformanceRecord(); }
/// <summary> /// B層のシステム例外による異常終了の後処理を実装するUOCメソッド。 /// </summary> /// <param name="parameterValue">引数クラス</param> /// <param name="returnValue">戻り値クラス</param> /// <param name="bsEx">BusinessSystemException</param> /// <remarks>業務コード親クラス1から利用される派生の末端</remarks> protected override void UOC_ABEND(BaseParameterValue parameterValue, BaseReturnValue returnValue, BusinessSystemException bsEx) { // システム例外発生時の処理を実装 // TODO: // nullチェック if (this.perfRec == null) { // なにもしない } else { // 性能測定終了 this.perfRec.EndsPerformanceRecord(); // ACCESSログ出力----------------------------------------------- MyParameterValue myPV = (MyParameterValue)parameterValue; // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, レイヤ, // 画面名, コントロール名, メソッド名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + myPV.User.UserName + "," + myPV.User.IPAddress + "," + "<<-----" + "," + myPV.ScreenId + "," + myPV.ControlId + "," + myPV.MethodName + "," + myPV.ActionType + "," + this.perfRec.ExecTime + "," + this.perfRec.CpuTime + "," + bsEx.messageID + "," + bsEx.Message + "\r\n"; // OriginalStackTrace(ログ出力)の品質向上 if (this.OriginalStackTrace == "") { strLogMessage += bsEx.StackTrace; } else { strLogMessage += this.OriginalStackTrace; } // Log4Netへログ出力 LogIF.ErrorLog("ACCESS", strLogMessage); } // ------------------------------------------------------------- }
/// <summary> /// B層の業務例外による異常終了の後処理を実装するUOCメソッド。 /// </summary> /// <param name="parameterValue">引数クラス</param> /// <param name="returnValue">戻り値クラス</param> /// <param name="baEx">BusinessApplicationException</param> /// <remarks>業務コード親クラス1から利用される派生の末端</remarks> protected override void UOC_ABEND(BaseParameterValue parameterValue, BaseReturnValue returnValue, BusinessApplicationException baEx) { // 業務例外発生時の処理を実装 // TODO: // nullチェック if (this.perfRec == null) { // なにもしない } else { // 性能測定終了 this.perfRec.EndsPerformanceRecord(); // ACCESSログ出力----------------------------------------------- MyParameterValue myPV = (MyParameterValue)parameterValue; // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, レイヤ, // 画面名, コントロール名, メソッド名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + myPV.User.UserName + "," + myPV.User.IPAddress + "," + "<<-----" + "," + myPV.ScreenId + "," + myPV.ControlId + "," + myPV.MethodName + "," + myPV.ActionType + "," + this.perfRec.ExecTime + "," + this.perfRec.CpuTime + "," + baEx.messageID + "," + baEx.Message; // baEX // Log4Netへログ出力 LogIF.WarnLog("ACCESS", strLogMessage); } // ------------------------------------------------------------- }
/// <summary> /// B層の一般的な例外による異常終了の後処理を実装するUOCメソッド。 /// </summary> /// <param name="parameterValue">引数クラス</param> /// <param name="returnValue">戻り値クラス</param> /// <param name="ex">Exception</param> /// <remarks>業務コード親クラス1から利用される派生の末端</remarks> protected override void UOC_ABEND(BaseParameterValue parameterValue, ref BaseReturnValue returnValue, Exception ex) { // 一般的な例外発生時の処理を実装 // TODO: // nullチェック if (this.perfRec == null) { // なにもしない // リスロー throw ex; } else { // 性能測定終了 this.perfRec.EndsPerformanceRecord(); // キャスト MyParameterValue myPV = (MyParameterValue)parameterValue; // システム例外に振り替える用のワーク bool sysErrorFlag = false; string sysErrorMessageID = ""; string sysErrorMessage = ""; #region 例外の振替処理のIF文 if (ex.Message == "Other-Business") { // 業務例外へ変換 returnValue.ErrorFlag = true; returnValue.ErrorMessageID = "振替後"; returnValue.ErrorMessage = "振替後"; returnValue.ErrorInfo = "振り替える場合は、基本的にここを利用。"; } else if (ex.Message == "Other-System") { // システム例外へ振替 sysErrorFlag = true; sysErrorMessageID = "振替後"; sysErrorMessage = "振替後"; } #endregion #region ACCESSログ出力、リスローする・しない if (returnValue.ErrorFlag) { // 業務例外へ変換 // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, レイヤ, // 画面名, コントロール名, メソッド名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + myPV.User.UserName + "," + myPV.User.IPAddress + "," + "<<-----" + "," + myPV.ScreenId + "," + myPV.ControlId + "," + myPV.MethodName + "," + myPV.ActionType + "," + this.perfRec.ExecTime + "," + this.perfRec.CpuTime + "," + returnValue.ErrorMessageID + "," + returnValue.ErrorMessage; // Log4Netへログ出力 LogIF.WarnLog("ACCESS", strLogMessage); } else if (sysErrorFlag) { // システム例外へ振替 // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, レイヤ, // 画面名, コントロール名, メソッド名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + myPV.User.UserName + "," + myPV.User.IPAddress + "," + "<<-----" + "," + myPV.ScreenId + "," + myPV.ControlId + "," + myPV.MethodName + "," + myPV.ActionType + "," + this.perfRec.ExecTime + "," + this.perfRec.CpuTime + "," + sysErrorMessageID + "," + sysErrorMessage + "\r\n" + ex.StackTrace; // Log4Netへログ出力 LogIF.ErrorLog("ACCESS", strLogMessage); // 振替てスロー throw new BusinessSystemException(sysErrorMessageID, sysErrorMessage); } else { // そのまま // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, レイヤ, // 画面名, コントロール名, メソッド名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + myPV.User.UserName + "," + myPV.User.IPAddress + "," + "<<-----" + "," + myPV.ScreenId + "," + myPV.ControlId + "," + myPV.MethodName + "," + myPV.ActionType + "," + this.perfRec.ExecTime + "," + this.perfRec.CpuTime + "," + "other Exception" + "," + ex.Message + "\r\n" + ex.StackTrace; // Log4Netへログ出力 LogIF.ErrorLog("ACCESS", strLogMessage); // リスロー throw ex; } #endregion } }