/// <summary> /// 更新环节 /// </summary> /// <param name="workTacheInfo"></param> public void UpdateSelectedTache(WorkTacheInfo workTacheInfo) { if (selectedObj is WorkTache && (selectedObj as WorkTache).TacheType == WorkTacheType.Normal) { WorkTache tache = selectedObj as WorkTache; tache.Text = tache.TacheInfo.Name; tache.TacheInfo = workTacheInfo; } }
/// <summary> /// 添加新环节 /// </summary> /// <param name="workTacheInfo"></param> public void AddTache(WorkTacheInfo workTacheInfo) { WorkTache wt = CreateTacheToView(); wt.TacheType = WorkTacheType.Normal; wt.Location = new Point(panelWorkFlow.Width / 2, panelWorkFlow.Height / 2); wt.Text = wt.TacheInfo.Name; wt.TacheInfo = workTacheInfo; }
/// <summary> /// 连接视图环节 /// 只连接开始到任何终结的地方 /// </summary> /// <param name="workTache"></param> /// <returns></returns> private void ConnectTacheToInfo(WorkTache workTache, ref List <WorkTacheInfo> infos) { if (workTache.TacheType == WorkTacheType.End || workTache.FlowLine2 == null) { return; } else { if (workTache.TacheType != WorkTacheType.Begin) { WorkTacheInfo info = new WorkTacheInfo(); info.Name = workTache.TacheInfo.Name; info.Id = workTache.TacheInfo.Id; info.Tag = workTache.TacheInfo.Tag; infos.Add(info); } ConnectTacheToInfo(workTache.FlowLine2.EndControl as WorkTache, ref infos); } }
/// <summary> ///加载工作流数据 /// </summary> /// <param name="workTaches"></param> public void LoadFlowInfo(WorkFlowInfo flowInfo, string currentTacheId = "") { Clear(); this.FlowInfo.Id = FlowInfo.Id; List <WorkTacheInfo> workTacheInfos = flowInfo.TacheInfos; WorkTache wtStart = CreateTacheToView(); wtStart.TacheType = WorkTacheType.Begin; wtStart.Text = "开始"; SetTacheProperty(wtStart); List <WorkTache> taches = new List <WorkTache>(); taches.Add(wtStart); bool left = false; bool disConnected = false; for (int i = 0; i < workTacheInfos.Count; i++) { WorkTacheInfo item = workTacheInfos[i]; WorkTache wt = CreateTacheToView(); wt.TacheInfo = item; SetTacheProperty(wt); SetTachePosition(taches[i], wt, ref left); if (!disConnected) { ConnectionLineToTache(taches[i], wt, currentTacheId); disConnected = false; } if (workTacheInfos[i].IsDisConnectedFromNext) { disConnected = true; } else { disConnected = false; } taches.Add(wt); } //关联结束节点 if (!disConnected) { WorkTache wtEnd = CreateTacheToView(); wtEnd.TacheType = WorkTacheType.End; wtEnd.Text = "结束"; SetTacheProperty(wtEnd); SetTachePosition(taches.LastOrDefault(), wtEnd, ref left); //必须有环节数据 开始和结束节点才连线 if (workTacheInfos.Count > 0) { ConnectionLineToTache(taches.LastOrDefault(), wtEnd); } } }