Ejemplo n.º 1
0
        /// <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 });
                }
            }));
        }
Ejemplo n.º 2
0
        /// <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);
            }));
        }
Ejemplo n.º 3
0
        /// <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);
                }
            }));
        }
Ejemplo n.º 4
0
        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);
        }