Пример #1
0
        public List <WFItem> GetSubmitOrApproveSteps(string InstanceStepExecutorId)
        {
            WFInstance                Instance;
            WFInstanceStep            InstanceStep;
            WF_M_STEP                 Step;
            WF_T_INSTANCESTEPEXECUTOR InstanceStepExecutor;

            InstanceStepExecutorDAO.GetAllInfo(InstanceStepExecutorId,
                                               out InstanceStepExecutor, out InstanceStep, out Instance, out Step);

            if (IsHideNextStep(InstanceStepExecutor.InstanceStepId))
            {
                return(new List <WFItem>());
            }

            // 得到 sql 语句
            var instance = WFDA.Instance.GetInstance(InstanceStep.InstanceId);
            var data1    = WFBusinessData.AddPrefix("WF_T_INSTANCE_", WFBusinessData.CreateInstance <WF_T_INSTANCE>(instance));
            var data2    = WFBusinessData.AddPrefix("WF_T_INSTANCESTEP_", WFBusinessData.CreateInstance <WF_T_INSTANCESTEP>(InstanceStep));
            var data3    = WFBusinessData.AddPrefix("WF_T_INSTANCESTEPEXECUTOR_", WFBusinessData.CreateInstance <WF_T_INSTANCESTEPEXECUTOR>(InstanceStepExecutor));

            WFBusinessData.Merge(data2, data1);
            WFBusinessData.Merge(data3, data1);
            var businessData = data1;

            var sql = Pub.GetOriginalSql(Step.Script);

            return(GetWFItems(instance, businessData, ref sql));
        }
Пример #2
0
        public override int Query(FormM form, DFDictionary entity, DataGridVM vm, int start, int limit, ref string message)
        {
            if (entity["action"] == "querylist")
            {
                if (entity["subAction"] == "queryVariables")
                {
                    var data1 = WFBusinessData.AddPrefix("WF_T_INSTANCE_", WFBusinessData.CreateInstance <WF_T_INSTANCE>(new WFInstance()));
                    var data2 = WFBusinessData.AddPrefix("WF_T_INSTANCESTEP_", WFBusinessData.CreateInstance <WF_T_INSTANCESTEP>(new WFInstanceStep()));
                    var data3 = WFBusinessData.AddPrefix("WF_T_INSTANCESTEPEXECUTOR_", WFBusinessData.CreateInstance <WF_T_INSTANCESTEPEXECUTOR>(new WF_T_INSTANCESTEPEXECUTOR()));
                    WFBusinessData.Merge(data2, data1);
                    WFBusinessData.Merge(data3, data1);
                    var businessData = data1;
                    vm.rows = businessData.Keys.OrderBy(a => a).Select(a => new WFItem()
                    {
                        text = string.Format("@{0}", a), value = string.Format("@{0}", a)
                    }).ToList();
                    return(DFPub.EXECUTE_SUCCESS);
                }
                else
                {
                    var list  = new List <WFItem>();
                    var model = WFDA.Instance.GetModelById(entity["ModelId"]);
                    if (model != null)
                    {
                        list.Add(new WFItem()
                        {
                            text = model.ModelName, value = string.Format("{0}", model.ModelName).Trim()
                        });
                    }
                    list.AddRange(WFDA.Instance.GetSteps(entity["ModelId"]).Select(a =>
                                                                                   new WFItem()
                    {
                        text = a.StepName, value = string.Format("{0}", a.StepName).Trim()
                    }).ToList());

                    vm.rows = list;
                    return(DFPub.EXECUTE_SUCCESS);
                }
            }
            using (var db = Pub.DB)
            {
                var sql = "select * from WF_M_STEP where 1=1";
                sql += " and ModelId=@ModelId";
                sql += " order by StepOrder";
                var parameters = new
                {
                    ModelId = entity["ModelId"]
                };
                vm.results = db.Query <int>(DFPub.GetCountSql(sql), parameters).FirstOrDefault();
                var list = db.Query <VM_WF_M_STEP>(DFPub.GetPageSql(sql, start + 1, start + limit), parameters).ToList();
                vm.rows = list;
                return(DFPub.EXECUTE_SUCCESS);
            }
        }
Пример #3
0
        /// <summary>
        /// 尝试某个运行时节点的下面的步骤
        /// </summary>
        /// <param name="InstanceStepId"></param>
        /// <returns></returns>
        private List <WFItem> TryGetNextSteps(string InstanceStepExecutorId)
        {
            var InstanceStepExecutor = InstanceStepExecutorDAO.Get(InstanceStepExecutorId);
            var InstanceStep         = WFDA.Instance.GetInstanceStep(InstanceStepExecutor.InstanceStepId);
            var instance             = WFDA.Instance.GetInstance(InstanceStep.InstanceId);

            var data1 = WFBusinessData.AddPrefix("WF_T_INSTANCE_", WFBusinessData.CreateInstance <WF_T_INSTANCE>(instance));
            var data2 = WFBusinessData.AddPrefix("WF_T_INSTANCESTEP_", WFBusinessData.CreateInstance <WF_T_INSTANCESTEP>(InstanceStep));
            var data3 = WFBusinessData.AddPrefix("WF_T_INSTANCESTEPEXECUTOR_", WFBusinessData.CreateInstance <WF_T_INSTANCESTEPEXECUTOR>(InstanceStepExecutor));

            WFBusinessData.Merge(data2, data1);
            WFBusinessData.Merge(data3, data1);
            var businessData = data1;

            var Step = WFDA.Instance.GetStep(InstanceStep.StepId);
            var sql  = Pub.GetOriginalSql(Step.Script);

            return(GetWFItems(instance, businessData, ref sql));
        }
Пример #4
0
        private static List <WFItem> GetWFItems(WFInstance instance, WFBusinessData businessData, ref string sql)
        {
            List <WFItem> list = new List <WFItem>();

            if (!string.IsNullOrWhiteSpace(sql))
            {
                if (sql.IndexOf("WF_M_STEP") >= 0 && sql.IndexOf("WF_M_MODEL") >= 0)
                {
                    using (var db = Pub.DB)
                    {
                        list = db.Query <VM_WF_M_STEP>(sql, Pub.ToDynamic(businessData))
                               .Select(a => new WFItem()
                        {
                            text = a.StepName, value = a.StepId
                        }).ToList();
                    }
                }
                else
                {
                    using (var db = Pub.DB)
                    {
                        var StepNames = db.Query <string>(sql, Pub.ToDynamic(businessData)).ToList();
                        if (StepNames.Count == 0)
                        {
                            StepNames.Add("-1");
                        }
                        sql = "SELECT a.StepId,a.StepName FROM dbo.WF_M_STEP a, dbo.WF_M_MODEL b WHERE a.ModelId=b.ModelId AND b.ModelName=@ModelName AND a.StepName IN @StepNames";

                        list = db.Query <VM_WF_M_STEP>(sql, new
                        {
                            ModelName = instance.ModelName,
                            StepNames = StepNames
                        })
                               .Select(a => new WFItem()
                        {
                            text = a.StepName, value = a.StepId
                        }).ToList();
                    }
                }
            }
            return(list);
        }