public WFNodeDefInst GetStartNode() { //if (WFNodeDefInst.Count(a => a.WFNodeType == WFNodeType.Start.ToString()) != 1) //{ // Logger.GetCurMethodLog().Debug("流程id" + Id + ",开始节点不为1"); //} return(WFNodeDefInst.FirstOrDefault(a => a.WFNodeType == WFNodeType.Start.ToString())); }
public WFDefInst CreateInst() { WFDefInst defInst = new WFDefInst(); var dic = this.ToDictionary(); ConvertHelper.UpdateEntity(defInst, dic); defInst.Id = GuidHelper.CreateTimeOrderID(); defInst.WFDefId = this.Id; defInst.WFNodeDefInst = new List <WFNodeDefInst>(); defInst.WFRoutingDefInst = new List <WFRoutingDefInst>(); foreach (var node in WFNodeDef) { WFNodeDefInst nDefInst = new WFNodeDefInst(); var tmp = node.ToDictionary(); ConvertHelper.UpdateEntity(nDefInst, tmp, false); nDefInst.WFDefInstId = defInst.Id; //不需要,否则反而加不进去 nDefInst.WFDefInst = defInst; // 不需要,否则反而加不进去 defInst.WFNodeDefInst.Add(nDefInst); } foreach (var routine in WFRoutingDef) { WFRoutingDefInst rDefInst = new WFRoutingDefInst(); var tmp = routine.ToDictionary(); ConvertHelper.UpdateEntity(rDefInst, tmp, false); rDefInst.SNodeDefInstId = routine.SNodeDefId; rDefInst.ENodeDefInstId = routine.ENodeDefId; rDefInst.WFDefInstId = defInst.Id; rDefInst.WFDefInst = defInst; defInst.WFRoutingDefInst.Add(rDefInst); } //id处理,避免多个WFNodeDefInst都有同一个id造成主键冲突 foreach (var node in defInst.WFNodeDefInst) { string nGuid = GuidHelper.CreateTimeOrderID(); defInst.WFRoutingDefInst.Where(a => a.SNodeDefInstId == node.Id) .ToList().ForEach(a => a.SNodeDefInstId = nGuid); defInst.WFRoutingDefInst.Where(a => a.ENodeDefInstId == node.Id) .ToList().ForEach(a => a.ENodeDefInstId = nGuid); defInst.WFRoutingDefInst.ForEach(a => a.Id = a.SNodeDefInstId + "_" + a.ENodeDefInstId); node.Id = nGuid; } return(defInst); }