Example #1
0
        /// <summary>
        /// 解析参数
        /// </summary>
        /// <param name="schemaCode">数据模型编码</param>
        /// <param name="id">定时任务ID</param>
        /// <returns>解析结果</returns>
        private ActionResult ParseParam(string schemaCode = "", string id = "")
        {
            ActionResult result = new ActionResult();

            this.InvokerId = id;
            if (string.IsNullOrEmpty(this.InvokerId))
            {
                // 新建模式
                this.Edit       = false;
                this.SchemaCode = schemaCode;

                if (string.IsNullOrEmpty(this.SchemaCode))
                {
                    //指定的参数不正确
                    result.Message = "ScheduleInvoker.Msg3";
                    result.Success = false;
                    return(result);
                }

                this.Schema = this.Engine.BizObjectManager.GetPublishedSchema(this.SchemaCode);
                if (this.Schema == null)
                {
                    //业务对象模式不存在
                    result.Message = "ScheduleInvoker.Msg4";
                    result.Success = false;
                    return(result);
                }
            }
            else
            {
                // 编辑模式
                this.Edit = true;

                this.Invoker = this.Engine.BizObjectManager.GetScheduleInvoker(this.InvokerId);
                if (this.Invoker == null)
                {
                    //该定期调用设置不存在
                    result.Message = "ScheduleInvoker.Msg5";
                    result.Success = false;
                    return(result);
                }

                this.Schema     = this.Engine.BizObjectManager.GetDraftSchema(this.Invoker.SchemaCode);
                this.SchemaCode = this.Invoker.SchemaCode;
                if (this.Schema == null)
                {
                    //业务对象模式不存在

                    result.Message = "ScheduleInvoker.Msg1";
                    result.Success = false;
                    return(result);
                }
            }
            result.Success = true;
            return(result);
        }
Example #2
0
        public JsonResult SaveScheduleInvoker(ScheduleInvokerViewModel model)
        {
            return(ExecuteFunctionRun(() =>
            {
                ActionResult result = new ActionResult();
                result = ParseParam(model.SchemaCode, model.ObjectID);
                if (!result.Success)
                {
                    return Json(result, JsonRequestBehavior.AllowGet);
                }
                // 验证输入是否正确
                int interval = 0;
                if (!int.TryParse(model.IntervalSecond, out interval))
                {
                    //时间间隔必须是正整数
                    result.Message = "ScheduleInvoker.Msg7";
                    result.Success = false;
                    return Json(result, JsonRequestBehavior.AllowGet);
                }
                if (interval < H3.DataModel.Declaration.Filter_MinIntervalSecond)
                {
                    //时间间隔设置过于密集,会造成服务器资源消耗太大
                    result.Message = "ScheduleInvoker.Msg8";
                    result.Success = false;
                    return Json(result, JsonRequestBehavior.AllowGet);
                }

                // 验证过滤器的设置
                try
                {
                    H3.BizBus.Filter.Filter filter = (H3.BizBus.Filter.Filter)OThinker.Data.Convertor.XmlToObject(typeof(H3.BizBus.Filter.Filter), model.FilterDefinition);
                }
                catch
                {
                    //过滤器设置不正确,无法解析
                    result.Message = "ScheduleInvoker.Msg9";
                    result.Success = false;
                    return Json(result, JsonRequestBehavior.AllowGet);
                }

                // 验证条件表达式
                if (!string.IsNullOrEmpty(model.ExeCondition))
                {
                    H3.DataModel.BizObject bo = new H3.DataModel.BizObject(this.Engine.Organization, this.Engine.MetadataRepository, this.Engine.BizObjectManager, this.Engine.BizBus, this.Schema, this.UserValidator.UserID, this.UserValidator.User.ParentID);
                    try
                    {
                        object v = bo.CalcExpression <bool>(model.ExeCondition);
                    }
                    catch (Exception ex)
                    {
                        //条件表达式不正确
                        result.Message = "ScheduleInvoker.Msg10";
                        result.Success = false;
                        return Json(result, JsonRequestBehavior.AllowGet);
                    }
                }

                H3.DataModel.ScheduleInvoker si = null;
                if (this.Edit)
                {
                    si = this.Invoker;
                }
                else
                {
                    si = new ScheduleInvoker();
                    si.SchemaCode = this.SchemaCode;
                }

                si.DisplayName = model.DisplayName;
                si.Description = model.Description;
                si.State = (ScheduleInvokerState)Enum.Parse(typeof(ScheduleInvokerState), model.State, false);
                si.StartTime = DateTime.Parse(model.StartTime);
                si.EndTime = DateTime.Parse(model.EndTime);
                si.Recurrency = (RecurrencyType)Enum.Parse(typeof(RecurrencyType), model.RecurrencyType, false);
                si.IntervalSecond = interval;
                si.FilterMethod = model.FilterMethod;
                si.FilterDefinition = model.FilterDefinition;
                si.Condition = string.IsNullOrEmpty(model.ExeCondition) ? null : model.ExeCondition;
                si.MethodName = model.MethodExec;
                si.ModifiedTime = DateTime.Now;
                if (this.Edit)
                {
                    result.Success = this.Engine.BizObjectManager.UpdateScheduleInvoker(si);
                }
                else
                {
                    result.Success = this.Engine.BizObjectManager.AddScheduleInvoker(si);
                }
                return Json(result, JsonRequestBehavior.AllowGet);
            }));
        }