Exemple #1
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_mu myDao = new LayerD_mu(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));

            // ↑業務処理-----------------------------------------------------
        }
Exemple #2
0
        /// <summary>Silverlight&汎用DTOのテスト(行追加)</summary>
        /// <param name="muParameter">引数クラス</param>
        protected void UOC_AddRow(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 = null;// dtt_in.Rows[0];

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

            // 1行追加
            dtrow_in               = dtt_in.Rows.AddNew();
            dtrow_in["boolVal"]    = true;
            dtrow_in["charVal"]    = 'z';
            dtrow_in["dateVal"]    = new DateTime(1946, 12, 11, 10, 20, 30, 444);
            dtrow_in["decimalVal"] = 99999;
            dtrow_in["doubleVal"]  = 9.99D;
            dtrow_in["shortVal"]   = 900;
            dtrow_in["intVal"]     = 9000000;
            dtrow_in["longVal"]    = 9000000000000;
            dtrow_in["singleVal"]  = 9.9f;
            dtrow_in["stringVal"]  = "test" + dtt_in.Rows.Count.ToString();

            // 戻り値をマーシャリングして設定
            ((MuReturnValue)this.ReturnValue).Value = DTTables.DTTablesToString(dtts_in);
        }
Exemple #3
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_mu myDao = new LayerD_mu(this.GetDam());
                myDao.SelectCount(muParameter.ActionType, out ret);
                muReturn.Bean = ret;

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #4
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Insert(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------
            string companyName = ((string[])(muParameter.Bean))[0];
            string phone       = ((string[])(muParameter.Bean))[1];

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

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

                cmnDao.SQLFileName = "ShipperInsert.sql";

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P2", companyName);
                cmnDao.SetParameter("P3", phone);

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

                break;

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

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

                // パラメタに対して、動的に値を設定する。
                genDao.CompanyName = companyName;
                genDao.Phone       = phone;

                // 自動生成Daoを実行
                // 戻り値を設定
                muReturn.Bean = genDao.D1_Insert().ToString();

                break;

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

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #5
0
        /// <summary>認証情報を返すメソッド</summary>
        /// <param name="parameter">引数クラス</param>
        public void UOC_GetFormsAuthInfo(MuParameterValue parameter)
        {
            // 戻り値クラスを生成
            MuReturnValue muReturn = new MuReturnValue();

            // 認証情報を返す
            this.ReturnValue = muReturn;
            muReturn.Value   = HttpContext.Current.User.Identity.Name;
        }
Exemple #6
0
        /// <summary>ロールバックのテスト</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void TestRollback(MuParameterValue muParameter)
        {
            switch ((muParameter.ActionType.Split('%'))[3])
            {
            case "Business":

                // 戻り値が見えるか確認する。
                ((MuReturnValue)this.ReturnValue).Value = "戻り値が戻るか?";

                // 業務例外のスロー
                throw new BusinessApplicationException(
                          "ロールバックのテスト",
                          "ロールバックのテスト",
                          "エラー情報");
            //break; // 到達できないためコメントアウト

            case "System":

                // 戻り値が見えるか確認する。
                ((MuReturnValue)this.ReturnValue).Value = "戻り値が戻るか?";

                // システム例外のスロー
                throw new BusinessSystemException(
                          "ロールバックのテスト",
                          "ロールバックのテスト");
            //break; // 到達できないためコメントアウト

            case "Other":

                // 戻り値が見えるか確認する。
                ((MuReturnValue)this.ReturnValue).Value = "戻り値が戻るか?";

                // その他、一般的な例外のスロー
                throw new Exception("ロールバックのテスト");
            //break; // 到達できないためコメントアウト

            case "Other-Business":
                // 戻り値が見えるか確認する。
                ((MuReturnValue)this.ReturnValue).Value = "戻り値が戻るか?";

                // その他、一般的な例外(業務例外へ振り替え)のスロー
                throw new Exception("Other-Business");
            //break; // 到達できないためコメントアウト

            case "Other-System":

                // 戻り値が見えるか確認する。
                ((MuReturnValue)this.ReturnValue).Value = "戻り値が戻るか?";

                // その他、一般的な例外(システム例外へ振り替え)のスロー
                throw new Exception("Other-System");
                //break; // 到達できないためコメントアウト
            }
        }
Exemple #7
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);

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

            muReturn.Bean    = new Informations("");
            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            string shipperID = ((Informations)muParameter.Bean).Str;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = null;
            Dictionary <string, string> dic = 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 = "ShipperSelect.sql";
                    break;

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

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P1", shipperID);

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 共通Daoを実行
                cmnDao.ExecSelectFill_DT(dt);

                // 戻り値を設定
                dic = new Dictionary <string, string>();
                dic["ShipperID"]   = dt.Rows[0].ItemArray.GetValue(0).ToString();
                dic["CompanyName"] = (string)dt.Rows[0].ItemArray.GetValue(1);
                dic["Phone"]       = (string)dt.Rows[0].ItemArray.GetValue(2);
                muReturn.Bean      = new Informations(dic);

                break;

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

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

                // パラメタに対して、動的に値を設定する。
                genDao.PK_ShipperID = shipperID;

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 自動生成Daoを実行
                genDao.S2_Select(dt);

                // 戻り値を設定
                dic = new Dictionary <string, string>();
                dic["ShipperID"]   = dt.Rows[0].ItemArray.GetValue(0).ToString();
                dic["CompanyName"] = (string)dt.Rows[0].ItemArray.GetValue(1);
                dic["Phone"]       = (string)dt.Rows[0].ItemArray.GetValue(2);
                muReturn.Bean      = new Informations(dic);

                break;

            default:     // 個別Daoを使用する。
                string companyName;
                string phone;

                // 個別Daoを実行
                LayerD_mu myDao = new LayerD_mu(this.GetDam());
                myDao.Select(muParameter.ActionType, shipperID,
                             out companyName, out phone);

                // 戻り値を設定
                dic = new Dictionary <string, string>();
                dic["CompanyName"] = companyName;
                dic["Phone"]       = phone;
                muReturn.Bean      = new Informations(dic);

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #9
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_SelectAll_DSQL(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            muReturn.Bean    = new Informations("");
            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            Dictionary <string, string> dic = ((Informations)muParameter.Bean).Dictionary;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = 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 = "ShipperSelectOrder.sql";
                    break;

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

                // ユーザ定義パラメタに対して、動的に値を設定する。
                string orderColumn   = "";
                string orderSequence = "";

                if (dic["OrderColumn"].ToString() == "c1")
                {
                    orderColumn = "ShipperID";
                }
                else if (dic["OrderColumn"].ToString() == "c2")
                {
                    orderColumn = "CompanyName";
                }
                else if (dic["OrderColumn"].ToString() == "c3")
                {
                    orderColumn = "Phone";
                }
                else
                {
                }

                if (dic["OrderSequence"].ToString() == "A")
                {
                    orderSequence = "ASC";
                }
                else if (dic["OrderSequence"].ToString() == "D")
                {
                    orderSequence = "DESC";
                }
                else
                {
                }

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P1", "test");

                // ユーザ入力は指定しない。
                // ※ 動的SQLのVALタグは、前後の空白をつめることが有るので、
                //    必要であれば、前後の空白を明示的に指定する必要がある。
                cmnDao.SetUserParameter("COLUMN", " " + orderColumn + " ");
                cmnDao.SetUserParameter("SEQUENCE", " " + orderSequence + " ");

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 共通Daoを実行
                cmnDao.ExecSelectFill_DT(dt);

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

                break;

            //case "generate": // 自動生成Daoを使用する。
            //    // 当該SQLなし
            //    break;

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

                // 個別Daoを実行
                LayerD_mu myDao = new LayerD_mu(this.GetDam());
                myDao.SelectAll_DSQL(
                    muParameter.ActionType,
                    dic["OrderColumn"].ToString(),
                    dic["OrderSequence"].ToString(), out dt);

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

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #10
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_SelectAll_DR(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            muReturn.Bean    = new Informations("");
            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = 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.SQLText = "SELECT * FROM Shippers";
                    break;

                case "dynamic":
                    // 動的SQLを指定
                    cmnDao.SQLText = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><ROOT>SELECT * FROM Shippers</ROOT>";
                    break;
                }

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 3列生成
                dt.Columns.Add("ShipperID", System.Type.GetType("System.String"));
                dt.Columns.Add("CompanyName", System.Type.GetType("System.String"));
                dt.Columns.Add("Phone", System.Type.GetType("System.String"));

                // 共通Daoを実行
                IDataReader idr = cmnDao.ExecSelect_DR();

                while (idr.Read())
                {
                    // DRから読む
                    object[] objArray = new object[3];
                    idr.GetValues(objArray);

                    // DTに設定する。
                    DataRow dr = dt.NewRow();
                    dr.ItemArray = objArray;
                    dt.Rows.Add(dr);
                }

                // 終了したらクローズ
                idr.Close();

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

                break;

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

                // DRのI/Fなし

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

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 自動生成Daoを実行
                genDao.D2_Select(dt);

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

                break;

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

                // 個別Daoを実行
                LayerD_mu myDao = new LayerD_mu(this.GetDam());
                myDao.SelectAll_DR(muParameter.ActionType, out dt);

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

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #11
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_SelectAll_DS(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            muReturn.Bean    = new Informations("");
            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------
            DataSet ds = 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.SQLText = "SELECT * FROM Shippers";
                    break;

                case "dynamic":
                    // 動的SQLを指定
                    cmnDao.SQLText = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><ROOT>SELECT * FROM Shippers</ROOT>";
                    break;
                }

                // 戻り値 ds
                ds = new DataSet();

                // 共通Daoを実行
                cmnDao.ExecSelectFill_DS(ds);

                // 戻り値をマーシャリングして設定
                muReturn.Bean = new Informations(DataContractHelper.ToList(ds.Tables[0]));

                break;

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

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

                // 戻り値 ds
                ds = new DataSet();
                ds.Tables.Add(new DataTable("rtn"));

                // 自動生成Daoを実行
                genDao.D2_Select(ds.Tables[0]);

                // 戻り値をマーシャリングして設定
                muReturn.Bean = new Informations(DataContractHelper.ToList(ds.Tables[0]));

                break;

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

                // 個別Daoを実行
                LayerD_mu myDao = new LayerD_mu(this.GetDam());
                myDao.SelectAll_DS(muParameter.ActionType, out ds);

                // 戻り値をマーシャリングして設定
                muReturn.Bean = new Informations(DataContractHelper.ToList(ds.Tables[0]));

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #12
0
        /// <summary>WCF サービス本体</summary>
        /// <param name="param">REST 形式で送信された引数(ParamDataContract)</param>
        /// <returns>REST 形式で送信される戻り値(ReturnDataContract)</returns>
        private ReturnDataContract Call(ParamDataContract param)
        {
            // ステータス
            string status = "-";

            // 戻り値
            ReturnDataContract retValue = new ReturnDataContract();

            #region 呼出し制御関係の変数

            // アセンブリ名
            string assemblyName = "";

            // クラス名
            string className = "";

            #endregion

            #region 引数・戻り値関係の変数

            // 引数・戻り値の.NETオブジェクト
            MuParameterValue muParameterValue = null;
            MuReturnValue    muReturnValue    = null;

            // エラー情報(ログ出力用)
            string errorType      = ""; // 2009/09/15-この行
            string errorMessageID = "";
            string errorMessage   = "";
            string errorToString  = "";

            #endregion

            try
            {
                // 開始ログの出力
                LogIF.InfoLog("SERVICE-IF", FxLiteral.SIF_STATUS_START);

                #region  前解決

                // ★
                status = FxLiteral.SIF_STATUS_NAME_SERVICE;

                // 名前解決(インプロセス)
                ServiceForRt.IPR_NS.NameResolution(param.ServiceName, out assemblyName, out className);

                #endregion

                #region 引数の.NETオブジェクト化(UOC)

                // ★
                status = FxLiteral.SIF_STATUS_DESERIALIZE;

                // ★★ 引数の.NETオブジェクト化をUOCする(必要に応じて)。

                // 引数文字列の.NETオブジェクト化

                // クライアントの IP アドレス
                string IpAddress = string.Empty;

                // クライアントの IP アドレスを取得
                OperationContext context = OperationContext.Current;
                if (context.IncomingMessageProperties.ContainsKey(RemoteEndpointMessageProperty.Name) == true)
                {
                    RemoteEndpointMessageProperty property = (RemoteEndpointMessageProperty)context.IncomingMessageProperties[RemoteEndpointMessageProperty.Name];
                    IpAddress = property.Address;
                }

                // ParamDataContractを使用して初期化するなど
                muParameterValue = new MuParameterValue(
                    param.ScreenId == null ? string.Empty : param.ScreenId,     // 画面名
                    param.ControlId == null ? string.Empty : param.ControlId,   // ボタン名
                    param.MethodName == null ? string.Empty : param.MethodName, // メソッド名
                    param.ActionType == null ? string.Empty : param.ActionType, // アクションタイプ
                    new MyUserInfo(param.UserName, IpAddress));

                // ParameterValueを引数のBeanフィールドに設定
                muParameterValue.Bean = param.Info;

                // 引数クラスをパラメタ セットに格納
                object[] paramSet = new object[] { muParameterValue, DbEnum.IsolationLevelEnum.User };

                #endregion

                #region 認証処理(UOC)

                // ★
                status = FxLiteral.SIF_STATUS_AUTHENTICATION;

                //// ★★ 認証が通っているかどうか確認する。
                //if (!HttpContext.Current.Request.IsAuthenticated)
                //{
                //    throw new BusinessSystemException("Authentication", "認証されていません。");
                //}

                // ★★ コンテキストの情報を使用するなどして
                //       認証処理をUOCする(必要に応じて)。

                //// 認証チケットの復号化
                //string[] authTicket = (string[])BinarySerialize.BytesToObject(
                //    CustomEncode.FromBase64String(
                //        SymmetricCryptography.DecryptString(
                //            context, GetConfigParameter.GetConfigValue("private-key"),
                //            EnumSymmetricAlgorithm.TripleDESCryptoServiceProvider)));

                //// ユーザIDの設定
                //muParameterValue.User.UserName = authTicket[0];

                // 認証チケットの整合性を確認
                // Forms認証では、machinekeyを使用している。
                // 必要に応じて認証サービス側も作り変える。

                //// B層・D層呼出し
                ////   タイムスタンプのチェックと、更新
                ////   スライディング・タイムアウトの実装、
                ////   必要であればアカウントの検証も実施
                //BaseReturnValue _returnValue = (BaseReturnValue)Latebind.InvokeMethod(
                //    "xxxx", "yyyy",
                //    FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME,
                //    new object[] { new AuthParameterValue("-", "-", "zzzz", "",
                //        muParameterValue.User, authTicket[1]),
                //        DbEnum.IsolationLevelEnum.User });

                //if (_returnValue.ErrorFlag)
                //{
                //    // 認証エラー
                //    throw new BusinessSystemException("xxxx", "認証チケットが不正か、タイムアウトです。");
                //}

                #endregion

                #region B層・D層呼出し

                // ★
                status = FxLiteral.SIF_STATUS_INVOKE;

                try
                {
                    // B層・D層呼出し

                    //// DLL名も指定するパターン(別DLLに含まれる)
                    //muReturnValue = (MuReturnValue)Latebind.InvokeMethod(
                    //    assemblyName, className, FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME, paramSet);

                    // DLL名は指定しないパターン(ExecutingAssemblyに含まれる)
                    Assembly asm = Assembly.GetExecutingAssembly();

                    // DLL名は指定しないパターンでの例外処理
                    Type t = asm.GetType(className);
                    if (t == null)
                    {
                        throw new BusinessSystemException("NoLBTypeInExecutingAssembly", string.Format("{0}クラスがExecutingAssemblyに存在しません。", className));
                    }

                    object o = Activator.CreateInstance(t);
                    muReturnValue = (MuReturnValue)Latebind.InvokeMethod(o, FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME, paramSet);
                }
                catch (System.Reflection.TargetInvocationException rtEx)
                {
                    // InnerExceptionを投げなおす。
                    throw rtEx.InnerException;
                }

                #endregion

                #region 戻り値の文字列化

                // ★
                status = FxLiteral.SIF_STATUS_SERIALIZE;

                if (muReturnValue.ErrorFlag)
                {
                    // エラー情報を設定する。
                    ErrorInfo errorInfo = new ErrorInfo();

                    // 業務例外
                    errorInfo.ErrorType   = FxEnum.ErrorType.BusinessApplicationException.ToString();
                    errorInfo.MessageID   = muReturnValue.ErrorMessageID;
                    errorInfo.Message     = muReturnValue.ErrorMessage;
                    errorInfo.Information = muReturnValue.ErrorInfo;

                    // ログ出力用の情報を保存
                    errorType      = FxEnum.ErrorType.BusinessApplicationException.ToString(); // 2009/09/15-この行
                    errorMessageID = muReturnValue.ErrorMessageID;
                    errorMessage   = muReturnValue.ErrorMessage;
                    errorToString  = muReturnValue.ErrorInfo;

                    // エラー情報を戻す。
                    retValue.Error = errorInfo;
                }

                #endregion

                // ★
                status = "";

                // 戻り値を設定
                if (muReturnValue.Bean != null && muReturnValue.Bean is Informations)
                {
                    // 正規の戻り値の場合
                    retValue.Info = (Informations)muReturnValue.Bean;
                }
                else
                {
                    //// 不正な戻り値の場合
                    //retValue.Info = new Informations("");
                    throw new Exception("不正な戻り値");
                }

                // 戻り値を返す。
                return(retValue);
            }
            //catch (BusinessApplicationException baEx)
            //{
            // ここには来ない↑
            //}
            catch (BusinessSystemException bsEx)
            {
                // エラー情報を設定する。
                ErrorInfo errorInfo = new ErrorInfo();

                // システム例外
                errorInfo.ErrorType   = FxEnum.ErrorType.BusinessSystemException.ToString();
                errorInfo.MessageID   = bsEx.messageID;
                errorInfo.Message     = bsEx.Message;
                errorInfo.Information = string.Empty;

                // ログ出力用の情報を保存
                errorType      = FxEnum.ErrorType.BusinessSystemException.ToString(); // 2009/09/15-この行
                errorMessageID = bsEx.messageID;
                errorMessage   = bsEx.Message;

                errorToString = bsEx.ToString();

                // エラー情報を戻す。
                retValue.Error = errorInfo;
                return(retValue);
            }
            catch (FrameworkException fxEx)
            {
                // エラー情報を設定する。
                ErrorInfo errorInfo = new ErrorInfo();

                // フレームワーク例外
                // ★ インナーエクセプション情報は消失
                errorInfo.ErrorType   = FxEnum.ErrorType.FrameworkException.ToString();
                errorInfo.MessageID   = fxEx.messageID;
                errorInfo.Message     = fxEx.Message;
                errorInfo.Information = string.Empty;

                // ログ出力用の情報を保存
                errorType      = FxEnum.ErrorType.FrameworkException.ToString(); // 2009/09/15-この行
                errorMessageID = fxEx.messageID;
                errorMessage   = fxEx.Message;

                errorToString = fxEx.ToString();

                // エラー情報を戻す。
                retValue.Error = errorInfo;
                return(retValue);
            }
            catch (Exception ex)
            {
                // エラー情報を設定する。
                ErrorInfo errorInfo = new ErrorInfo();

                // フレームワーク例外
                // ★ インナーエクセプション情報は消失
                errorInfo.ErrorType   = FxEnum.ErrorType.ElseException.ToString();
                errorInfo.MessageID   = "-";
                errorInfo.Message     = ex.ToString();
                errorInfo.Information = string.Empty;

                // ログ出力用の情報を保存
                errorType      = FxEnum.ErrorType.ElseException.ToString(); // 2009/09/15-この行
                errorMessageID = "-";
                errorMessage   = ex.Message;

                // どちらを戻すべきか?
                // Muの場合は、ToStringがデフォ
                //errorToString = ex.Message;
                errorToString = ex.ToString();

                // エラー情報を戻す。
                retValue.Error = errorInfo;
                return(retValue);
                //throw; // コメントアウト
            }
            finally
            {
                // 用途によってSessionを解放するかどうかを検討。

                //// Sessionステートレス
                //Session.Clear();
                //Session.Abandon();

                // 終了ログの出力
                if (status == "")
                {
                    // 終了ログ出力
                    LogIF.InfoLog("SERVICE-IF", "正常終了");
                }
                else
                {
                    // 終了ログ出力
                    LogIF.ErrorLog("SERVICE-IF",
                                   "異常終了"
                                   + ":" + status + "\r\n"
                                   + "エラー タイプ:" + errorType + "\r\n" // 2009/09/15-この行
                                   + "エラー メッセージID:" + errorMessageID + "\r\n"
                                   + "エラー メッセージ:" + errorMessage + "\r\n"
                                   + errorToString + "\r\n");
                }
            }
        }
Exemple #13
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Insert(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());

                cmnDao.SQLFileName = "ShipperInsert.sql";

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P2", dtrow_in["CompanyName"]);
                cmnDao.SetParameter("P3", dtrow_in["Phone"]);

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

                break;

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

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

                // パラメタに対して、動的に値を設定する。
                genDao.CompanyName = dtrow_in["CompanyName"];
                genDao.Phone       = dtrow_in["Phone"];

                // 自動生成Daoを実行
                // 戻り値を設定
                muReturn.Value = genDao.D1_Insert().ToString();

                break;

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

                // 個別Daoを実行
                // 戻り値を設定
                LayerD myDao = new LayerD(this.GetDam());
                myDao.Insert(muParameter.ActionType,
                             (string)dtrow_in["CompanyName"],
                             (string)dtrow_in["Phone"],
                             out muReturn.Value);

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #14
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Delete(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            muReturn.Bean    = new Informations("");
            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            string shipperID = ((Informations)muParameter.Bean).Str;

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

            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 = "ShipperDelete.sql";
                    break;

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

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P1", shipperID);

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

                break;

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

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

                // パラメタに対して、動的に値を設定する。
                genDao.PK_ShipperID = shipperID;

                // 自動生成Daoを実行
                // 戻り値を設定
                muReturn.Bean = new Informations(genDao.S4_Delete().ToString());

                break;

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

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

                // 戻り値を設定
                muReturn.Bean = new Informations(ret);

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #15
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 myDao = new LayerD(this.GetDam());
                myDao.SelectCount(muParameter.ActionType, out ret);

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

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #16
0
        /// <summary>Soap & Bean 個別Soap Webメソッドの共通部</summary>
        /// <param name="context">コンテキスト</param>
        /// <param name="methodName">メソッド名</param>
        /// <param name="parameterValue">引数Bean(個別・・・サブ)</param>
        /// <param name="returnValue">戻り値Bean(個別・・・サブ)</param>
        /// <returns>返すべきエラーの情報</returns>
        private string Call(ref string context, string serviceName, string methodName, string actionType, object parameterValue, out object returnValue)
        {
            // ステータス
            string status = "-";

            // 初期化のため
            returnValue = "";

            #region 呼出し制御関係の変数

            // アセンブリ名
            string assemblyName = "";

            // クラス名
            string className = "";

            #endregion

            #region 引数・戻り値関係の変数

            // 引数・戻り値の.NETオブジェクト
            MuParameterValue muParameterValue = null;
            MuReturnValue    muReturnValue    = null;

            // エラー情報(XMLフォーマット)
            XmlDocument wsErrorInfo = new XmlDocument();
            XmlElement  wsErrorRoot = null;
            XmlElement  wsErrorItem = null;

            // エラー情報(ログ出力用)
            string errorType      = ""; // 2009/09/15-この行
            string errorMessageID = "";
            string errorMessage   = "";
            string errorToString  = "";

            #endregion

            try
            {
                // 開始ログの出力
                LogIF.InfoLog("SERVICE-IF", FxLiteral.SIF_STATUS_START);

                #region  前解決

                // ★
                status = FxLiteral.SIF_STATUS_NAME_SERVICE;

                // 名前解決(インプロセス)
                ServiceForSb.IPR_NS.NameResolution(serviceName, out assemblyName, out className);

                #endregion

                #region 引数の.NETオブジェクト化(UOC)

                // ★
                status = FxLiteral.SIF_STATUS_DESERIALIZE;

                // ★★ 引数の.NETオブジェクト化をUOCする(必要に応じて)。

                // 引数文字列の.NETオブジェクト化

                // string[] cmnParameterValueを使用して初期化するなど
                muParameterValue = new MuParameterValue(
                    "",         //cmnParameterValue[0], // 画面名
                    "",         //cmnParameterValue[1], // ボタン名
                    methodName, //cmnParameterValue[2], // メソッド名
                    actionType, //cmnParameterValue[3], // アクションタイプ
                    new MyUserInfo(context, HttpContext.Current.Request.UserHostAddress));

                // parameterValueを引数の文字列フィールドに設定
                muParameterValue.Bean = parameterValue;

                // 引数クラスをパラメタ セットに格納
                object[] paramSet = new object[] { muParameterValue, DbEnum.IsolationLevelEnum.User };

                #endregion

                #region 認証処理(UOC)

                // ★
                status = FxLiteral.SIF_STATUS_AUTHENTICATION;

                string access_token = (string)context;
                if (!string.IsNullOrEmpty(access_token))
                {
                    string        sub    = "";
                    List <string> roles  = null;
                    List <string> scopes = null;
                    JObject       jobj   = null;

                    if (JwtToken.Verify(access_token, out sub, out roles, out scopes, out jobj))
                    {
                        // 認証成功
                        Debug.WriteLine("認証成功");
                    }
                    else
                    {
                        // 認証失敗(認証必須ならエラーにする。
                    }
                }
                else
                {
                    // 認証失敗(認証必須ならエラーにする。
                }

                #endregion

                #region B層・D層呼出し

                // ★
                status = FxLiteral.SIF_STATUS_INVOKE;

                try
                {
                    // B層・D層呼出し

                    //// DLL名も指定するパターン(別DLLに含まれる)
                    //muReturnValue = (MuReturnValue)Latebind.InvokeMethod(
                    //    assemblyName, className, FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME, paramSet);

                    // DLL名は指定しないパターン(ExecutingAssemblyに含まれる)
                    Assembly asm = Assembly.GetExecutingAssembly();

                    // DLL名は指定しないパターンでの例外処理
                    Type t = asm.GetType(className);
                    if (t == null)
                    {
                        throw new BusinessSystemException("NoLBTypeInExecutingAssembly", string.Format("{0}クラスがExecutingAssemblyに存在しません。", className));
                    }

                    object o = Activator.CreateInstance(t);
                    muReturnValue = (MuReturnValue)Latebind.InvokeMethod(o, FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME, paramSet);
                }
                catch (System.Reflection.TargetInvocationException rtEx)
                {
                    // InnerExceptionを投げなおす。
                    throw rtEx.InnerException;
                }

                #endregion

                #region 戻り値

                // ★
                status = FxLiteral.SIF_STATUS_SERIALIZE;

                returnValue = muReturnValue.Bean;

                if (muReturnValue.ErrorFlag)
                {
                    // エラー情報を設定する。
                    wsErrorRoot = wsErrorInfo.CreateElement("ErrorInfo");
                    wsErrorInfo.AppendChild(wsErrorRoot);

                    // 業務例外
                    wsErrorItem           = wsErrorInfo.CreateElement("ErrorType");
                    wsErrorItem.InnerText = FxEnum.ErrorType.BusinessApplicationException.ToString();
                    wsErrorRoot.AppendChild(wsErrorItem);

                    wsErrorItem           = wsErrorInfo.CreateElement("MessageID");
                    wsErrorItem.InnerText = muReturnValue.ErrorMessageID;
                    wsErrorRoot.AppendChild(wsErrorItem);

                    wsErrorItem           = wsErrorInfo.CreateElement("Message");
                    wsErrorItem.InnerText = muReturnValue.ErrorMessage;
                    wsErrorRoot.AppendChild(wsErrorItem);

                    wsErrorItem           = wsErrorInfo.CreateElement("Information");
                    wsErrorItem.InnerText = muReturnValue.ErrorInfo;
                    wsErrorRoot.AppendChild(wsErrorItem);

                    // ログ出力用の情報を保存
                    errorType      = FxEnum.ErrorType.BusinessApplicationException.ToString(); // 2009/09/15-この行
                    errorMessageID = muReturnValue.ErrorMessageID;
                    errorMessage   = muReturnValue.ErrorMessage;
                    errorToString  = muReturnValue.ErrorInfo;

                    // エラー情報を戻す。
                    return(wsErrorInfo.InnerXml);
                }

                #endregion

                // ★
                status = "";

                // 戻り値を返す。
                return("");
            }
            //catch (BusinessApplicationException baEx)
            //{
            // ここには来ない↑
            //}
            catch (BusinessSystemException bsEx)
            {
                // エラー情報を設定する。
                wsErrorRoot = wsErrorInfo.CreateElement("ErrorInfo");
                wsErrorInfo.AppendChild(wsErrorRoot);

                // システム例外
                wsErrorItem           = wsErrorInfo.CreateElement("ErrorType");
                wsErrorItem.InnerText = FxEnum.ErrorType.BusinessSystemException.ToString();
                wsErrorRoot.AppendChild(wsErrorItem);

                wsErrorItem           = wsErrorInfo.CreateElement("MessageID");
                wsErrorItem.InnerText = bsEx.messageID;
                wsErrorRoot.AppendChild(wsErrorItem);

                wsErrorItem           = wsErrorInfo.CreateElement("Message");
                wsErrorItem.InnerText = bsEx.Message;
                wsErrorRoot.AppendChild(wsErrorItem);

                // ログ出力用の情報を保存
                errorType      = FxEnum.ErrorType.BusinessSystemException.ToString(); // 2009/09/15-この行
                errorMessageID = bsEx.messageID;
                errorMessage   = bsEx.Message;

                errorToString = bsEx.ToString();

                // エラー情報を戻す。
                return(wsErrorInfo.InnerXml);
            }
            catch (FrameworkException fxEx)
            {
                // エラー情報を設定する。
                wsErrorRoot = wsErrorInfo.CreateElement("ErrorInfo");
                wsErrorInfo.AppendChild(wsErrorRoot);

                // フレームワーク例外
                // ★ インナーエクセプション情報は消失
                wsErrorItem           = wsErrorInfo.CreateElement("ErrorType");
                wsErrorItem.InnerText = FxEnum.ErrorType.FrameworkException.ToString();
                wsErrorRoot.AppendChild(wsErrorItem);

                wsErrorItem           = wsErrorInfo.CreateElement("MessageID");
                wsErrorItem.InnerText = fxEx.messageID;
                wsErrorRoot.AppendChild(wsErrorItem);

                wsErrorItem           = wsErrorInfo.CreateElement("Message");
                wsErrorItem.InnerText = fxEx.Message;
                wsErrorRoot.AppendChild(wsErrorItem);

                // ログ出力用の情報を保存
                errorType      = FxEnum.ErrorType.FrameworkException.ToString(); // 2009/09/15-この行
                errorMessageID = fxEx.messageID;
                errorMessage   = fxEx.Message;

                errorToString = fxEx.ToString();

                // エラー情報を戻す。
                return(wsErrorInfo.InnerXml);
            }
            catch (Exception ex)
            {
                // エラー情報を設定する。
                wsErrorRoot = wsErrorInfo.CreateElement("ErrorInfo");
                wsErrorInfo.AppendChild(wsErrorRoot);

                // フレームワーク例外
                // ★ インナーエクセプション情報は消失
                wsErrorItem           = wsErrorInfo.CreateElement("ErrorType");
                wsErrorItem.InnerText = FxEnum.ErrorType.ElseException.ToString();
                wsErrorRoot.AppendChild(wsErrorItem);

                wsErrorItem           = wsErrorInfo.CreateElement("MessageID");
                wsErrorItem.InnerText = "-";
                wsErrorRoot.AppendChild(wsErrorItem);

                wsErrorItem           = wsErrorInfo.CreateElement("Message");
                wsErrorItem.InnerText = ex.ToString();
                wsErrorRoot.AppendChild(wsErrorItem);

                // ログ出力用の情報を保存
                errorType      = FxEnum.ErrorType.ElseException.ToString(); // 2009/09/15-この行
                errorMessageID = "-";
                errorMessage   = ex.Message;

                // どちらを戻すべきか?
                // Muの場合は、Messageがデフォ
                errorToString = ex.Message;
                //errorToString = ex.ToString();

                // エラー情報を戻す。
                return(wsErrorInfo.InnerXml);
                //throw; // コメントアウト
            }
            finally
            {
                // 用途によってSessionを解放するかどうかを検討。

                //// Sessionステートレス
                //Session.Clear();
                //Session.Abandon();

                // 終了ログの出力
                if (status == "")
                {
                    // 終了ログ出力
                    LogIF.InfoLog("SERVICE-IF", "正常終了");
                }
                else
                {
                    // 終了ログ出力
                    LogIF.ErrorLog("SERVICE-IF",
                                   "異常終了"
                                   + ":" + status + "\r\n"
                                   + "エラー タイプ:" + errorType + "\r\n" // 2009/09/15-この行
                                   + "エラー メッセージID:" + errorMessageID + "\r\n"
                                   + "エラー メッセージ:" + errorMessage + "\r\n"
                                   + errorToString + "\r\n");
                }
            }
        }
Exemple #17
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_SelectAll_DSQL(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = null;

            Shipper[] shippers = null;

            string orderColumn   = ((string[])(muParameter.Bean))[0];
            string orderSequence = ((string[])(muParameter.Bean))[1];

            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 = "ShipperSelectOrder.sql";
                    break;

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

                // ユーザ定義パラメタに対して、動的に値を設定する。
                if (orderColumn == "c1")
                {
                    orderColumn = "ShipperID";
                }
                else if (orderColumn == "c2")
                {
                    orderColumn = "CompanyName";
                }
                else if (orderColumn == "c3")
                {
                    orderColumn = "Phone";
                }
                else
                {
                }

                if (orderSequence == "A")
                {
                    orderSequence = "ASC";
                }
                else if (orderSequence == "D")
                {
                    orderSequence = "DESC";
                }
                else
                {
                }

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P1", "test");

                // ユーザ入力は指定しない。
                // ※ 動的SQLのVALタグは、前後の空白をつめることが有るので、
                //    必要であれば、前後の空白を明示的に指定する必要がある。
                cmnDao.SetUserParameter("COLUMN", " " + orderColumn + " ");
                cmnDao.SetUserParameter("SEQUENCE", " " + orderSequence + " ");

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 共通Daoを実行
                cmnDao.ExecSelectFill_DT(dt);

                // 戻り値を設定
                shippers = new Shipper[dt.Rows.Count];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Shipper shipper = new Shipper();
                    shipper.ShipperID   = (int)dt.Rows[i]["ShipperID"];
                    shipper.CompanyName = (string)dt.Rows[i]["CompanyName"];
                    shipper.Phone       = (string)dt.Rows[i]["Phone"];
                    shippers[i]         = shipper;
                }

                muReturn.Bean = shippers;

                break;

            //case "generate": // 自動生成Daoを使用する。
            //    // 当該SQLなし
            //    break;

            default:     // 個別Daoを使用する。
                LayerD_mu myDao = new LayerD_mu(this.GetDam());
                myDao.SelectAll_DSQL(muParameter.ActionType,
                                     orderColumn, orderSequence, out dt);

                // 戻り値を設定
                shippers = new Shipper[dt.Rows.Count];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Shipper shipper = new Shipper();
                    shipper.ShipperID   = (int)dt.Rows[i]["ShipperID"];
                    shipper.CompanyName = (string)dt.Rows[i]["CompanyName"];
                    shipper.Phone       = (string)dt.Rows[i]["Phone"];
                    shippers[i]         = shipper;
                }

                muReturn.Bean = shippers;

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #18
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_SelectAll_DS(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------
            DataSet   ds = null;
            DataTable dt = null;

            Shipper[] shippers = 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.SQLText = "SELECT * FROM Shippers";
                    break;

                case "dynamic":
                    // 動的SQLを指定
                    cmnDao.SQLText = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><ROOT>SELECT * FROM Shippers</ROOT>";
                    break;
                }

                // 戻り値 ds
                ds = new DataSet();

                // 共通Daoを実行
                cmnDao.ExecSelectFill_DS(ds);

                // 戻り値を設定
                dt       = ds.Tables[0];
                shippers = new Shipper[dt.Rows.Count];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Shipper shipper = new Shipper();
                    shipper.ShipperID   = (int)dt.Rows[i]["ShipperID"];
                    shipper.CompanyName = (string)dt.Rows[i]["CompanyName"];
                    shipper.Phone       = (string)dt.Rows[i]["Phone"];
                    shippers[i]         = shipper;
                }

                muReturn.Bean = shippers;

                break;

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

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

                // 戻り値 ds
                ds = new DataSet();
                ds.Tables.Add(new DataTable("rtn"));

                // 自動生成Daoを実行
                genDao.D2_Select(ds.Tables[0]);

                // 戻り値を設定
                dt       = ds.Tables[0];
                shippers = new Shipper[dt.Rows.Count];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Shipper shipper = new Shipper();
                    shipper.ShipperID   = (int)dt.Rows[i]["ShipperID"];
                    shipper.CompanyName = (string)dt.Rows[i]["CompanyName"];
                    shipper.Phone       = (string)dt.Rows[i]["Phone"];
                    shippers[i]         = shipper;
                }

                muReturn.Bean = shippers;

                break;

            default:     // 個別Daoを使用する。
                LayerD_mu myDao = new LayerD_mu(this.GetDam());
                myDao.SelectAll_DS(muParameter.ActionType, out ds);

                // 戻り値を設定
                dt       = ds.Tables[0];
                shippers = new Shipper[dt.Rows.Count];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Shipper shipper = new Shipper();
                    shipper.ShipperID   = (int)dt.Rows[i]["ShipperID"];
                    shipper.CompanyName = (string)dt.Rows[i]["CompanyName"];
                    shipper.Phone       = (string)dt.Rows[i]["Phone"];
                    shippers[i]         = shipper;
                }

                muReturn.Bean = shippers;

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #19
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Select(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            //DTTables dtts_in = Marshalling.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;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = 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 = "ShipperSelect.sql";
                    break;

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

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P1", muParameter.Value);

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 共通Daoを実行
                cmnDao.ExecSelectFill_DT(dt);

                // キャストの対策コードを挿入
                dtt_out = new DTTable("ret");
                dtt_out.Cols.Add(new DTColumn("ShipperID", DTType.Int32));
                dtt_out.Cols.Add(new DTColumn("CompanyName", DTType.String));
                dtt_out.Cols.Add(new DTColumn("Phone", DTType.String));
                dtrow_out = dtt_out.Rows.AddNew();

                // ・SQLの場合、ShipperIDのintがInt32型にマップされる。
                // ・ODPの場合、ShipperIDのNUMBERがInt64型にマップされる。
                // ・DB2の場合、ShipperIDのDECIMALがxxx型にマップされる。
                if (dt.Rows[0].ItemArray.GetValue(0).GetType().ToString() == "System.Int32")
                {
                    // Int32なのでキャスト
                    dtrow_out["ShipperID"] = (int)dt.Rows[0].ItemArray.GetValue(0);
                }
                else
                {
                    // それ以外の場合、一度、文字列に変換してInt32.Parseする。
                    dtrow_out["ShipperID"] = int.Parse(dt.Rows[0].ItemArray.GetValue(0).ToString());
                }

                dtrow_out["CompanyName"] = (string)dt.Rows[0].ItemArray.GetValue(1);
                dtrow_out["Phone"]       = (string)dt.Rows[0].ItemArray.GetValue(2);

                // 戻り値をマーシャリングして設定
                dtts_out = new DTTables();
                dtts_out.Add(dtt_out);
                muReturn.Value = DTTables.DTTablesToString(dtts_out);

                break;

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

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

                // パラメタに対して、動的に値を設定する。
                genDao.PK_ShipperID = muParameter.Value;

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 自動生成Daoを実行
                genDao.S2_Select(dt);

                // キャストの対策コードを挿入
                dtt_out = new DTTable("ret");
                dtt_out.Cols.Add(new DTColumn("ShipperID", DTType.Int32));
                dtt_out.Cols.Add(new DTColumn("CompanyName", DTType.String));
                dtt_out.Cols.Add(new DTColumn("Phone", DTType.String));
                dtrow_out = dtt_out.Rows.AddNew();

                // ・SQLの場合、ShipperIDのintがInt32型にマップされる。
                // ・ODPの場合、ShipperIDのNUMBERがInt64型にマップされる。
                // ・DB2の場合、ShipperIDのDECIMALがxxx型にマップされる。
                if (dt.Rows[0].ItemArray.GetValue(0).GetType().ToString() == "System.Int32")
                {
                    // Int32なのでキャスト
                    dtrow_out["ShipperID"] = (int)dt.Rows[0].ItemArray.GetValue(0);
                }
                else
                {
                    // それ以外の場合、一度、文字列に変換してInt32.Parseする。
                    dtrow_out["ShipperID"] = int.Parse(dt.Rows[0].ItemArray.GetValue(0).ToString());
                }

                dtrow_out["CompanyName"] = (string)dt.Rows[0].ItemArray.GetValue(1);
                dtrow_out["Phone"]       = (string)dt.Rows[0].ItemArray.GetValue(2);

                // 戻り値をマーシャリングして設定
                dtts_out = new DTTables();
                dtts_out.Add(dtt_out);
                muReturn.Value = DTTables.DTTablesToString(dtts_out);

                break;

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

                // 個別Daoを実行
                string companyName;
                string phone;

                LayerD myDao = new LayerD(this.GetDam());
                myDao.Select(muParameter.ActionType, muParameter.Value,
                             out companyName, out phone);

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

                dtrow_out["ShipperID"]   = int.Parse(muParameter.Value);
                dtrow_out["CompanyName"] = companyName;
                dtrow_out["Phone"]       = phone;

                dtts_out = new DTTables();
                dtts_out.Add(dtt_out);
                muReturn.Value = DTTables.DTTablesToString(dtts_out);

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #20
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_SelectAll_DR(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = null;

            Shipper[] shippers = 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.SQLText = "SELECT * FROM Shippers";
                    break;

                case "dynamic":
                    // 動的SQLを指定
                    cmnDao.SQLText = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><ROOT>SELECT * FROM Shippers</ROOT>";
                    break;
                }

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 3列生成
                dt.Columns.Add("ShipperID", System.Type.GetType("System.String"));
                dt.Columns.Add("CompanyName", System.Type.GetType("System.String"));
                dt.Columns.Add("Phone", System.Type.GetType("System.String"));

                // 共通Daoを実行
                IDataReader idr = cmnDao.ExecSelect_DR();

                while (idr.Read())
                {
                    // DRから読む
                    object[] objArray = new object[3];
                    idr.GetValues(objArray);

                    // DTに設定する。
                    DataRow dr = dt.NewRow();
                    dr.ItemArray = objArray;
                    dt.Rows.Add(dr);
                }

                // 終了したらクローズ
                idr.Close();

                // 戻り値を設定
                shippers = new Shipper[dt.Rows.Count];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Shipper shipper = new Shipper();
                    shipper.ShipperID   = int.Parse((string)dt.Rows[i]["ShipperID"]);
                    shipper.CompanyName = (string)dt.Rows[i]["CompanyName"];
                    shipper.Phone       = (string)dt.Rows[i]["Phone"];
                    shippers[i]         = shipper;
                }

                muReturn.Bean = shippers;

                break;

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

                // DRのI/Fなし

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

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 自動生成Daoを実行
                genDao.D2_Select(dt);

                // 戻り値を設定
                shippers = new Shipper[dt.Rows.Count];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Shipper shipper = new Shipper();
                    shipper.ShipperID   = int.Parse(dt.Rows[i]["ShipperID"].ToString());
                    shipper.CompanyName = (string)dt.Rows[i]["CompanyName"];
                    shipper.Phone       = (string)dt.Rows[i]["Phone"];
                    shippers[i]         = shipper;
                }

                muReturn.Bean = shippers;

                break;

            default:     // 個別Daoを使用する。
                LayerD myDao = new LayerD(this.GetDam());
                myDao.SelectAll_DR(muParameter.ActionType, out dt);

                // 戻り値を設定
                shippers = new Shipper[dt.Rows.Count];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Shipper shipper = new Shipper();
                    shipper.ShipperID   = int.Parse((string)dt.Rows[i]["ShipperID"]);
                    shipper.CompanyName = (string)dt.Rows[i]["CompanyName"];
                    shipper.Phone       = (string)dt.Rows[i]["Phone"];
                    shippers[i]         = shipper;
                }

                muReturn.Bean = shippers;

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #21
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Delete(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 = "ShipperDelete.sql";
                    break;

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

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P1", muParameter.Value);

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

                break;

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

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

                // パラメタに対して、動的に値を設定する。
                genDao.PK_ShipperID = muParameter.Value;

                // 自動生成Daoを実行
                // 戻り値を設定
                muReturn.Value = genDao.S4_Delete().ToString();

                break;

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

                // 個別Daoを実行
                // 戻り値を設定
                LayerD myDao = new LayerD(this.GetDam());
                myDao.Delete(muParameter.ActionType, muParameter.Value, out muReturn.Value);

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #22
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Insert(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            muReturn.Bean    = new Informations("");
            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            Dictionary <string, string> dic = ((Informations)muParameter.Bean).Dictionary;

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

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

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

                cmnDao.SQLFileName = "ShipperInsert.sql";

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P2", dic["CompanyName"]);
                cmnDao.SetParameter("P3", dic["Phone"]);

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

                break;

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

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

                // パラメタに対して、動的に値を設定する。
                genDao.CompanyName = dic["CompanyName"];
                genDao.Phone       = dic["Phone"];

                // 自動生成Daoを実行
                // 戻り値を設定
                muReturn.Bean = new Informations(genDao.D1_Insert().ToString());

                break;

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

                // 個別Daoを実行
                string    ret   = "";
                LayerD_mu myDao = new LayerD_mu(this.GetDam());
                myDao.Insert(muParameter.ActionType,
                             dic["CompanyName"],
                             dic["Phone"],
                             out ret);

                // 戻り値を設定
                muReturn.Bean = new Informations(ret);

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #23
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_SelectAll_DS(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;

            // ↓業務処理-----------------------------------------------------
            DataSet ds = 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.SQLText = "SELECT * FROM Shippers";
                    break;

                case "dynamic":
                    // 動的SQLを指定
                    cmnDao.SQLText = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><ROOT>SELECT * FROM Shippers</ROOT>";
                    break;
                }

                // 戻り値 ds
                ds = new DataSet();

                // 共通Daoを実行
                cmnDao.ExecSelectFill_DS(ds);

                // 戻り値をマーシャリングして設定
                dtts_out = new DTTables();
                dtts_out.Add(DTTable.FromDataTable(ds.Tables[0]));
                muReturn.Value = DTTables.DTTablesToString(dtts_out);

                break;

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

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

                // 戻り値 ds
                ds = new DataSet();
                ds.Tables.Add(new DataTable("rtn"));

                // 自動生成Daoを実行
                genDao.D2_Select(ds.Tables[0]);

                // 戻り値をマーシャリングして設定
                dtts_out = new DTTables();
                dtts_out.Add(DTTable.FromDataTable(ds.Tables[0]));
                muReturn.Value = DTTables.DTTablesToString(dtts_out);

                break;

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

                // 個別Daoを実行
                LayerD myDao = new LayerD(this.GetDam());
                myDao.SelectAll_DS(muParameter.ActionType, out ds);

                // 戻り値をマーシャリングして設定
                dtts_out = new DTTables();
                dtts_out.Add(DTTable.FromDataTable(ds.Tables[0]));
                muReturn.Value = DTTables.DTTablesToString(dtts_out);

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #24
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_SelectAll_DSQL(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;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = 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 = "ShipperSelectOrder.sql";
                    break;

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

                // ユーザ定義パラメタに対して、動的に値を設定する。
                string orderColumn   = "";
                string orderSequence = "";

                if (dtrow_in["OrderColumn"].ToString() == "c1")
                {
                    orderColumn = "ShipperID";
                }
                else if (dtrow_in["OrderColumn"].ToString() == "c2")
                {
                    orderColumn = "CompanyName";
                }
                else if (dtrow_in["OrderColumn"].ToString() == "c3")
                {
                    orderColumn = "Phone";
                }
                else
                {
                }

                if (dtrow_in["OrderSequence"].ToString() == "A")
                {
                    orderSequence = "ASC";
                }
                else if (dtrow_in["OrderSequence"].ToString() == "D")
                {
                    orderSequence = "DESC";
                }
                else
                {
                }

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P1", "test");

                // ユーザ入力は指定しない。
                // ※ 動的SQLのVALタグは、前後の空白をつめることが有るので、
                //    必要であれば、前後の空白を明示的に指定する必要がある。
                cmnDao.SetUserParameter("COLUMN", " " + orderColumn + " ");
                cmnDao.SetUserParameter("SEQUENCE", " " + orderSequence + " ");

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 共通Daoを実行
                cmnDao.ExecSelectFill_DT(dt);

                // 戻り値をマーシャリングして設定
                dtts_out = new DTTables();
                dtts_out.Add(DTTable.FromDataTable(dt));
                muReturn.Value = DTTables.DTTablesToString(dtts_out);

                break;

            //case "generate": // 自動生成Daoを使用する。
            //    // 当該SQLなし
            //    break;

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

                // 個別Daoを実行
                LayerD myDao = new LayerD(this.GetDam());
                myDao.SelectAll_DSQL(
                    muParameter.ActionType,
                    dtrow_in["OrderColumn"].ToString(),
                    dtrow_in["OrderSequence"].ToString(), out dt);

                // 戻り値をマーシャリングして設定
                dtts_out = new DTTables();
                dtts_out.Add(DTTable.FromDataTable(dt));
                muReturn.Value = DTTables.DTTablesToString(dtts_out);

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #25
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Select(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------
            DataTable dt      = null;
            Shipper   shipper = 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 = "ShipperSelect.sql";
                    break;

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

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P1", muParameter.Bean.ToString());

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 共通Daoを実行
                cmnDao.ExecSelectFill_DT(dt);

                // 戻り値を設定
                shipper             = new Shipper();
                shipper.ShipperID   = (int)muParameter.Bean;
                shipper.CompanyName = (string)dt.Rows[0].ItemArray.GetValue(1);
                shipper.Phone       = (string)dt.Rows[0].ItemArray.GetValue(2);
                muReturn.Bean       = shipper;

                break;

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

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

                // パラメタに対して、動的に値を設定する。
                genDao.PK_ShipperID = muParameter.Bean.ToString();

                // 戻り値 dt
                dt = new DataTable("rtn");

                // 自動生成Daoを実行
                genDao.S2_Select(dt);

                // 戻り値を設定
                shipper             = new Shipper();
                shipper.ShipperID   = (int)muParameter.Bean;
                shipper.CompanyName = (string)dt.Rows[0].ItemArray.GetValue(1);
                shipper.Phone       = (string)dt.Rows[0].ItemArray.GetValue(2);
                muReturn.Bean       = shipper;

                break;

            default:     // 個別Daoを使用する。
                string companyName;
                string phone;

                LayerD_mu myDao = new LayerD_mu(this.GetDam());
                myDao.Select(muParameter.ActionType,
                             muParameter.Bean.ToString(),
                             out companyName, out phone);

                // 戻り値を設定
                shipper             = new Shipper();
                shipper.ShipperID   = (int)muParameter.Bean;
                shipper.CompanyName = companyName;
                shipper.Phone       = phone;
                muReturn.Bean       = shipper;

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #26
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Update(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------
            Shipper shipper = (Shipper)muParameter.Bean;

            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 = "ShipperUpdate.sql";
                    break;

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

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P1", shipper.ShipperID);
                cmnDao.SetParameter("P2", shipper.CompanyName);
                cmnDao.SetParameter("P3", shipper.Phone);

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

                break;

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

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

                // パラメタに対して、動的に値を設定する。
                genDao.PK_ShipperID           = shipper.ShipperID;
                genDao.Set_CompanyName_forUPD = shipper.CompanyName;
                genDao.Set_Phone_forUPD       = shipper.Phone;

                // 自動生成Daoを実行
                // 戻り値を設定
                muReturn.Bean = genDao.S3_Update().ToString();

                break;

            default:     // 個別Daoを使用する。
                string    ret   = "";
                LayerD_mu myDao = new LayerD_mu(this.GetDam());
                myDao.Update(muParameter.ActionType,
                             shipper.ShipperID.ToString(), shipper.CompanyName, shipper.Phone, out ret);
                muReturn.Bean = ret;

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Exemple #27
0
        /// <summary>Soap & Bean の個別Webメソッドの共通部</summary>
        /// <param name="context">コンテキスト</param>
        /// <param name="methodName">メソッド名</param>
        /// <param name="parameterValue">引数Bean(個別・・・サブ)</param>
        /// <param name="returnValue">戻り値Bean(個別・・・サブ)</param>
        /// <returns>返すべきエラーの情報</returns>
        private string Call(ref string context, string serviceName, string methodName, string actionType, object parameterValue, out object returnValue)
        {
            // ステータス
            string status = "-";

            // 初期化のため
            returnValue = "";

            #region 呼出し制御関係の変数

            // アセンブリ名
            string assemblyName = "";

            // クラス名
            string className = "";

            #endregion

            #region 引数・戻り値関係の変数

            // 引数・戻り値の.NETオブジェクト
            MuParameterValue muParameterValue = null;
            MuReturnValue    muReturnValue    = null;

            // エラー情報(XMLフォーマット)
            XmlDocument wsErrorInfo = new XmlDocument();
            XmlElement  wsErrorRoot = null;
            XmlElement  wsErrorItem = null;

            // エラー情報(ログ出力用)
            string errorType      = ""; // 2009/09/15-この行
            string errorMessageID = "";
            string errorMessage   = "";
            string errorToString  = "";

            #endregion

            try
            {
                // 開始ログの出力
                LogIF.InfoLog("SERVICE-IF", FxLiteral.SIF_STATUS_START);

                #region  前解決

                // ★
                status = FxLiteral.SIF_STATUS_NAME_SERVICE;

                // 名前解決(インプロセス)
                ServiceForSb.IPR_NS.NameResolution(serviceName, out assemblyName, out className);

                #endregion

                #region 引数の.NETオブジェクト化(UOC)

                // ★
                status = FxLiteral.SIF_STATUS_DESERIALIZE;

                // ★★ 引数の.NETオブジェクト化をUOCする(必要に応じて)。

                // 引数文字列の.NETオブジェクト化

                // string[] cmnParameterValueを使用して初期化するなど
                muParameterValue = new MuParameterValue(
                    "",         //cmnParameterValue[0], // 画面名
                    "",         //cmnParameterValue[1], // ボタン名
                    methodName, //cmnParameterValue[2], // メソッド名
                    actionType, //cmnParameterValue[3], // アクションタイプ
                    new MyUserInfo(context, HttpContext.Current.Request.UserHostAddress));

                // parameterValueを引数の文字列フィールドに設定
                muParameterValue.Bean = parameterValue;

                // 引数クラスをパラメタ セットに格納
                object[] paramSet = new object[] { muParameterValue, DbEnum.IsolationLevelEnum.User };

                #endregion

                #region 認証処理(UOC)

                // ★
                status = FxLiteral.SIF_STATUS_AUTHENTICATION;

                // ★★ 認証が通っているかどうか確認する。
                if (!HttpContext.Current.Request.IsAuthenticated)
                {
                    throw new BusinessSystemException("Authentication", "認証されていません。");
                }

                // ★★ コンテキストの情報を使用するなどして
                //       認証処理をUOCする(必要に応じて)。

                //// 認証チケットの復号化
                //string[] authTicket = (string[])BinarySerialize.BytesToObject(
                //    CustomEncode.FromBase64String(
                //        SymmetricCryptography.DecryptString(
                //            context, GetConfigParameter.GetConfigValue("private-key"),
                //            EnumSymmetricAlgorithm.TripleDESCryptoServiceProvider)));

                //// ユーザIDの設定
                //muParameterValue.User.UserName = authTicket[0];

                // 認証チケットの整合性を確認
                // Forms認証では、machinekeyを使用している。
                // 必要に応じて認証サービス側も作り変える。

                //// B層・D層呼出し
                ////   タイムスタンプのチェックと、更新
                ////   スライディング・タイムアウトの実装、
                ////   必要であればアカウントの検証も実施
                //BaseReturnValue _returnValue = (BaseReturnValue)Latebind.InvokeMethod(
                //    "xxxx", "yyyy",
                //    FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME,
                //    new object[] { new AuthParameterValue("-", "-", "zzzz", "",
                //        muParameterValue.User, authTicket[1]),
                //        DbEnum.IsolationLevelEnum.User });

                //if (_returnValue.ErrorFlag)
                //{
                //    // 認証エラー
                //    throw new BusinessSystemException("xxxx", "認証チケットが不正か、タイムアウトです。");
                //}

                // 持ち回るならCookieにするか、
                // contextをrefにするなどとする。
                context = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"); // 更新されたかのテストコード

                #endregion

                #region B層・D層呼出し

                // ★
                status = FxLiteral.SIF_STATUS_INVOKE;

                try
                {
                    // B層・D層呼出し

                    //// DLL名も指定するパターン(別DLLに含まれる)
                    //muReturnValue = (MuReturnValue)Latebind.InvokeMethod(
                    //    assemblyName, className, FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME, paramSet);

                    // DLL名は指定しないパターン(ExecutingAssemblyに含まれる)
                    Assembly asm = Assembly.GetExecutingAssembly();

                    // DLL名は指定しないパターンでの例外処理
                    Type t = asm.GetType(className);
                    if (t == null)
                    {
                        throw new BusinessSystemException("NoLBTypeInExecutingAssembly", string.Format("{0}クラスがExecutingAssemblyに存在しません。", className));
                    }

                    object o = Activator.CreateInstance(t);
                    muReturnValue = (MuReturnValue)Latebind.InvokeMethod(o, FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME, paramSet);
                }
                catch (System.Reflection.TargetInvocationException rtEx)
                {
                    // InnerExceptionを投げなおす。
                    throw rtEx.InnerException;
                }

                #endregion

                #region 戻り値

                // ★
                status = FxLiteral.SIF_STATUS_SERIALIZE;

                returnValue = muReturnValue.Bean;

                if (muReturnValue.ErrorFlag)
                {
                    // エラー情報を設定する。
                    wsErrorRoot = wsErrorInfo.CreateElement("ErrorInfo");
                    wsErrorInfo.AppendChild(wsErrorRoot);

                    // 業務例外
                    wsErrorItem           = wsErrorInfo.CreateElement("ErrorType");
                    wsErrorItem.InnerText = FxEnum.ErrorType.BusinessApplicationException.ToString();
                    wsErrorRoot.AppendChild(wsErrorItem);

                    wsErrorItem           = wsErrorInfo.CreateElement("MessageID");
                    wsErrorItem.InnerText = muReturnValue.ErrorMessageID;
                    wsErrorRoot.AppendChild(wsErrorItem);

                    wsErrorItem           = wsErrorInfo.CreateElement("Message");
                    wsErrorItem.InnerText = muReturnValue.ErrorMessage;
                    wsErrorRoot.AppendChild(wsErrorItem);

                    wsErrorItem           = wsErrorInfo.CreateElement("Information");
                    wsErrorItem.InnerText = muReturnValue.ErrorInfo;
                    wsErrorRoot.AppendChild(wsErrorItem);

                    // ログ出力用の情報を保存
                    errorType      = FxEnum.ErrorType.BusinessApplicationException.ToString(); // 2009/09/15-この行
                    errorMessageID = muReturnValue.ErrorMessageID;
                    errorMessage   = muReturnValue.ErrorMessage;
                    errorToString  = muReturnValue.ErrorInfo;

                    // エラー情報を戻す。
                    return(wsErrorInfo.InnerXml);
                }

                #endregion

                // ★
                status = "";

                // 戻り値を返す。
                return("");
            }
            //catch (BusinessApplicationException baEx)
            //{
            // ここには来ない↑
            //}
            catch (BusinessSystemException bsEx)
            {
                // エラー情報を設定する。
                wsErrorRoot = wsErrorInfo.CreateElement("ErrorInfo");
                wsErrorInfo.AppendChild(wsErrorRoot);

                // システム例外
                wsErrorItem           = wsErrorInfo.CreateElement("ErrorType");
                wsErrorItem.InnerText = FxEnum.ErrorType.BusinessSystemException.ToString();
                wsErrorRoot.AppendChild(wsErrorItem);

                wsErrorItem           = wsErrorInfo.CreateElement("MessageID");
                wsErrorItem.InnerText = bsEx.messageID;
                wsErrorRoot.AppendChild(wsErrorItem);

                wsErrorItem           = wsErrorInfo.CreateElement("Message");
                wsErrorItem.InnerText = bsEx.Message;
                wsErrorRoot.AppendChild(wsErrorItem);

                // ログ出力用の情報を保存
                errorType      = FxEnum.ErrorType.BusinessSystemException.ToString(); // 2009/09/15-この行
                errorMessageID = bsEx.messageID;
                errorMessage   = bsEx.Message;

                errorToString = bsEx.ToString();

                // エラー情報を戻す。
                return(wsErrorInfo.InnerXml);
            }
            catch (FrameworkException fxEx)
            {
                // エラー情報を設定する。
                wsErrorRoot = wsErrorInfo.CreateElement("ErrorInfo");
                wsErrorInfo.AppendChild(wsErrorRoot);

                // フレームワーク例外
                // ★ インナーエクセプション情報は消失
                wsErrorItem           = wsErrorInfo.CreateElement("ErrorType");
                wsErrorItem.InnerText = FxEnum.ErrorType.FrameworkException.ToString();
                wsErrorRoot.AppendChild(wsErrorItem);

                wsErrorItem           = wsErrorInfo.CreateElement("MessageID");
                wsErrorItem.InnerText = fxEx.messageID;
                wsErrorRoot.AppendChild(wsErrorItem);

                wsErrorItem           = wsErrorInfo.CreateElement("Message");
                wsErrorItem.InnerText = fxEx.Message;
                wsErrorRoot.AppendChild(wsErrorItem);

                // ログ出力用の情報を保存
                errorType      = FxEnum.ErrorType.FrameworkException.ToString(); // 2009/09/15-この行
                errorMessageID = fxEx.messageID;
                errorMessage   = fxEx.Message;

                errorToString = fxEx.ToString();

                // エラー情報を戻す。
                return(wsErrorInfo.InnerXml);
            }
            catch (Exception ex)
            {
                // エラー情報を設定する。
                wsErrorRoot = wsErrorInfo.CreateElement("ErrorInfo");
                wsErrorInfo.AppendChild(wsErrorRoot);

                // フレームワーク例外
                // ★ インナーエクセプション情報は消失
                wsErrorItem           = wsErrorInfo.CreateElement("ErrorType");
                wsErrorItem.InnerText = FxEnum.ErrorType.ElseException.ToString();
                wsErrorRoot.AppendChild(wsErrorItem);

                wsErrorItem           = wsErrorInfo.CreateElement("MessageID");
                wsErrorItem.InnerText = "-";
                wsErrorRoot.AppendChild(wsErrorItem);

                wsErrorItem           = wsErrorInfo.CreateElement("Message");
                wsErrorItem.InnerText = ex.ToString();
                wsErrorRoot.AppendChild(wsErrorItem);

                // ログ出力用の情報を保存
                errorType      = FxEnum.ErrorType.ElseException.ToString(); // 2009/09/15-この行
                errorMessageID = "-";
                errorMessage   = ex.Message;

                // どちらを戻すべきか?
                // Muの場合は、Messageがデフォ
                errorToString = ex.Message;
                //errorToString = ex.ToString();

                // エラー情報を戻す。
                return(wsErrorInfo.InnerXml);
                //throw; // コメントアウト
            }
            finally
            {
                // 用途によってSessionを解放するかどうかを検討。

                //// Sessionステートレス
                //Session.Clear();
                //Session.Abandon();

                // 終了ログの出力
                if (status == "")
                {
                    // 終了ログ出力
                    LogIF.InfoLog("SERVICE-IF", "正常終了");
                }
                else
                {
                    // 終了ログ出力
                    LogIF.ErrorLog("SERVICE-IF",
                                   "異常終了"
                                   + ":" + status + "\r\n"
                                   + "エラー タイプ:" + errorType + "\r\n" // 2009/09/15-この行
                                   + "エラー メッセージID:" + errorMessageID + "\r\n"
                                   + "エラー メッセージ:" + errorMessage + "\r\n"
                                   + errorToString + "\r\n");
                }
            }
        }
Exemple #28
0
        /// <summary>Silverlight&汎用DTOのテスト(DataGrid初期化処理)</summary>
        /// <param name="muParameter">引数クラス</param>
        protected void UOC_InitDataGrid(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            //DTTables dtts_in = Marshalling.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;

            // テーブル生成@汎用DTO
            dtt_out = new DTTable("test");

            // カラム定義@汎用DTOテーブル
            dtt_out.Cols.Add(new DTColumn("boolVal", DTType.Boolean));
            dtt_out.Cols.Add(new DTColumn("charVal", DTType.Char));
            dtt_out.Cols.Add(new DTColumn("dateVal", DTType.DateTime));
            dtt_out.Cols.Add(new DTColumn("decimalVal", DTType.Decimal));
            dtt_out.Cols.Add(new DTColumn("doubleVal", DTType.Double));
            dtt_out.Cols.Add(new DTColumn("shortVal", DTType.Int16));
            dtt_out.Cols.Add(new DTColumn("intVal", DTType.Int32));
            dtt_out.Cols.Add(new DTColumn("longVal", DTType.Int64));
            dtt_out.Cols.Add(new DTColumn("singleVal", DTType.Single));
            dtt_out.Cols.Add(new DTColumn("stringVal", DTType.String));

            // 行追加@汎用DTOテーブル

            // 1行目
            dtrow_out               = dtt_out.Rows.AddNew();
            dtrow_out["boolVal"]    = true;
            dtrow_out["charVal"]    = 'a';
            dtrow_out["dateVal"]    = new DateTime(1977, 7, 22, 10, 20, 30, 444);
            dtrow_out["decimalVal"] = 10000;
            dtrow_out["doubleVal"]  = 3.55D;
            dtrow_out["shortVal"]   = 100;
            dtrow_out["intVal"]     = 1000000;
            dtrow_out["longVal"]    = 1000000000000;
            dtrow_out["singleVal"]  = 3.5f;
            dtrow_out["stringVal"]  = "test";

            // 2行目
            dtrow_out               = dtt_out.Rows.AddNew();
            dtrow_out["boolVal"]    = false;
            dtrow_out["charVal"]    = 'b';
            dtrow_out["dateVal"]    = new DateTime(1976, 4, 23, 10, 20, 30, 444);
            dtrow_out["decimalVal"] = 20000;
            dtrow_out["doubleVal"]  = 6.11D;
            dtrow_out["shortVal"]   = 200;
            dtrow_out["intVal"]     = 2000000;
            dtrow_out["longVal"]    = 2000000000000;
            dtrow_out["singleVal"]  = 6.5f;
            dtrow_out["stringVal"]  = "test2";

            // 3行目
            dtrow_out               = dtt_out.Rows.AddNew();
            dtrow_out["boolVal"]    = true;
            dtrow_out["charVal"]    = 'c';
            dtrow_out["dateVal"]    = new DateTime(1975, 1, 1, 10, 20, 30, 444);
            dtrow_out["decimalVal"] = 30000;
            dtrow_out["doubleVal"]  = 8.25D;
            dtrow_out["shortVal"]   = 300;
            dtrow_out["intVal"]     = 3000000;
            dtrow_out["longVal"]    = 3000000000000;
            dtrow_out["singleVal"]  = 7.2f;
            dtrow_out["stringVal"]  = "test3";

            // ここで変更を確定させる
            dtt_out.AcceptChanges();

            // 戻り値をマーシャリングして設定
            dtts_out = new DTTables();
            dtts_out.Add(dtt_out);
            ((MuReturnValue)this.ReturnValue).Value = DTTables.DTTablesToString(dtts_out);
        }