Esempio n. 1
0
        /// <summary>業務処理を実装</summary>
        /// <param name="testParameter">引数クラス</param>
        private void UOC_メソッド名(TestParameterValue testParameter)
        { //メソッド引数にBaseParameterValueの派生の型を定義可能。

            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            TestReturnValue testReturn = new TestReturnValue();
            this.ReturnValue = testReturn;

            // ↓業務処理-----------------------------------------------------

            // 個別Dao
            LayerD myDao = new LayerD(this.GetDam());
            //myDao.xxxx(testParameter, ref testReturn);

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());
            cmnDao.ExecSelectScalar();

            // ↑業務処理-----------------------------------------------------
        }
Esempio n. 2
0
        /// <summary>業務処理を実装</summary>
        /// <param name="testParameter">引数クラス</param>
        private void UOC_SelectCount(TestParameterValue testParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            TestReturnValue testReturn = new TestReturnValue();
            this.ReturnValue = testReturn;

            // ↓業務処理-----------------------------------------------------

            switch ((testParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((testParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperCount.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperCount.xml";
                            break;
                    }

                    // 共通Daoを実行
                    // 戻り値を設定
                    testReturn.Obj = cmnDao.ExecSelectScalar();

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // 共通Daoを実行
                    // 戻り値を設定
                    testReturn.Obj = genDao.D5_SelCnt();

                    break;   

                default: // 個別Daoを使用する。
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.SelectCount(testParameter, testReturn);
                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(testParameter);
        }
Esempio n. 3
0
        /// <summary>データ件数取得処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_SelectCountMethod(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();
            this.ReturnValue = returnValue;

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            // 検索条件の生成&指定
            string whereSQL = this.SetSearchConditions(parameterValue, cmnDao);

            string p = ""; // パラメタ記号
            string s = ""; // 囲い記号開始
            string e = ""; // 囲い記号終了

            // 囲い文字の選択
            if (parameterValue.DBMSType == DbEnum.DBMSType.SQLServer)
            {
                p = "@";
                s = "[";
                e = "]";
            }
            else if (parameterValue.DBMSType == DbEnum.DBMSType.Oracle)
            {
                p = ":";
                s = "\"";
                e = "\"";
            }
            else
            {
                p = "@";
                s = "[";
                e = "]";
            }

            // SQLを設定して
            cmnDao.SQLText = string.Format(
                SELECT_COUNT_SQL_TEMPLATE,
                s + parameterValue.TableName + e, whereSQL)
                .Replace("_p_", p).Replace("_s_", s).Replace("_e_", e);

            // パラメタは指定済み

            // データ件数を取得
            returnValue.Obj = cmnDao.ExecSelectScalar();

            // ↑業務処理-----------------------------------------------------
        }
Esempio n. 4
0
        /// <summary>データ件数取得処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_SelectCountMethod(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();
            this.ReturnValue = returnValue;

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            // 検索条件の生成&指定
            string whereSQL = this.SetSearchConditions(parameterValue, cmnDao);

            string p = ""; // パラメタ記号
            string s = ""; // 囲い記号開始
            string e = ""; // 囲い記号終了
            string f = ""; // For supporting type casting in PostgreSQL
            // 囲い文字の選択
            if (parameterValue.DBMSType == DbEnum.DBMSType.SQLServer)
            {
                p = "@";
                s = "[";
                e = "]";
            }
            //MYSQL and DB2
            else if (parameterValue.DBMSType == DbEnum.DBMSType.MySQL || parameterValue.DBMSType == DbEnum.DBMSType.DB2)
            {
                p = "@";
                s = "\"";
                e = "\"";
            }
            else if (parameterValue.DBMSType == DbEnum.DBMSType.Oracle)
            {
                p = ":";
                s = "\"";
                e = "\"";
            }
            else if (parameterValue.DBMSType == DbEnum.DBMSType.PstGrS)
            {
                p = "@";
                f = "::text";
            }
            else
            {
                p = "@";
                s = "[";
                e = "]";
            }

            if (parameterValue.DBMSType == DbEnum.DBMSType.PstGrS)
            {
            //Set the Query for PostgreSQL database
            cmnDao.SQLText = string.Format(
                    SELECT_COUNT_POSTGRESQL_TEMPLATE,
                    s + parameterValue.TableName + e, whereSQL)
                    .Replace("_p_", p).Replace("_s_", s).Replace("_e_", e).Replace("_f_", f);
            }
            //MYSQL
            else if (parameterValue.DBMSType == DbEnum.DBMSType.MySQL)
            {

                string SQLtext = string.Format(
                SELECT_COUNT_SQL_TEMPLATE,
                     parameterValue.TableName, whereSQL)
                    .Replace("_p_", p).Replace("_s_", s).Replace("_e_", e).Replace("_f_", f).Replace("\"", string.Empty);
                cmnDao.SQLText = SQLtext;
            }

            else
            {
                // SQLを設定して And DB2
                cmnDao.SQLText = string.Format(
                    SELECT_COUNT_SQL_TEMPLATE,
                s + parameterValue.TableName + e, whereSQL)
                    .Replace("_p_", p).Replace("_s_", s).Replace("_e_", e).Replace("_f_", f);
            }

            // パラメタは指定済み

            // データ件数を取得
            returnValue.Obj = cmnDao.ExecSelectScalar();

            // ↑業務処理-----------------------------------------------------
        }
Esempio n. 5
0
        /// <summary>業務処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_メソッド名(BaseParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue testReturn = new _3TierReturnValue();
            this.ReturnValue = testReturn;

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());
            cmnDao.ExecSelectScalar();

            // ↑業務処理-----------------------------------------------------
        }
Esempio n. 6
0
        /// <summary>
        /// This method is used to terminate the workflow forecefully 
        /// by updating EndDate column of T_Workflow table with enddate.
        /// </summary>
        /// <param name="nextWorkflow"></param>
        /// <param name="workflowControlNo"></param>
        /// <param name="fromUserId"></param>        
        /// <param name="currentWorkflowReserveArea"></param>
        /// <returns></returns>
        public int ForcedTermination(DataRow nextWorkflow, string workflowControlNo, decimal fromUserId, string currentWorkflowReserveArea)
        {
            #region チェック処理を実装

            if (nextWorkflow == null)
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "nextWorkflow")));
            }
            else if (!nextWorkflow.Table.Columns.Contains("SubSystemId"))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_FIELD_ISNT_CONTAINED,
                        "SubSystemId", "nextWorkflow")));
            }
            else if (string.IsNullOrEmpty(workflowControlNo))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "workflowControlNo")));
            }

            // ユーザIDからユーザ情報を取得
            string fromUserInfo = Workflow.GetUserInfo(fromUserId);

            string toUserInfo = "";

            #endregion

            // --------------------------------------------------
            // 現在の履歴件数を取得。
            // --------------------------------------------------
            //Gets the record count from T_WorkflowHistory table
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);

            dao.SQLFileName = "RequestApproval_Count.sql";
            dao.SetParameter("WorkflowControlNo", workflowControlNo);
            int recordCount = ((int)dao.ExecSelectScalar());

            // --------------------------------------------------
            // ワークフロー承認を依頼
            // --------------------------------------------------
            // T_CurrentWorkflowのUPDATE
            // --------------------------------------------------
            DaoT_CurrentWorkflow daoT_CurrentWorkflow = new DaoT_CurrentWorkflow(this.Dam);

            // 主キー情報
            daoT_CurrentWorkflow.PK_WorkflowControlNo = workflowControlNo;

            // 履歴番号は履歴件数+1
            daoT_CurrentWorkflow.Set_HistoryNo_forUPD = recordCount + 1;

            daoT_CurrentWorkflow.Set_WfPositionId_forUPD = nextWorkflow["WfPositionId"];
            daoT_CurrentWorkflow.Set_WorkflowNo_forUPD = nextWorkflow["WorkflowNo"];
            daoT_CurrentWorkflow.Set_FromUserId_forUPD = fromUserId; // 実際のユーザIDを入力する。
            daoT_CurrentWorkflow.Set_FromUserInfo_forUPD = fromUserInfo;
            //Updates the ActionType with Abnormal termination
            daoT_CurrentWorkflow.Set_ActionType_forUPD = "ABEnd";

            // 上記以外は、nextWorkflow["ToUserId"]を指定する。
            daoT_CurrentWorkflow.Set_ToUserId_forUPD = nextWorkflow["ToUserId"];

            daoT_CurrentWorkflow.Set_ToUserInfo_forUPD = toUserInfo;
            daoT_CurrentWorkflow.Set_ToUserPositionTitlesId_forUPD = nextWorkflow["ToUserPositionTitlesId"];
            daoT_CurrentWorkflow.Set_NextWfPositionId_forUPD = nextWorkflow["NextWfPositionId"];
            daoT_CurrentWorkflow.Set_NextWorkflowNo_forUPD = nextWorkflow["NextWorkflowNo"];
            daoT_CurrentWorkflow.Set_ReserveArea_forUPD = currentWorkflowReserveArea;

            daoT_CurrentWorkflow.Set_StartDate_forUPD = DateTime.Now;
            daoT_CurrentWorkflow.Set_AcceptanceDate_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_AcceptanceUserId_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_AcceptanceUserInfo_forUPD = DBNull.Value;

            daoT_CurrentWorkflow.D3_Update();

            // --------------------------------------------------
            // 完了(T_WorkflowHistoryのEndDate項目を更新)
            // --------------------------------------------------
            // T_WorkflowHistoryのUPDATE
            // --------------------------------------------------
            DaoT_WorkflowHistory daoT_WorkflowHistory = new DaoT_WorkflowHistory(this.Dam);

            // PK
            daoT_WorkflowHistory.PK_WorkflowControlNo = workflowControlNo;
            daoT_WorkflowHistory.PK_HistoryNo = recordCount;

            //Updates the EndDate to current date for forceful termination
            daoT_WorkflowHistory.Set_EndDate_forUPD = DateTime.Now;

            daoT_WorkflowHistory.S3_Update();

            //---

            // 完了
            // --------------------------------------------------
            // 完了の場合(T_WorkflowのEndDate項目を更新)
            // --------------------------------------------------
            // T_WorkflowのUPDATE
            // --------------------------------------------------
            DaoT_Workflow daoT_Workflow = new DaoT_Workflow(this.Dam);

            // PK
            daoT_Workflow.PK_WorkflowControlNo = workflowControlNo;

            //Updates the EndDate to current date for forceful termination
            daoT_Workflow.Set_EndDate_forUPD = DateTime.Now;

            daoT_Workflow.S3_Update();

            // --------------------------------------------------
            // 履歴に移動
            // --------------------------------------------------
            // T_CurrentWorkflow→T_WorkflowHistory
            // --------------------------------------------------
            dao.SQLFileName = "RequestApproval_Move.sql";
            dao.SetParameter("WorkflowControlNo", workflowControlNo);
            dao.ExecInsUpDel_NonQuery();

            // リターン(MailTemplateId)
            if (nextWorkflow["MailTemplateId"] == DBNull.Value)
            {
                return 0;
            }
            else
            {
                return (int)nextWorkflow["MailTemplateId"];
            }
        }
Esempio n. 7
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_SelectCount(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------

            switch ((muParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((muParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperCount.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperCount.xml";
                            break;
                    }

                    // 共通Daoを実行
                    // 戻り値を設定
                    muReturn.Bean = cmnDao.ExecSelectScalar().ToString();

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // 共通Daoを実行
                    // 戻り値を設定
                    muReturn.Bean = genDao.D5_SelCnt().ToString();

                    break;

                default: // 個別Daoを使用する。
                    string ret = "";
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.SelectCount(muParameter.ActionType, out ret);
                    muReturn.Bean = ret;

                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Esempio n. 8
0
        /// <summary>ワークフロー承認を依頼します。</summary>
        /// <param name="nextWorkflow">選択したワークフロー承認依頼</param>
        /// <param name="workflowControlNo">ワークフロー管理番号(必須)</param>
        /// <param name="fromUserId">FromユーザID(必須)</param>
        /// <param name="toUserId">ToユーザID(TurnBack、Replyの際に必要)</param>
        /// <param name="currentWorkflowReserveArea">T_CurrentWorkflowの予備領域(任意)</param>
        /// <param name="replyDeadline">回答希望日(任意)</param>
        /// <returns>メール・テンプレートID</returns>
        public int RequestWfApproval(
            DataRow nextWorkflow, string workflowControlNo,
            decimal fromUserId, decimal? toUserId,
            string currentWorkflowReserveArea, DateTime? replyDeadline)
        {
            #region チェック処理を実装

            if (nextWorkflow == null)
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "nextWorkflow")));
            }
            else if (!nextWorkflow.Table.Columns.Contains("SubSystemId"))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_FIELD_ISNT_CONTAINED,
                        "SubSystemId", "nextWorkflow")));
            }
            else if (string.IsNullOrEmpty(workflowControlNo))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "workflowControlNo")));
            }

            // ユーザIDからユーザ情報を取得
            string fromUserInfo = Workflow.GetUserInfo(fromUserId);

            string toUserInfo = "";

            if (toUserId.HasValue
                && (string)nextWorkflow["ActionType"] != "End") // Endの時は不要 
            {
                toUserInfo = Workflow.GetUserInfo(toUserId.Value);
            }

            #endregion

            // --------------------------------------------------
            // 現在の履歴件数を取得。
            // --------------------------------------------------
            // T_WorkflowHistoryのCount
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);

            dao.SQLFileName = "RequestApproval_Count.sql";
            dao.SetParameter("WorkflowControlNo", workflowControlNo);
            int recordCount = ((int)dao.ExecSelectScalar());

            // --------------------------------------------------
            // ワークフロー承認を依頼
            // --------------------------------------------------
            // T_CurrentWorkflowのUPDATE
            // --------------------------------------------------
            DaoT_CurrentWorkflow daoT_CurrentWorkflow = new DaoT_CurrentWorkflow(this.Dam);

            // 主キー情報
            daoT_CurrentWorkflow.PK_WorkflowControlNo = workflowControlNo;

            // 履歴番号は履歴件数+1
            daoT_CurrentWorkflow.Set_HistoryNo_forUPD = recordCount + 1;

            daoT_CurrentWorkflow.Set_WfPositionId_forUPD = nextWorkflow["WfPositionId"];
            daoT_CurrentWorkflow.Set_WorkflowNo_forUPD = nextWorkflow["WorkflowNo"];
            daoT_CurrentWorkflow.Set_FromUserId_forUPD = fromUserId; // 実際のユーザIDを入力する。
            daoT_CurrentWorkflow.Set_FromUserInfo_forUPD = fromUserInfo;
            daoT_CurrentWorkflow.Set_ActionType_forUPD = nextWorkflow["ActionType"];

            if (toUserId.HasValue
                && ((string)nextWorkflow["ActionType"] == "TurnBack" || (string)nextWorkflow["ActionType"] == "Reply"))
            {
                // ActionTypeがTurnBack or Replyで、toUserIDがnullで無い場合、
                // 指定のtoUserIDにTurnBack or Replyする。
                daoT_CurrentWorkflow.Set_ToUserId_forUPD = toUserId;
            }
            else
            {
                // 上記以外は、nextWorkflow["ToUserId"]を指定する。
                daoT_CurrentWorkflow.Set_ToUserId_forUPD = nextWorkflow["ToUserId"];
            }

            daoT_CurrentWorkflow.Set_ToUserInfo_forUPD = toUserInfo;
            daoT_CurrentWorkflow.Set_ToUserPositionTitlesId_forUPD = nextWorkflow["ToUserPositionTitlesId"];
            daoT_CurrentWorkflow.Set_NextWfPositionId_forUPD = nextWorkflow["NextWfPositionId"];
            daoT_CurrentWorkflow.Set_NextWorkflowNo_forUPD = nextWorkflow["NextWorkflowNo"];
            daoT_CurrentWorkflow.Set_ReserveArea_forUPD = currentWorkflowReserveArea;
            //daoT_CurrentWorkflow.Set_ExclusiveKey_forUPD = "";

            if ((string)nextWorkflow["ActionType"] == "TurnBack"
                || (string)nextWorkflow["ActionType"] == "Reply")
            {
                // ActionTypeがTurnBack or Replyの場合
                daoT_CurrentWorkflow.Set_ReplyDeadline_forUPD = DBNull.Value;
            }
            else
            {
                daoT_CurrentWorkflow.Set_ReplyDeadline_forUPD = replyDeadline;
            }

            daoT_CurrentWorkflow.Set_StartDate_forUPD = DateTime.Now;
            daoT_CurrentWorkflow.Set_AcceptanceDate_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_AcceptanceUserId_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_AcceptanceUserInfo_forUPD = DBNull.Value;

            daoT_CurrentWorkflow.D3_Update();

            // --------------------------------------------------
            // 完了(T_WorkflowHistoryのEndDate項目を更新)
            // --------------------------------------------------
            // T_WorkflowHistoryのUPDATE
            // --------------------------------------------------
            DaoT_WorkflowHistory daoT_WorkflowHistory = new DaoT_WorkflowHistory(this.Dam);

            // PK
            daoT_WorkflowHistory.PK_WorkflowControlNo = workflowControlNo;
            daoT_WorkflowHistory.PK_HistoryNo = recordCount;

            // EndDate
            daoT_WorkflowHistory.Set_EndDate_forUPD = DateTime.Now;

            daoT_WorkflowHistory.S3_Update();

            //---

            // 完了
            if ((string)nextWorkflow["ActionType"] == "End")
            {
                // --------------------------------------------------
                // 完了の場合(T_WorkflowのEndDate項目を更新)
                // --------------------------------------------------
                // T_WorkflowのUPDATE
                // --------------------------------------------------
                DaoT_Workflow daoT_Workflow = new DaoT_Workflow(this.Dam);

                // PK
                daoT_Workflow.PK_WorkflowControlNo = workflowControlNo;

                // EndDate
                daoT_Workflow.Set_EndDate_forUPD = DateTime.Now;

                daoT_Workflow.S3_Update();

                // --------------------------------------------------
                // 履歴に移動
                // --------------------------------------------------
                // T_CurrentWorkflow→T_WorkflowHistory
                // --------------------------------------------------
                dao.SQLFileName = "RequestApproval_Move.sql";
                dao.SetParameter("WorkflowControlNo", workflowControlNo);
                dao.ExecInsUpDel_NonQuery();
            }

            // リターン(MailTemplateId)
            if (nextWorkflow["MailTemplateId"] == DBNull.Value)
            {
                return 0;
            }
            else
            {
                return (int)nextWorkflow["MailTemplateId"];
            }
        }
Esempio n. 9
0
        /// <summary>
        /// This method TurnBack to slip iisuance UserID
        /// </summary>
        /// <param name="subsystemId"></param>
        /// <param name="workflowControlNo"></param>
        /// <param name="fromUserId"></param>
        /// <param name="toUserId"></param>
        /// <param name="currentWorkflowReserveArea"></param>
        /// <returns></returns>
        public void TurnbackSlipIssuanceUserID(string subsystemId, string workflowControlNo, decimal fromUserId, decimal? toUserId,
                                              string currentWorkflowReserveArea)
        {
            #region チェック処理を実装

            string toUserInfo = "";

            //If ToUserId is not null ans ActionType is End then getting user information
            if (toUserId.HasValue) // Endの時は不要 
            {
                toUserInfo = Workflow.GetUserInfo(toUserId.Value);
            }

            #endregion

            // --------------------------------------------------
            // 現在の履歴件数を取得。
            // --------------------------------------------------
            //Gets the record count from T_WorkflowHistory table
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);

            dao.SQLFileName = "RequestApproval_Count.sql";
            dao.SetParameter("WorkflowControlNo", workflowControlNo);
            int recordCount = ((int)dao.ExecSelectScalar());

            // --------------------------------------------------
            // ワークフロー承認を依頼
            // --------------------------------------------------
            // T_CurrentWorkflowのUPDATE
            // --------------------------------------------------
            DaoT_CurrentWorkflow daoT_CurrentWorkflow = new DaoT_CurrentWorkflow(this.Dam);

            // 主キー情報
            daoT_CurrentWorkflow.PK_WorkflowControlNo = workflowControlNo;

            // 履歴番号は履歴件数+1
            daoT_CurrentWorkflow.Set_HistoryNo_forUPD = recordCount + 1;

            DaoT_WorkflowHistory daoT_WorkflowHistory = new DaoT_WorkflowHistory(this.Dam);
            //Gets the Slip issuance orignal user id
            DataTable dt = GetSlipIssuanceUserID(subsystemId, workflowControlNo);

            //Updates the T_CurrentWorkflow and T_WorkflowHistory tables data with original slip issuance user information
            daoT_CurrentWorkflow.Set_WfPositionId_forUPD = dt.Rows[0]["WfPositionId"];
            daoT_CurrentWorkflow.Set_WorkflowNo_forUPD = dt.Rows[0]["WorkflowNo"];
            daoT_CurrentWorkflow.Set_FromUserId_forUPD = toUserId; // 実際のユーザIDを入力する。
            daoT_CurrentWorkflow.Set_FromUserInfo_forUPD = toUserInfo;
            //Updating action type to TurnBack
            daoT_CurrentWorkflow.Set_ActionType_forUPD = "TurnBack";

            daoT_CurrentWorkflow.Set_ToUserId_forUPD = dt.Rows[0]["FromUserId"];
            // ユーザIDからユーザ情報を取得
            string fromUserInfo = Workflow.GetUserInfo(fromUserId);
            daoT_CurrentWorkflow.Set_ToUserInfo_forUPD = fromUserInfo;
            daoT_CurrentWorkflow.Set_ToUserPositionTitlesId_forUPD = dt.Rows[0]["ToUserPositionTitlesId"];
            daoT_CurrentWorkflow.Set_NextWfPositionId_forUPD = dt.Rows[0]["NextWfPositionId"];
            daoT_CurrentWorkflow.Set_NextWorkflowNo_forUPD = dt.Rows[0]["NextWorkflowNo"];
            daoT_CurrentWorkflow.Set_ReserveArea_forUPD = currentWorkflowReserveArea;

            //Updating acceptance information with null
            daoT_CurrentWorkflow.Set_ReplyDeadline_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_StartDate_forUPD = DateTime.Now;
            daoT_CurrentWorkflow.Set_AcceptanceDate_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_AcceptanceUserId_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_AcceptanceUserInfo_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.D3_Update();

            // PK
            daoT_WorkflowHistory.PK_WorkflowControlNo = workflowControlNo;
            daoT_WorkflowHistory.PK_HistoryNo = recordCount;

            // EndDate
            daoT_WorkflowHistory.Set_EndDate_forUPD = DateTime.Now;

            daoT_WorkflowHistory.S3_Update();
        }
Esempio n. 10
0
        /// <summary>次のワークフロー依頼を取得します。</summary>
        /// <param name="processingWfReq">選択した処理中ワークフロー依頼</param>
        /// <param name="fromUserId">FromユーザID(必須)</param>
        /// <returns>次のワークフロー</returns>
        /// <remarks>
        /// fromUsersId
        ///  御中IDでの呼び出しと、ユーザIDでの呼び出しは2回に分ける。
        /// </remarks>
        public DataTable GetNextWfRequest(DataRow processingWfReq, decimal fromUserId)
        {
            #region チェック処理を実装

            if (processingWfReq == null)
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "processingWfReq")));
            }
            else if (!processingWfReq.Table.Columns.Contains("SubSystemId"))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_FIELD_ISNT_CONTAINED,
                        "SubSystemId", "processingWfReq")));
            }

            #endregion

            // --------------------------------------------------
            // 次のワークフロー依頼を取得
            // --------------------------------------------------
            // M_WorkflowのSELECT
            // --------------------------------------------------
            DataTable dt = new DataTable();
            DaoM_Workflow daoM_Workflow = new DaoM_Workflow(this.Dam);

            // 検索条件
            daoM_Workflow.SubSystemId = processingWfReq["SubSystemId"];
            daoM_Workflow.WorkflowName = processingWfReq["WorkflowName"];
            daoM_Workflow.WorkflowNo = processingWfReq["NextWorkflowNo"];
            daoM_Workflow.FromUserId = fromUserId;

            // ワークフローの取得
            daoM_Workflow.D2_Select(dt);

            // --------------------------------------------------
            // TurnBack, Replyワークフローのフィルタ
            // --------------------------------------------------
            // T_WorkflowHistoryのSELECT
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);

            // 次のワークフロー依頼 = TurnBackの場合のフィルタ処理
            DataRow[] drs = dt.Select("ActionType = 'TurnBack'");

            if (drs.Length > 1)
            {
                // GetTurnBackWorkflow
                // 連続TurnBack場合の対応
                dao.SQLFileName = "GetTurnBackWorkflow.sql";
                dao.SetParameter("WorkflowControlNo", processingWfReq["WorkflowControlNo"]);
                dao.SetParameter("NextWorkflowNo", processingWfReq["NextWorkflowNo"]);
                object temp = dao.ExecSelectScalar();

                // GetTurnBackWorkflow2
                // Start直後にTurnBack場合の対応
                if (temp == null)
                {
                    dao.SQLFileName = "GetTurnBackWorkflow2.sql";
                    dao.SetParameter("WorkflowControlNo", processingWfReq["WorkflowControlNo"]);
                    dao.SetParameter("NextWorkflowNo", processingWfReq["NextWorkflowNo"]);
                    temp = dao.ExecSelectScalar();
                }

                string wfPositionId = (string)temp;

                foreach (DataRow dr in drs)
                {
                    if ((string)dr["NextWfPositionId"] == wfPositionId)
                    {
                        // 対象
                    }
                    else
                    {
                        // 対象外(削除)
                        dr.Delete();
                    }
                }

                // 削除処理の受け入れ
                dt.AcceptChanges();
            }

            // 次のワークフロー依頼 = Replyの場合のフィルタ処理
            drs = dt.Select("ActionType = 'Reply'");

            if (drs.Length > 1)
            {
                dao.SQLFileName = "GetReplyWorkflow.xml";
                dao.SetParameter("WorkflowControlNo", processingWfReq["WorkflowControlNo"]);

                #region CorrespondOfReplyWorkflow

                ArrayList alCorrespondOfReplyWorkflow = new ArrayList();

                foreach (DataRow dr in drs)
                {
                    alCorrespondOfReplyWorkflow.Add(dr["CorrespondOfReplyWorkflow"]);
                }

                dao.SetParameter("CorrespondOfReplyWorkflow", alCorrespondOfReplyWorkflow);

                #endregion

                int workflowNo = (int)dao.ExecSelectScalar();

                foreach (DataRow dr in drs)
                {
                    if ((int)dr["CorrespondOfReplyWorkflow"] == workflowNo)
                    {
                        // これ
                    }
                    else
                    {
                        // 削除
                        dr.Delete();
                    }
                }

                // 削除処理の受け入れ
                dt.AcceptChanges();
            }

            // リターン
            return dt;
        }
Esempio n. 11
0
        /// <summary>返信のToユーザIDを履歴から取得します。</summary>
        /// <param name="replyBackWorkflow">返信ののワークフロー</param>
        /// <param name="workflowControlNo">ワークフロー管理番号(必須)</param>
        /// <returns>ToユーザID</returns>
        public decimal GetReplyToUser(DataRow replyBackWorkflow, string workflowControlNo)
        {
            #region チェック処理を実装

            if (replyBackWorkflow == null)
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "replyBackWorkflow")));
            }
            else if (!replyBackWorkflow.Table.Columns.Contains("SubSystemId"))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_FIELD_ISNT_CONTAINED,
                        "SubSystemId", "replyBackWorkflow")));
            }
            else if (string.IsNullOrEmpty(workflowControlNo))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "workflowControlNo")));
            }

            #endregion

            // --------------------------------------------------
            // 差戻しのToユーザIDを履歴から取得
            // --------------------------------------------------
            // T_WorkflowHistoryのSELECT
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);
            dao.SQLFileName = "GetReplyToUser.sql";
            dao.SetParameter("WorkflowControlNo", workflowControlNo);
            dao.SetParameter("CorrespondOfReplyWorkflow", replyBackWorkflow["CorrespondOfReplyWorkflow"]);

            return (decimal)dao.ExecSelectScalar();
        }
Esempio n. 12
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_メソッド名(MuParameterValue muParameter)
        { //メソッド引数にBaseParameterValueの派生の型を定義可能。

            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            muReturn.Bean = new Informations("");
            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            DataTable dt = DataContractHelper.ToDataTable(((Informations)muParameter.Bean).DicList);

            // ↓業務処理-----------------------------------------------------

            // 個別Dao
            LayerD myDao = new LayerD(this.GetDam());
            //myDao.xxxx(muParameter.ActionType, dtts, muReturn);

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());
            cmnDao.ExecSelectScalar();

            // 戻り値をマーシャリングして設定
            muReturn.Bean = new Informations("");
            muReturn.Bean = new Informations(DataContractHelper.ToList(dt));

            // ↑業務処理-----------------------------------------------------
        }
Esempio n. 13
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_メソッド名(MuParameterValue muParameter)
        { //メソッド引数にBaseParameterValueの派生の型を定義可能。

            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            DTTables dtts_in = DTTables.StringToDTTables(muParameter.Value);
            DTTable dtt_in = dtts_in[0];
            DTRow dtrow_in = dtt_in.Rows[0];

            DTTables dtts_out = null;
            DTTable dtt_out = null;
            DTRow dtrow_out = null;

            // ↓業務処理-----------------------------------------------------

            // 個別Dao
            LayerD myDao = new LayerD(this.GetDam());
            //myDao.xxxx(muParameter.ActionType, dtts, muReturn);

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());
            cmnDao.ExecSelectScalar();

            // 戻り値をマーシャリングして設定
            dtts_out = new DTTables();
            dtt_out = new DTTable("ret");
            dtt_out.Cols.Add(new DTColumn("ret", DTType.String));
            dtrow_out = dtt_out.Rows.AddNew();
            dtrow_out["ret"] = "戻り値";
            dtts_out.Add(dtt_out);

            muReturn.Value = DTTables.DTTablesToString(dtts_out);

            // ↑業務処理-----------------------------------------------------
        }
Esempio n. 14
0
    /// <summary>業務処理を実装</summary>
    /// <param name="parameterValue">引数クラス</param>
    /// <param name="returnValue">戻り値クラス</param>
    protected override void UOC_DoAction(BaseParameterValue parameterValue, ref BaseReturnValue returnValue)
    {
        // 戻り値を生成しておく。
        returnValue = new MyReturnValue();

        // 自動トランザクションで開始したトランザクションを閉じる。
        this.GetDam().CommitTransaction();

        // コネクションを閉じる。
        this.GetDam().ConnectionClose();

        // データアクセス制御クラスをクリア。
        this.SetDam(null);

        // Dam用ワーク
        BaseDam damWork;

        // 共通Dao
        CmnDao cmnDao;

        // SQLの戻り値を受ける
        object obj;

        #region SQL Server

        #region SQL_NT

        // Damを生成
        damWork = new DamSqlSvr();
        // Damを初期化
        BaseLogic.InitDam("SQL_NT", damWork);
        // Damを設定
        this.SetDam("SQL_NT", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("SQL_NT"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('SQL_NT', 'SQL_NT')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("SQL_NT").CommitTransaction();
        //this.GetDam("SQL_NT").ConnectionClose();

        #endregion

        #region SQL_UC

        // Damを生成
        damWork = new DamSqlSvr();
        // Damを初期化
        BaseLogic.InitDam("SQL_UC", damWork);
        // Damを設定
        this.SetDam("SQL_UC", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("SQL_UC"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('SQL_UC', 'SQL_UC')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("SQL_UC").CommitTransaction();
        //this.GetDam("SQL_UC").ConnectionClose();

        #endregion

        #region SQL_RC

        // Damを生成
        damWork = new DamSqlSvr();
        // Damを初期化
        BaseLogic.InitDam("SQL_RC", damWork);
        // Damを設定
        this.SetDam("SQL_RC", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("SQL_RC"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('SQL_RC', 'SQL_RC')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("SQL_RC").CommitTransaction();
        //this.GetDam("SQL_RC").ConnectionClose();

        #endregion

        #region SQL_RR

        // Damを生成
        damWork = new DamSqlSvr();
        // Damを初期化
        BaseLogic.InitDam("SQL_RR", damWork);
        // Damを設定
        this.SetDam("SQL_RR", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("SQL_RR"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('SQL_RR', 'SQL_RR')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("SQL_RR").CommitTransaction();
        //this.GetDam("SQL_RR").ConnectionClose();

        #endregion

        #region SQL_SZ

        // Damを生成
        damWork = new DamSqlSvr();
        // Damを初期化
        BaseLogic.InitDam("SQL_SZ", damWork);
        // Damを設定
        this.SetDam("SQL_SZ", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("SQL_SZ"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('SQL_SZ', 'SQL_SZ')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("SQL_SZ").CommitTransaction();
        //this.GetDam("SQL_SZ").ConnectionClose();

        #endregion

        #region SQL_SS

        // Damを生成
        damWork = new DamSqlSvr();
        // Damを初期化
        BaseLogic.InitDam("SQL_SS", damWork);
        // Damを設定
        this.SetDam("SQL_SS", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("SQL_SS"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('SQL_SS', 'SQL_SS')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("SQL_SS").CommitTransaction();
        //this.GetDam("SQL_SS").ConnectionClose();

        #endregion

        #region SQL_DF

        // Damを生成
        damWork = new DamSqlSvr();
        // Damを初期化
        BaseLogic.InitDam("SQL_DF", damWork);
        // Damを設定
        this.SetDam("SQL_DF", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("SQL_DF"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('SQL_DF', 'SQL_DF')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("SQL_DF").CommitTransaction();
        //this.GetDam("SQL_DF").ConnectionClose();

        #endregion

        #endregion

        #region Oracle

        #region ODP2_NT

        // Damを生成
        damWork = new DamOraOdp();
        // Damを初期化
        BaseLogic.InitDam("ODP2_NT", damWork);
        // Damを設定
        this.SetDam("ODP2_NT", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("ODP2_NT"));
        cmnDao.SQLText = "INSERT INTO Shippers(ShipperID, CompanyName, Phone) VALUES(TS_ShipperID.NEXTVAL, 'ODP2_NT', 'ODP2_NT')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("ODP2_NT").CommitTransaction();
        //this.GetDam("ODP2_NT").ConnectionClose();

        #endregion

        #region ODP2_UC

        // ★ サポートされない分離レベル

        #endregion

        #region ODP2_RC

        // Damを生成
        damWork = new DamOraOdp();
        // Damを初期化
        BaseLogic.InitDam("ODP2_RC", damWork);
        // Damを設定
        this.SetDam("ODP2_RC", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("ODP2_RC"));
        cmnDao.SQLText = "INSERT INTO Shippers(ShipperID, CompanyName, Phone) VALUES(TS_ShipperID.NEXTVAL, 'ODP2_RC', 'ODP2_RC')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("ODP2_RC").CommitTransaction();
        //this.GetDam("ODP2_RC").ConnectionClose();

        #endregion

        #region ODP2_RR

        // ★ サポートされない分離レベル

        #endregion

        #region ODP2_SZ

        // Damを生成
        damWork = new DamOraOdp();
        // Damを初期化
        BaseLogic.InitDam("ODP2_SZ", damWork);
        // Damを設定
        this.SetDam("ODP2_SZ", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("ODP2_SZ"));
        cmnDao.SQLText = "INSERT INTO Shippers(ShipperID, CompanyName, Phone) VALUES(TS_ShipperID.NEXTVAL, 'ODP2_SZ', 'ODP2_SZ')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("ODP2_SZ").CommitTransaction();
        //this.GetDam("ODP2_SZ").ConnectionClose();

        #endregion

        #region ODP2_SS

        // ★ サポートされない分離レベル

        #endregion

        #region ODP2_DF

        // Damを生成
        damWork = new DamOraOdp();
        // Damを初期化
        BaseLogic.InitDam("ODP2_DF", damWork);
        // Damを設定
        this.SetDam("ODP2_DF", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("ODP2_DF"));
        cmnDao.SQLText = "INSERT INTO Shippers(ShipperID, CompanyName, Phone) VALUES(TS_ShipperID.NEXTVAL, 'ODP2_DF', 'ODP2_DF')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("ODP2_DF").CommitTransaction();
        //this.GetDam("ODP2_DF").ConnectionClose();

        #endregion

        #endregion

        #region DB2

        #region DB2_NT

        // Damを生成
        damWork = new DamDB2();
        // Damを初期化
        BaseLogic.InitDam("DB2_NT", damWork);
        // Damを設定
        this.SetDam("DB2_NT", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("DB2_NT"));
        cmnDao.SQLText = "INSERT INTO Shippers (ShipperID, CompanyName, Phone) VALUES(NEXTVAL for TS_ShipperID, 'DB2_NT', 'DB2_NT')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("DB2_NT").CommitTransaction();
        //this.GetDam("DB2_NT").ConnectionClose();

        #endregion

        #region DB2_UC

        // Damを生成
        damWork = new DamDB2();
        // Damを初期化
        BaseLogic.InitDam("DB2_UC", damWork);
        // Damを設定
        this.SetDam("DB2_UC", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("DB2_UC"));
        cmnDao.SQLText = "INSERT INTO Shippers (ShipperID, CompanyName, Phone) VALUES(NEXTVAL for TS_ShipperID, 'DB2_UC', 'DB2_UC')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("DB2_UC").CommitTransaction();
        //this.GetDam("DB2_UC").ConnectionClose();

        #endregion

        #region DB2_RC

        // Damを生成
        damWork = new DamDB2();
        // Damを初期化
        BaseLogic.InitDam("DB2_RC", damWork);
        // Damを設定
        this.SetDam("DB2_RC", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("DB2_UC"));
        cmnDao.SQLText = "INSERT INTO Shippers (ShipperID, CompanyName, Phone) VALUES(NEXTVAL for TS_ShipperID, 'DB2_RC', 'DB2_RC')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("DB2_RC").CommitTransaction();
        //this.GetDam("DB2_RC").ConnectionClose();

        #endregion

        #region DB2_RR

        // Damを生成
        damWork = new DamDB2();
        // Damを初期化
        BaseLogic.InitDam("DB2_RR", damWork);
        // Damを設定
        this.SetDam("DB2_RR", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("DB2_RR"));
        cmnDao.SQLText = "INSERT INTO Shippers (ShipperID, CompanyName, Phone) VALUES(NEXTVAL for TS_ShipperID, 'DB2_RR', 'DB2_RR')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("DB2_RR").CommitTransaction();
        //this.GetDam("DB2_RR").ConnectionClose();

        #endregion

        #region DB2_SZ

        // Damを生成
        damWork = new DamDB2();
        // Damを初期化
        BaseLogic.InitDam("DB2_SZ", damWork);
        // Damを設定
        this.SetDam("DB2_SZ", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("DB2_SZ"));
        cmnDao.SQLText = "INSERT INTO Shippers (ShipperID, CompanyName, Phone) VALUES(NEXTVAL for TS_ShipperID, 'DB2_SZ', 'DB2_SZ')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("DB2_SZ").CommitTransaction();
        //this.GetDam("DB2_SZ").ConnectionClose();

        #endregion

        #region DB2_SS

        // ★ サポートされない分離レベル

        #endregion

        #region DB2_DF

        // Damを生成
        damWork = new DamDB2();
        // Damを初期化
        BaseLogic.InitDam("DB2_DF", damWork);
        // Damを設定
        this.SetDam("DB2_DF", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("DB2_DF"));
        cmnDao.SQLText = "INSERT INTO Shippers (ShipperID, CompanyName, Phone) VALUES(NEXTVAL for TS_ShipperID, 'DB2_DF', 'DB2_DF')";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("DB2_DF").CommitTransaction();
        //this.GetDam("DB2_DF").ConnectionClose();

        #endregion

        #endregion

        #region MySQL

        #region MCN_NT

        // Damを生成
        damWork = new DamMySQL();
        // Damを初期化
        BaseLogic.InitDam("MCN_NT", damWork);
        // Damを設定
        this.SetDam("MCN_NT", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("MCN_NT"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('MCN_NT', 'MCN_NT');";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("MCN_NT").CommitTransaction();
        //this.GetDam("MCN_NT").ConnectionClose();

        #endregion

        #region MCN_UC

        // Damを生成
        damWork = new DamMySQL();
        // Damを初期化
        BaseLogic.InitDam("MCN_UC", damWork);
        // Damを設定
        this.SetDam("MCN_UC", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("MCN_UC"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('MCN_UC', 'MCN_UC');";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("MCN_UC").CommitTransaction();
        //this.GetDam("MCN_UC").ConnectionClose();

        #endregion

        #region MCN_RC

        // Damを生成
        damWork = new DamMySQL();
        // Damを初期化
        BaseLogic.InitDam("MCN_RC", damWork);
        // Damを設定
        this.SetDam("MCN_RC", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("MCN_RC"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('MCN_RC', 'MCN_RC');";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("MCN_RC").CommitTransaction();
        //this.GetDam("MCN_RC").ConnectionClose();

        #endregion

        #region MCN_RR

        // Damを生成
        damWork = new DamMySQL();
        // Damを初期化
        BaseLogic.InitDam("MCN_RR", damWork);
        // Damを設定
        this.SetDam("MCN_RR", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("MCN_RR"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('MCN_RR', 'MCN_RR');";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("MCN_RR").CommitTransaction();
        //this.GetDam("MCN_RR").ConnectionClose();

        #endregion

        #region MCN_SZ

        // Damを生成
        damWork = new DamMySQL();
        // Damを初期化
        BaseLogic.InitDam("MCN_SZ", damWork);
        // Damを設定
        this.SetDam("MCN_SZ", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("MCN_SZ"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('MCN_SZ', 'MCN_SZ');";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("MCN_SZ").CommitTransaction();
        //this.GetDam("MCN_SZ").ConnectionClose();

        #endregion

        #region MCN_SS

        // ★ サポートされない分離レベル

        #endregion

        #region MCN_DF

        // Damを生成
        damWork = new DamMySQL();
        // Damを初期化
        BaseLogic.InitDam("MCN_DF", damWork);
        // Damを設定
        this.SetDam("MCN_DF", damWork);

        // インサート
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam("MCN_DF"));
        cmnDao.SQLText = "INSERT INTO Shippers(CompanyName, Phone) VALUES('MCN_DF', 'MCN_DF');";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam("MCN_DF").CommitTransaction();
        //this.GetDam("MCN_DF").ConnectionClose();

        #endregion

        #endregion

        #region 終了時の状態選択

        #region Damの状態選択

        if ((parameterValue.ActionType.Split('%'))[2] == "UT")
        {
            // トランザクションあり
        }
        else if ((parameterValue.ActionType.Split('%'))[2] == "NT")
        {
            // トランザクションなし
            // → まえもってロールバックしておく

            #region ロールバック

            this.GetDam("SQL_NT").RollbackTransaction();
            this.GetDam("SQL_UC").RollbackTransaction();
            this.GetDam("SQL_RC").RollbackTransaction();
            this.GetDam("SQL_RR").RollbackTransaction();
            this.GetDam("SQL_SZ").RollbackTransaction();
            this.GetDam("SQL_SS").RollbackTransaction();
            this.GetDam("SQL_DF").RollbackTransaction();

            this.GetDam("ODP2_NT").RollbackTransaction();
            //this.GetDam("ODP2_UC").RollbackTransaction();
            this.GetDam("ODP2_RC").RollbackTransaction();
            //this.GetDam("ODP2_RR").RollbackTransaction();
            this.GetDam("ODP2_SZ").RollbackTransaction();
            //this.GetDam("ODP2_SS").RollbackTransaction();
            this.GetDam("ODP2_DF").RollbackTransaction();

            this.GetDam("DB2_NT").RollbackTransaction();
            this.GetDam("DB2_UC").RollbackTransaction();
            this.GetDam("DB2_RC").RollbackTransaction();
            this.GetDam("DB2_RR").RollbackTransaction();
            this.GetDam("DB2_SZ").RollbackTransaction();
            //this.GetDam("DB2_SS").RollbackTransaction();
            this.GetDam("DB2_DF").RollbackTransaction();

            this.GetDam("MCN_NT").RollbackTransaction();
            this.GetDam("MCN_UC").RollbackTransaction();
            this.GetDam("MCN_RC").RollbackTransaction();
            this.GetDam("MCN_RR").RollbackTransaction();
            this.GetDam("MCN_SZ").RollbackTransaction();
            //this.GetDam("MCN_SS").RollbackTransaction();
            this.GetDam("MCN_DF").RollbackTransaction();

            #endregion
        }
        else if ((parameterValue.ActionType.Split('%'))[2] == "NC")
        {
            // コネクションなし
            // → まえもってロールバック、コネクションクローズしておく
            //
            // ※ トランザクションを開始して
            //    コミットしないで閉じると、ロールバック扱い。

            #region ロールバック

            this.GetDam("SQL_NT").RollbackTransaction();
            this.GetDam("SQL_UC").RollbackTransaction();
            this.GetDam("SQL_RC").RollbackTransaction();
            this.GetDam("SQL_RR").RollbackTransaction();
            this.GetDam("SQL_SZ").RollbackTransaction();
            this.GetDam("SQL_SS").RollbackTransaction();
            this.GetDam("SQL_DF").RollbackTransaction();

            this.GetDam("ODP2_NT").RollbackTransaction();
            //this.GetDam("ODP2_UC").RollbackTransaction();
            this.GetDam("ODP2_RC").RollbackTransaction();
            //this.GetDam("ODP2_RR").RollbackTransaction();
            this.GetDam("ODP2_SZ").RollbackTransaction();
            //this.GetDam("ODP2_SS").RollbackTransaction();
            this.GetDam("ODP2_DF").RollbackTransaction();

            this.GetDam("DB2_NT").RollbackTransaction();
            this.GetDam("DB2_UC").RollbackTransaction();
            this.GetDam("DB2_RC").RollbackTransaction();
            this.GetDam("DB2_RR").RollbackTransaction();
            this.GetDam("DB2_SZ").RollbackTransaction();
            //this.GetDam("DB2_SS").RollbackTransaction();
            this.GetDam("DB2_DF").RollbackTransaction();

            this.GetDam("MCN_NT").RollbackTransaction();
            this.GetDam("MCN_UC").RollbackTransaction();
            this.GetDam("MCN_RC").RollbackTransaction();
            this.GetDam("MCN_RR").RollbackTransaction();
            this.GetDam("MCN_SZ").RollbackTransaction();
            //this.GetDam("MCN_SS").RollbackTransaction();
            this.GetDam("MCN_DF").RollbackTransaction();

            #endregion

            #region コネクションクローズ

            this.GetDam("SQL_NT").ConnectionClose();
            this.GetDam("SQL_UC").ConnectionClose();
            this.GetDam("SQL_RC").ConnectionClose();
            this.GetDam("SQL_RR").ConnectionClose();
            this.GetDam("SQL_SZ").ConnectionClose();
            this.GetDam("SQL_SS").ConnectionClose();
            this.GetDam("SQL_DF").ConnectionClose();

            this.GetDam("ODP2_NT").ConnectionClose();
            //this.GetDam("ODP2_UC").ConnectionClose();
            this.GetDam("ODP2_RC").ConnectionClose();
            //this.GetDam("ODP2_RR").ConnectionClose();
            this.GetDam("ODP2_SZ").ConnectionClose();
            //this.GetDam("ODP2_SS").ConnectionClose();
            this.GetDam("ODP2_DF").ConnectionClose();

            this.GetDam("DB2_NT").ConnectionClose();
            this.GetDam("DB2_UC").ConnectionClose();
            this.GetDam("DB2_RC").ConnectionClose();
            this.GetDam("DB2_RR").ConnectionClose();
            this.GetDam("DB2_SZ").ConnectionClose();
            //this.GetDam("DB2_SS").ConnectionClose();
            this.GetDam("DB2_DF").ConnectionClose();

            this.GetDam("MCN_NT").ConnectionClose();
            this.GetDam("MCN_UC").ConnectionClose();
            this.GetDam("MCN_RC").ConnectionClose();
            this.GetDam("MCN_RR").ConnectionClose();
            this.GetDam("MCN_SZ").ConnectionClose();
            //this.GetDam("MCN_SS").ConnectionClose();
            this.GetDam("MCN_DF").ConnectionClose();

            #endregion
        }
        else if ((parameterValue.ActionType.Split('%'))[2] == "NULL")
        {
            // データアクセス制御クラス = Null
            // → まえもってロールバック、コネクションクローズ、Nullクリアしておく
            //
            // ※ トランザクションを開始して
            //    コミットしないで閉じると、ロールバック扱い。

            #region ロールバック

            this.GetDam("SQL_NT").RollbackTransaction();
            this.GetDam("SQL_UC").RollbackTransaction();
            this.GetDam("SQL_RC").RollbackTransaction();
            this.GetDam("SQL_RR").RollbackTransaction();
            this.GetDam("SQL_SZ").RollbackTransaction();
            this.GetDam("SQL_SS").RollbackTransaction();
            this.GetDam("SQL_DF").RollbackTransaction();

            this.GetDam("ODP2_NT").RollbackTransaction();
            //this.GetDam("ODP2_UC").RollbackTransaction();
            this.GetDam("ODP2_RC").RollbackTransaction();
            //this.GetDam("ODP2_RR").RollbackTransaction();
            this.GetDam("ODP2_SZ").RollbackTransaction();
            //this.GetDam("ODP2_SS").RollbackTransaction();
            this.GetDam("ODP2_DF").RollbackTransaction();

            this.GetDam("DB2_NT").RollbackTransaction();
            this.GetDam("DB2_UC").RollbackTransaction();
            this.GetDam("DB2_RC").RollbackTransaction();
            this.GetDam("DB2_RR").RollbackTransaction();
            this.GetDam("DB2_SZ").RollbackTransaction();
            //this.GetDam("DB2_SS").RollbackTransaction();
            this.GetDam("DB2_DF").RollbackTransaction();

            this.GetDam("MCN_NT").RollbackTransaction();
            this.GetDam("MCN_UC").RollbackTransaction();
            this.GetDam("MCN_RC").RollbackTransaction();
            this.GetDam("MCN_RR").RollbackTransaction();
            this.GetDam("MCN_SZ").RollbackTransaction();
            //this.GetDam("MCN_SS").RollbackTransaction();
            this.GetDam("MCN_DF").RollbackTransaction();

            #endregion

            #region コネクションクローズ

            this.GetDam("SQL_NT").ConnectionClose();
            this.GetDam("SQL_UC").ConnectionClose();
            this.GetDam("SQL_RC").ConnectionClose();
            this.GetDam("SQL_RR").ConnectionClose();
            this.GetDam("SQL_SZ").ConnectionClose();
            this.GetDam("SQL_SS").ConnectionClose();
            this.GetDam("SQL_DF").ConnectionClose();

            this.GetDam("ODP2_NT").ConnectionClose();
            //this.GetDam("ODP2_UC").ConnectionClose();
            this.GetDam("ODP2_RC").ConnectionClose();
            //this.GetDam("ODP2_RR").ConnectionClose();
            this.GetDam("ODP2_SZ").ConnectionClose();
            //this.GetDam("ODP2_SS").ConnectionClose();
            this.GetDam("ODP2_DF").ConnectionClose();

            this.GetDam("DB2_NT").ConnectionClose();
            this.GetDam("DB2_UC").ConnectionClose();
            this.GetDam("DB2_RC").ConnectionClose();
            this.GetDam("DB2_RR").ConnectionClose();
            this.GetDam("DB2_SZ").ConnectionClose();
            //this.GetDam("DB2_SS").ConnectionClose();
            this.GetDam("DB2_DF").ConnectionClose();

            this.GetDam("MCN_NT").ConnectionClose();
            this.GetDam("MCN_UC").ConnectionClose();
            this.GetDam("MCN_RC").ConnectionClose();
            this.GetDam("MCN_RR").ConnectionClose();
            this.GetDam("MCN_SZ").ConnectionClose();
            //this.GetDam("MCN_SS").ConnectionClose();
            this.GetDam("MCN_DF").ConnectionClose();

            #endregion

            #region Nullクリア

            this.SetDam("SQL_NT", null);
            this.SetDam("SQL_UC", null);
            this.SetDam("SQL_RC", null);
            this.SetDam("SQL_RR", null);
            this.SetDam("SQL_SZ", null);
            this.SetDam("SQL_SS", null);
            this.SetDam("SQL_DF", null);

            this.SetDam("ODP2_NT", null);
            //this.SetDam("ODP2_UC",null);
            this.SetDam("ODP2_RC", null);
            //this.SetDam("ODP2_RR",null);
            this.SetDam("ODP2_SZ", null);
            //this.SetDam("ODP2_SS",null);
            this.SetDam("ODP2_DF", null);

            this.SetDam("DB2_NT", null);
            this.SetDam("DB2_UC", null);
            this.SetDam("DB2_RC", null);
            this.SetDam("DB2_RR", null);
            this.SetDam("DB2_SZ", null);
            //this.SetDam("DB2_SS",null);
            this.SetDam("DB2_DF", null);

            this.SetDam("MCN_NT", null);
            this.SetDam("MCN_UC", null);
            this.SetDam("MCN_RC", null);
            this.SetDam("MCN_RR", null);
            this.SetDam("MCN_SZ", null);
            //this.SetDam("MCN_SS",null);
            this.SetDam("MCN_DF", null);

            #endregion
        }

        #endregion

        #region エラーのスロー

        if ((parameterValue.ActionType.Split('%'))[1] == "Business")
        {
            // 業務例外のスロー
            throw new BusinessApplicationException(
                "ロールバックのテスト",
                "ロールバックのテスト",
                "エラー情報");
        }
        else if ((parameterValue.ActionType.Split('%'))[1] == "System")
        {
            // システム例外のスロー
            throw new BusinessSystemException(
                "ロールバックのテスト",
                "ロールバックのテスト");
        }
        else if ((parameterValue.ActionType.Split('%'))[1] == "Other")
        {
            // その他、一般的な例外のスロー
            throw new Exception("ロールバックのテスト");
        }
        else if ((parameterValue.ActionType.Split('%'))[1] == "Other-Business")
        {
            // その他、一般的な例外(業務例外へ振り替え)のスロー
            throw new Exception("Other-Business");
        }
        else if ((parameterValue.ActionType.Split('%'))[1] == "Other-System")
        {
            // その他、一般的な例外(システム例外へ振り替え)のスロー
            throw new Exception("Other-System");
        }

        #endregion

        #endregion

    }
Esempio n. 15
0
    /// <summary>業務処理を実装</summary>
    /// <param name="parameterValue">引数クラス</param>
    /// <param name="returnValue">戻り値クラス</param>
    protected override void UOC_DoAction(BaseParameterValue parameterValue, ref BaseReturnValue returnValue)
    {
        // 戻り値を生成しておく。
        returnValue = new MyReturnValue();

        // 自動トランザクションで開始したトランザクションを閉じる。
        this.GetDam().CommitTransaction();

        // コネクションを閉じる。
        this.GetDam().ConnectionClose();

        // データアクセス制御クラスをクリア。
        this.SetDam(null);

        // Dam用ワーク
        BaseDam damWork;

        // 共通Dao
        CmnDao cmnDao;

        // カバレージ上げ用
        IDbConnection idcnn = null;
        IDbTransaction idtx = null;
        IDbCommand idcmd = null;
        IDataAdapter idapt = null;
        DataSet ds = null;

        // SQLの戻り値を受ける
        object obj;

        #region SQL Server

        damWork = new DamSqlSvr();

        #region 接続しない

        BaseLogic.InitDam("XXXX", damWork);
        this.SetDam(damWork);

        // なにもしない。

        // プロパティにアクセス(デバッガで確認)
        idcnn = ((DamSqlSvr)this.GetDam()).DamSqlConnection;
        idtx = ((DamSqlSvr)this.GetDam()).DamSqlTransaction;

        // nullの時に呼んだ場合。
        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region SQL_NT

        BaseLogic.InitDam("SQL_NT", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion
        
        #region SQL_UC

        BaseLogic.InitDam("SQL_UC", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region SQL_RC

        BaseLogic.InitDam("SQL_RC", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        // プロパティにアクセス(デバッガで確認)
        idcnn = ((DamSqlSvr)this.GetDam()).DamSqlConnection;
        idtx = ((DamSqlSvr)this.GetDam()).DamSqlTransaction;
        idcmd = ((DamSqlSvr)this.GetDam()).DamSqlCommand;
        idapt = ((DamSqlSvr)this.GetDam()).DamSqlDataAdapter;
        ds = new DataSet();
        idapt.Fill(ds);

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        // 2連続で呼んだ場合。
        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion
        
        #region SQL_RR

        BaseLogic.InitDam("SQL_RR", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region SQL_SZ

        BaseLogic.InitDam("SQL_SZ", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region SQL_SS

        BaseLogic.InitDam("SQL_SS", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region SQL_DF

        BaseLogic.InitDam("SQL_DF", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #endregion

        #region Oracle

        damWork = new DamOraOdp();

        #region 接続しない

        BaseLogic.InitDam("XXXX", damWork);
        this.SetDam(damWork);

        // なにもしない。

        // プロパティにアクセス(デバッガで確認)
        idcnn = ((DamOraOdp)this.GetDam()).DamOracleConnection;
        idtx = ((DamOraOdp)this.GetDam()).DamOracleTransaction;

        // nullの時に呼んだ場合。
        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region ODP2_NT

        BaseLogic.InitDam("ODP2_NT", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region ODP2_UC

        // ★ サポートされない分離レベル

        #endregion

        #region ODP2_RC

        BaseLogic.InitDam("ODP2_RC", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        // プロパティにアクセス(デバッガで確認)
        idcnn = ((DamOraOdp)this.GetDam()).DamOracleConnection;
        idtx = ((DamOraOdp)this.GetDam()).DamOracleTransaction;
        idcmd = ((DamOraOdp)this.GetDam()).DamOracleCommand;
        idapt = ((DamOraOdp)this.GetDam()).DamOracleDataAdapter;
        ds = new DataSet();
        idapt.Fill(ds);

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        // 2連続で呼んだ場合。
        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region ODP2_RR

        // ★ サポートされない分離レベル

        #endregion

        #region ODP2_SZ

        BaseLogic.InitDam("ODP2_SZ", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region ODP2_SS

        // ★ サポートされない分離レベル

        #endregion

        #region ODP2_DF

        BaseLogic.InitDam("ODP2_DF", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #endregion

        #region DB2

        damWork = new DamDB2();

        #region 接続しない

        BaseLogic.InitDam("XXXX", damWork);
        this.SetDam(damWork);

        // なにもしない。

        // プロパティにアクセス(デバッガで確認)
        idcnn = ((DamDB2)this.GetDam()).DamDB2Connection;
        idtx = ((DamDB2)this.GetDam()).DamDB2Transaction;

        // nullの時に呼んだ場合。
        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region DB2_NT

        BaseLogic.InitDam("DB2_NT", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region DB2_UC

        BaseLogic.InitDam("DB2_UC", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region DB2_RC

        BaseLogic.InitDam("DB2_RC", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        // プロパティにアクセス(デバッガで確認)
        idcnn = ((DamDB2)this.GetDam()).DamDB2Connection;
        idtx = ((DamDB2)this.GetDam()).DamDB2Transaction;
        idcmd = ((DamDB2)this.GetDam()).DamDB2Command;
        idapt = ((DamDB2)this.GetDam()).DamDB2DataAdapter;
        ds = new DataSet();
        idapt.Fill(ds);

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        // 2連続で呼んだ場合。
        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region DB2_RR

        BaseLogic.InitDam("DB2_RR", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region DB2_SZ

        BaseLogic.InitDam("DB2_SZ", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region DB2_SS

        // ★ サポートされない分離レベル

        #endregion

        #region DB2_DF

        BaseLogic.InitDam("DB2_DF", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #endregion

        #region MySQL

        damWork = new DamMySQL();

        #region 接続しない

        BaseLogic.InitDam("XXXX", damWork);
        this.SetDam(damWork);

        // なにもしない。

        // プロパティにアクセス(デバッガで確認)
        idcnn = ((DamMySQL)this.GetDam()).DamMySqlConnection;
        idtx = ((DamMySQL)this.GetDam()).DamMySqlTransaction;

        // nullの時に呼んだ場合。
        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region MCN_NT

        BaseLogic.InitDam("MCN_NT", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        //this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region MCN_UC

        BaseLogic.InitDam("MCN_UC", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region MCN_RC

        BaseLogic.InitDam("MCN_RC", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        // プロパティにアクセス(デバッガで確認)
        idcnn = ((DamMySQL)this.GetDam()).DamMySqlConnection;
        idtx = ((DamMySQL)this.GetDam()).DamMySqlTransaction;
        idcmd = ((DamMySQL)this.GetDam()).DamMySqlCommand;
        idapt = ((DamMySQL)this.GetDam()).DamMySqlDataAdapter;
        ds = new DataSet();
        idapt.Fill(ds);

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        // 2連続で呼んだ場合。
        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region MCN_RR

        BaseLogic.InitDam("MCN_RR", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region MCN_SZ

        BaseLogic.InitDam("MCN_SZ", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #region MCN_SS

        // ★ サポートされない分離レベル

        #endregion

        #region MCN_DF

        BaseLogic.InitDam("MCN_DF", damWork);
        this.SetDam(damWork);

        // 行数
        // Damを直接使用することもできるが、
        // 通常は、データアクセスにはDaoを使用する。        
        cmnDao = new CmnDao(this.GetDam());
        cmnDao.SQLText = "SELECT COUNT(*) FROM SHIPPERS";
        obj = (object)cmnDao.ExecSelectScalar();

        this.GetDam().CommitTransaction();
        this.GetDam().ConnectionClose();

        #endregion

        #endregion

        #region エラー処理(ロールバックのテスト)

        if ((parameterValue.ActionType.Split('%'))[1] != "-")
        {
            #region エラー時のDamの状態選択

            if ((parameterValue.ActionType.Split('%'))[2] == "UT")
            {
                // トランザクションあり
                damWork = new DamSqlSvr();
                damWork.ConnectionOpen(GetConfigParameter.GetConnectionString("ConnectionString_SQL"));
                damWork.BeginTransaction(DbEnum.IsolationLevelEnum.ReadCommitted);
                this.SetDam(damWork);
            }
            else if ((parameterValue.ActionType.Split('%'))[2] == "NT")
            {
                // トランザクションなし
                damWork = new DamSqlSvr();
                damWork.ConnectionOpen(GetConfigParameter.GetConnectionString("ConnectionString_SQL"));
                this.SetDam(damWork);
            }
            else if ((parameterValue.ActionType.Split('%'))[2] == "NC")
            {
                // コネクションなし
                damWork = new DamSqlSvr();
                this.SetDam(damWork);
            }
            else if ((parameterValue.ActionType.Split('%'))[2] == "NULL")
            {
                // データアクセス制御クラス = Null
                this.SetDam(null);
            }

            #endregion

            #region エラーのスロー

            if ((parameterValue.ActionType.Split('%'))[1] == "Business")
            {
                // 業務例外のスロー
                throw new BusinessApplicationException(
                    "ロールバックのテスト",
                    "ロールバックのテスト",
                    "エラー情報");
            }
            else if ((parameterValue.ActionType.Split('%'))[1] == "System")
            {
                // システム例外のスロー
                throw new BusinessSystemException(
                    "ロールバックのテスト",
                    "ロールバックのテスト");
            }
            else if ((parameterValue.ActionType.Split('%'))[1] == "Other")
            {
                // その他、一般的な例外のスロー
                throw new Exception("ロールバックのテスト");
            }
            else if ((parameterValue.ActionType.Split('%'))[1] == "Other-Business")
            {
                // その他、一般的な例外(業務例外へ振り替え)のスロー
                throw new Exception("Other-Business");
            }
            else if ((parameterValue.ActionType.Split('%'))[1] == "Other-System")
            {
                // その他、一般的な例外(システム例外へ振り替え)のスロー
                throw new Exception("Other-System");
            }

            #endregion
        }

        #endregion

    }
Esempio n. 16
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_SelectCount(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            DTTables dtts_in = DTTables.StringToDTTables(muParameter.Value);
            DTTable dtt_in = dtts_in[0];
            //DTRow dtrow_in = dtt_in.Rows[0];

            //DTTables dtts_out = null;
            //DTTable dtt_out = null;
            //DTRow dtrow_out = null;

            // ↓業務処理-----------------------------------------------------

            switch ((muParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((muParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperCount.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperCount.xml";
                            break;
                    }

                    // 共通Daoを実行
                    // 戻り値を設定
                    muReturn.Value = cmnDao.ExecSelectScalar().ToString();

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // 共通Daoを実行
                    // 戻り値を設定
                    muReturn.Value = genDao.D5_SelCnt().ToString();

                    break;

                default: // 個別Daoを使用する。

                    // 個別Daoを実行
                    string ret = "";
                    LayerD_mu myDao = new LayerD_mu(this.GetDam());
                    myDao.SelectCount(muParameter.ActionType, out ret);

                    // 戻り値を設定
                    muReturn.Value = ret;

                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }