/// <summary> /// 发布流程模板 /// </summary> public JsonResult PublishWorkflow(WorkflowTemplateViewModel model) { return(ExecuteFunctionRun(() => { DraftWorkflowTemplate DraftWorkflowTemplate = ReadRequestWorkflowTemplate(model); if (DraftWorkflowTemplate == null) { return Json(new { Result = false, Errors = new List <string>() { "Designer.WorkflowHandler_Msg1" } }); } string WorkflowCode = DraftWorkflowTemplate.WorkflowCode; WorkflowClause Clause = this.Engine.WorkflowManager.GetClause(WorkflowCode); if (Clause == null) { return Json(new { Result = false, Errors = new List <string>() { "Designer.WorkflowHandler_Msg2" } }); } DraftWorkflowTemplate.BizObjectSchemaCode = Clause.BizSchemaCode; // 先保存流程模板 if (!this.Engine.WorkflowManager.SaveDraftTemplate(this.UserValidator.UserID, DraftWorkflowTemplate)) { return Json(new { Result = false, Errors = new List <string>() { "Designer.WorkflowHandler_Msg3" } }); } OThinker.H3.DataModel.BizObjectSchema schema = this.Engine.BizObjectManager.GetPublishedSchema(Clause.BizSchemaCode); OThinker.H3.ValidationResult ValidationResult = DraftWorkflowTemplate.Validate(schema); if (!ValidationResult.Valid) { return Json(ValidationResult); } PublishResult PublishResult = this.Engine.WorkflowManager.RegisterWorkflow(this.UserValidator.UserID, DraftWorkflowTemplate.WorkflowCode, true); if (PublishResult.Result == (long)OThinker.H3.ErrorCode.SUCCESS) { return Json(new { Result = true, Message = new List <string>() { "流程发布成功:当前版本号: " + PublishResult.RegisteredVersion.ToString() } }); } else { return Json(new { Result = false, Errors = PublishResult.Errors }); } })); }
/// <summary> /// 保存流程模板 /// </summary> public JsonResult SaveWorkflow(WorkflowTemplateViewModel model) { return(ExecuteFunctionRun(() => { ActionResult result = new ActionResult(); try { // 读取活动模板定义信息 DraftWorkflowTemplate DraftWorkflowTemplate = ReadRequestWorkflowTemplate(model); result.Success = this.Engine.WorkflowManager.SaveDraftTemplate(this.UserValidator.UserID, DraftWorkflowTemplate); result.Message = string.Empty; result.Success = true; } catch (Exception ex) { result.Message = ex.Message; result.Success = false; } return Json(result); })); }
/// <summary> /// 验证流程模板是否合法 /// </summary> /// <param name="DraftWorkflowTemplate"></param> /// <returns></returns> public JsonResult ValidateWorkflow(WorkflowTemplateViewModel model) { return(ExecuteFunctionRun(() => { DraftWorkflowTemplate DraftWorkflowTemplate = ReadRequestWorkflowTemplate(model); if (DraftWorkflowTemplate != null) { OThinker.H3.DataModel.BizObjectSchema schema = this.Engine.BizObjectManager.GetPublishedSchema(DraftWorkflowTemplate.BizObjectSchemaCode); OThinker.H3.ValidationResult ValidationResult = DraftWorkflowTemplate.Validate(schema); return Json(new { Result = ValidationResult.Valid, Errors = ValidationResult.Errors, Warnings = ValidationResult.Warnings }); } else { var result = new { Result = false, Errors = new List <string>() { "Designer.WorkflowHandler_Msg0" } }; return Json(result); } })); }
DraftWorkflowTemplate ReadRequestWorkflowTemplate(WorkflowTemplateViewModel model) { string WorkflowString = Server.HtmlDecode(model.WorkflowTemplate); //读取活动模板定义信息 DraftWorkflowTemplate DraftWorkflowTemplate = (DraftWorkflowTemplate)JsonConvert.DeserializeObject(WorkflowString, typeof(DraftWorkflowTemplate)); if (DraftWorkflowTemplate == null) { return(null); } List <Activity> lstActivities = new List <Activity>(); #region 读取活动 //Start string StartActivityString = Server.HtmlDecode(model.StartActivities); StartActivity[] StartActivities = (StartActivity[])JsonConvert.DeserializeObject(StartActivityString, typeof(StartActivity[])); if (StartActivities != null) { foreach (StartActivity activity in StartActivities) { lstActivities.Add(activity); } } //End string EndActivityString = Server.HtmlDecode(model.EndActivities); EndActivity[] EndActivities = (EndActivity[])JsonConvert.DeserializeObject(EndActivityString, typeof(EndActivity[])); if (EndActivities != null) { foreach (EndActivity activity in EndActivities) { lstActivities.Add(activity); } } //FillSheet string FillSheetActivityString = Server.HtmlDecode(model.FillSheetActivities); FillSheetActivity[] FillSheetActivities = (FillSheetActivity[])JsonConvert.DeserializeObject(FillSheetActivityString, typeof(FillSheetActivity[])); if (FillSheetActivities != null) { foreach (FillSheetActivity activity in FillSheetActivities) { lstActivities.Add(activity); } } //Approve string ApproveActivityString = Server.HtmlDecode(model.ApproveActivities); ApproveActivity[] ApproveActivities = (ApproveActivity[])JsonConvert.DeserializeObject(ApproveActivityString, typeof(ApproveActivity[])); if (ApproveActivities != null) { foreach (ApproveActivity activity in ApproveActivities) { lstActivities.Add(activity); } } //Circulate string CirculateActivityString = Server.HtmlDecode(model.CirculateActivities); CirculateActivity[] CirculateActivities = (CirculateActivity[])JsonConvert.DeserializeObject(CirculateActivityString, typeof(CirculateActivity[])); if (CirculateActivities != null) { foreach (CirculateActivity activity in CirculateActivities) { //ERROR: activity.ParticipateType = ActivityParticipateType.MultiParticipants; lstActivities.Add(activity); } } //Notify string NotifyActivityString = Server.HtmlDecode(model.NotifyActivities); NotifyActivity[] NotifyActivities = (NotifyActivity[])JsonConvert.DeserializeObject(NotifyActivityString, typeof(NotifyActivity[])); if (NotifyActivities != null) { foreach (NotifyActivity activity in NotifyActivities) { lstActivities.Add(activity); } } //Wait string WaitActivityString = Server.HtmlDecode(model.WaitActivities); WaitActivity[] WaitActivities = (WaitActivity[])JsonConvert.DeserializeObject(WaitActivityString, typeof(WaitActivity[])); if (WaitActivities != null) { foreach (WaitActivity activity in WaitActivities) { lstActivities.Add(activity); } } //Connection string ConnectionActivityString = Server.HtmlDecode(model.ConnectionActivities); ConnectionActivity[] ConnectionActivities = (ConnectionActivity[])JsonConvert.DeserializeObject(ConnectionActivityString, typeof(ConnectionActivity[])); if (ConnectionActivities != null) { foreach (ConnectionActivity activity in ConnectionActivities) { lstActivities.Add(activity); } } //BizAction string BizActionActivityString = Server.HtmlDecode(model.BizActionActivities); BizActionActivity[] BizActionActivities = (BizActionActivity[])JsonConvert.DeserializeObject(BizActionActivityString, typeof(BizActionActivity[])); if (BizActionActivities != null) { foreach (BizActionActivity activity in BizActionActivities) { lstActivities.Add(activity); } } //SubInstance string SubInstanceActivityString = Server.HtmlDecode(model.SubInstanceActivities); SubInstanceActivity[] SubInstanceActivities = (SubInstanceActivity[])JsonConvert.DeserializeObject(SubInstanceActivityString, typeof(SubInstanceActivity[])); if (SubInstanceActivities != null) { foreach (SubInstanceActivity activity in SubInstanceActivities) { lstActivities.Add(activity); } } #endregion DraftWorkflowTemplate.Activities = lstActivities.ToArray(); return(DraftWorkflowTemplate); }