public string NewRule(string defineID, string guid, string beginActivityID, string endAcitivityID, string name) { string result = "T"; try { var flowDef = entities.S_WF_DefFlow.Where(c => c.ID == defineID).SingleOrDefault(); if (flowDef == null) { throw new Exception("指定的工作流定义未找到"); } var startStep = entities.S_WF_DefStep.Where(c => c.ID == beginActivityID).SingleOrDefault(); var endStep = entities.S_WF_DefStep.Where(c => c.ID == endAcitivityID).SingleOrDefault(); var routing = new S_WF_DefRouting(); routing.ID = guid; routing.DefStepID = startStep.ID; routing.EndID = endStep.ID; routing.DefFlowID = defineID; routing.SortIndex = startStep.S_WF_DefRouting.Count; routing.Type = RoutingType.Normal.ToString(); routing.Name = "送" + endStep.Name; routing.AllowDoBack = "1"; //默认允许打回 2014-12-1 routing.SaveForm = "1"; //默认自动保存表单 2014-12-1 routing.MustInputComment = "1"; //默认弹出意见框 2014-12-1 routing.AllowWithdraw = "1"; //默认允许撤销 2014-12-1 entities.S_WF_DefRouting.Add(routing); if (routing.Name == "送结束") { routing.Name = "结束"; routing.SelectMode = ""; } entities.SaveChanges(); result = "T:" + guid; } catch (Exception exp) { LogWriter.Error(exp); if (exp.InnerException != null) { result = "F:" + guid + ":" + exp.InnerException.Message; } else { result = "F:" + guid + ":" + exp.Message; } } return(result); }
/// <summary> /// 克隆流程定义 /// </summary> /// <returns></returns> public S_WF_DefFlow Clone() { var newDefFlow = new S_WF_DefFlow(); try { FormulaHelper.UpdateModel(newDefFlow, this); newDefFlow.ID = GetInsIDs(this.ID); //环节 foreach (var step in this.S_WF_DefStep) { S_WF_DefStep newStep = new S_WF_DefStep(); FormulaHelper.UpdateModel(newStep, step); newStep.ID = GetInsIDs(step.ID); newStep.DefFlowID = GetInsIDs(step.DefFlowID); newStep.WaitingStepIDs = GetInsIDs(step.WaitingStepIDs); newStep.SubFormID = GetInsIDs(step.SubFormID); newDefFlow.S_WF_DefStep.Add(newStep); } //路由 foreach (var routing in this.S_WF_DefRouting) { S_WF_DefRouting newRouting = new S_WF_DefRouting(); FormulaHelper.UpdateModel(newRouting, routing); newRouting.EndID = GetInsIDs(routing.EndID); newRouting.ID = GetInsIDs(routing.ID); newRouting.DefFlowID = GetInsIDs(routing.DefFlowID); newRouting.DefStepID = GetInsIDs(routing.DefStepID); newRouting.UserIDsFromStep = GetInsIDs(routing.UserIDsFromStep); newRouting.UserIDsFromStepSender = GetInsIDs(routing.UserIDsFromStepSender); newRouting.UserIDsFromStepExec = GetInsIDs(routing.UserIDsFromStepExec); newRouting.MsgUserIDsFromStep = GetInsIDs(routing.MsgUserIDsFromStep); newRouting.MsgUserIDsFromStepSender = GetInsIDs(routing.MsgUserIDsFromStepSender); newRouting.MsgUserIDsFromStepExec = GetInsIDs(routing.MsgUserIDsFromStepExec); newDefFlow.S_WF_DefRouting.Add(newRouting); } //子表单 foreach (var subForm in this.S_WF_DefSubForm) { S_WF_DefSubForm newSubForm = new S_WF_DefSubForm(); FormulaHelper.UpdateModel(newSubForm, subForm); newSubForm.ID = GetInsIDs(newSubForm.ID); newSubForm.DefFlowID = GetInsIDs(newSubForm.DefFlowID); newDefFlow.S_WF_DefSubForm.Add(newSubForm); } //更新流程图 string flowView = newDefFlow.ViewConfig; foreach (string id in idDic.Keys) { flowView = flowView.Replace(id, idDic[id]); } newDefFlow.ViewConfig = flowView; return(newDefFlow); } catch (Exception ex) { throw new FlowException(ex.Message); } }