/// <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); }
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); })); }