public async Task <ActionResult> Save(long id, string name, string processContent, TableSource tableSource, string remark) { var result = new JsonModel(); try { var flow = await WfProcessRepository.GetByIdAsync(id) ?? new WfProcess(); flow.Name = name; flow.ProcessContent = processContent; flow.TableSource = tableSource; flow.Remark = remark; flow.CommonStatus = CommonStatus.Disabled; await WfProcessRepository.SaveAsync(flow); result.Data = flow.Id; result.message = "保存成功。请发布流程,否则无法显示~"; } catch (Exception ex) { result.message = "保存出错"; } return(Json(result)); }
public async Task <ActionResult> Publish(long id, string name) { var result = new JsonModel { statusCode = 300, message = "发布失败,流程不存在!", closeCurrent = false }; if (id <= 0) { return(Json(result)); } var flow = await WfProcessRepository.GetByIdAsync(id); if (flow == null) { return(Json(result)); } // 每个数据源有且只有一个发布的流程图 var hasPublished = await WfProcessRepository.HasPublishedProcess(flow.TableSource); if (hasPublished) { result.message = $"发布失败,数据源【{flow.TableSource.GetDescriotion()}】已经有一个已发布的流程~"; return(Json(result)); } // 不允许同名 var existedName = await WfProcessRepository.IsExsitName(name); if (existedName) { result.message = $"发布失败,流程名称已存在,请更改名称~"; return(Json(result)); } flow.CommonStatus = CommonStatus.Enabled; await WfProcessRepository.SaveAsync(flow); result.statusCode = 200; result.message = "发布成功!"; return(Json(result)); }
public async Task InitTestProcess() { //生成一条测试用流程,流程如下: //Start - 填写请假信息 - 部门经理审核 - 人事审核 - 结束。 // -(小于5天) 副总经理审核 - 人事审核 - 结束 // -(大于5天)总经理审核 - 人事审核 - 结束 // int roleIdDept = 11, roleIdHuRes = 12, roleIdDeputy = 13, roleIdManager = 14; var process = new WfProcess(); process.CommonStatus = CommonStatus.Enabled; process.Name = "请假流程"; process.Remark = "流程测试范例"; process.TableSource = TableSource.LeaveInfo; #region 定义流程信息 var processModel = new WfProcessModel(); processModel.linkDataArray = new List <WfTransition>(); processModel.nodeDataArray = new List <WfActivity>(); #region start 节点 //start节点 var actStart = new WfActivity() { activityType = WfActivityType.Start, key = Guid.NewGuid().ToString(), text = "开始" }; processModel.nodeDataArray.Add(actStart); #endregion #region //填写信息 var actInput = new WfActivity() { activityType = WfActivityType.Task, key = Guid.NewGuid().ToString(), text = "填写信息" }; processModel.nodeDataArray.Add(actInput); //link var linkStart2Input = new WfTransition() { from = actStart.key, to = actInput.key }; processModel.linkDataArray.Add(linkStart2Input); #endregion #region 部门经理审核 var actDept = new WfActivity() { activityType = WfActivityType.Task, key = Guid.NewGuid().ToString(), text = "部门经理审批", roleIds = roleIdDept.ToString() }; processModel.nodeDataArray.Add(actDept); //link var linkInput2Dept = new WfTransition() { from = actInput.key, to = actDept.key }; processModel.linkDataArray.Add(linkInput2Dept); #endregion #region 副总经理审核 var actDeputy = new WfActivity() { activityType = WfActivityType.Task, key = Guid.NewGuid().ToString(), text = "副总经理审批", roleIds = roleIdDeputy.ToString() }; processModel.nodeDataArray.Add(actDeputy); //link var linkDept2Deputy = new WfTransition() { from = actDept.key, to = actDeputy.key, condition = " Days<5 ", }; processModel.linkDataArray.Add(linkDept2Deputy); #endregion #region 总经理审核 var actManager = new WfActivity() { activityType = WfActivityType.Task, key = Guid.NewGuid().ToString(), text = "总经理审批", roleIds = roleIdManager.ToString() }; processModel.nodeDataArray.Add(actManager); //link var linkDept2Manager = new WfTransition() { from = actDept.key, to = actManager.key, condition = " Days>5 ", }; processModel.linkDataArray.Add(linkDept2Manager); #endregion #region 人事审核 var actHuRes = new WfActivity() { activityType = WfActivityType.Task, key = Guid.NewGuid().ToString(), text = "人事审批", roleIds = roleIdHuRes.ToString() }; processModel.nodeDataArray.Add(actHuRes); //link 部门-人事 var linkDept2HuRes = new WfTransition() { from = actDept.key, to = actHuRes.key, }; processModel.linkDataArray.Add(linkDept2HuRes); //link 副总-人事 var linkDeputy2HuRes = new WfTransition() { from = actDeputy.key, to = actHuRes.key, }; processModel.linkDataArray.Add(linkDeputy2HuRes); //link 部门-人事 var linkManager2HuRes = new WfTransition() { from = actManager.key, to = actHuRes.key, }; processModel.linkDataArray.Add(linkManager2HuRes); #endregion #region 结束 var actEnd = new WfActivity() { activityType = WfActivityType.End, key = Guid.NewGuid().ToString(), text = "结束", }; processModel.nodeDataArray.Add(actEnd); //link var linkHuRes2End = new WfTransition() { from = actHuRes.key, to = actEnd.key, }; processModel.linkDataArray.Add(linkHuRes2End); #endregion #endregion process.ProcessContent = JsonConvert.SerializeObject(processModel); await WfProcessRepository.SaveAsync(process); }