示例#1
0
        /// <summary>
        /// 添加脚本流节点配置的实例(后期执行脚本流时,按此配置顺序执行相应节点)
        /// </summary>
        /// <param name="scriptID">脚本流ID</param>
        /// <param name="scriptCaseID">脚本流实例ID</param>
        /// <returns></returns>
        public List <long> AddReturnNodeIDList(long scriptID, long scriptCaseID)
        {
            IList <EM_SCRIPT_REF_NODE.Entity> refList = EM_SCRIPT_REF_NODE.Instance.GetNodeListByScriptID(scriptID);
            //用于去重
            Dictionary <long, byte> dic = new Dictionary <long, byte>();

            if (refList != null && refList.Count > 0)
            {
                using (BDBHelper dbHelper = new BDBHelper())
                {
                    //开始事务
                    dbHelper.BeginTrans();
                    foreach (EM_SCRIPT_REF_NODE.Entity refEntity in refList)
                    {
                        try
                        {
                            Entity entity = new Entity();
                            if (Main.KeyFieldIsUseSequence)
                            {
                                entity.ID = GetNextValueFromSeq();
                            }
                            entity.SCRIPT_ID      = scriptID;
                            entity.SCRIPT_CASE_ID = scriptCaseID;
                            entity.PARENT_NODE_ID = refEntity.PARENT_NODE_ID;
                            entity.CURR_NODE_ID   = refEntity.CURR_NODE_ID;
                            entity.REMARK         = refEntity.REMARK;

                            int i = Add(entity);
                            if (i < 0)
                            {
                                dbHelper.RollbackTrans();
                                dic.Clear();
                                break;
                            }
                            if (dic.ContainsKey(entity.CURR_NODE_ID) == false)
                            {
                                dic.Add(entity.CURR_NODE_ID, 1);
                            }
                        }
                        catch (Exception ex)
                        {
                            BLog.Write(BLog.LogLevel.ERROR, "添加脚本流节点配置的实例出错\t" + ex.ToString());
                            //出错回滚
                            dbHelper.RollbackTrans();
                            return(new List <long>());
                        }
                    }
                    //提交事务
                    dbHelper.CommitTrans();
                    dbHelper.Close();
                }
            }

            return(dic.Keys.ToList <long>());
        }
        /// <summary>
        /// 添加节点实例列表
        /// </summary>
        /// <param name="scriptCaseID">脚本实例ID</param>
        /// <param name="nodeIDList">脚本相关节点ID列表</param>
        /// <returns>添加成功的节点实例ID列表</returns>
        public List <long> AddCaseReturnList(long scriptCaseID, List <long> nodeIDList)
        {
            List <long> list = new List <long>();

            if (scriptCaseID < 1 || nodeIDList.Count < 1)
            {
                return(list);
            }

            int i      = 0;
            int caseid = 0;

            using (BDBHelper dbHelper = new BDBHelper())
            {
                //开始事务
                dbHelper.BeginTrans();
                foreach (long nodeID in nodeIDList)
                {
                    try
                    {
                        EM_SCRIPT_NODE.Entity ne = EM_SCRIPT_NODE.Instance.GetEntityByKey <EM_SCRIPT_NODE.Entity>(nodeID);
                        Entity entity            = new Entity();
                        if (Main.KeyFieldIsUseSequence)
                        {
                            entity.ID = GetNextValueFromSeq();
                        }
                        entity.SCRIPT_CASE_ID      = scriptCaseID;
                        entity.SCRIPT_NODE_ID      = ne.ID;
                        entity.SCRIPT_NODE_TYPE_ID = ne.SCRIPT_NODE_TYPE_ID;
                        entity.NAME         = ne.NAME;
                        entity.CODE         = ne.CODE;
                        entity.DB_SERVER_ID = ne.DB_SERVER_ID;
                        entity.SCRIPT_MODEL = ne.SCRIPT_MODEL;
                        if (entity.SCRIPT_MODEL == Enums.ScriptModel.CreateTb.GetHashCode())
                        {
                            entity.CONTENT      = ne.CONTENT.ToUpper();
                            entity.E_TABLE_NAME = ne.E_TABLE_NAME.ToUpper();
                        }
                        else
                        {
                            entity.CONTENT      = ne.CONTENT;
                            entity.E_TABLE_NAME = ne.E_TABLE_NAME;
                        }
                        entity.REMARK       = ne.REMARK;
                        entity.C_TABLE_NAME = ne.C_TABLE_NAME;
                        entity.TABLE_TYPE   = ne.TABLE_TYPE;
                        entity.TABLE_MODEL  = ne.TABLE_MODEL;
                        entity.CREATE_TIME  = ne.CREATE_TIME;
                        entity.CREATE_UID   = ne.CREATE_UID;

                        caseid = Add(entity, true);
                        if (caseid > 0)
                        {
                            i++;
                            list.Add(caseid);
                        }
                    }
                    catch (Exception ex)
                    {
                        i = 0;
                        dbHelper.RollbackTrans();
                        list.Clear();

                        break;
                    }
                }

                if (i != nodeIDList.Count)
                {
                    i = 0;
                    dbHelper.RollbackTrans();
                    list.Clear();
                }

                //提交事务
                dbHelper.CommitTrans();
                dbHelper.Close();
            }

            return(list);
        }