private void treeProdef_NodeDoubleClick(object sender, TreeNodeMouseEventArgs e) { try { Node nodeSelect = treeProdef.SelectedNode; if (nodeSelect != null) { if (nodeSelect.Name.IndexOf("PROPACKAGE_") > -1) { if (!nodeSelect.HasChildNodes) { PropackageEntity propackageEntity = (PropackageEntity)nodeSelect.Tag; ProTree.CreateProDef(nodeSelect, propackageEntity.Id, true); } } } } catch (Exception er) { MessageBox.Show(er.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
/// <summary> /// 复制流程方案 /// </summary> /// <param name="prodefId"></param> /// <param name="lstSchemaId"></param> /// <param name="lstBCopy"></param> public static void CopyProdefSchemaToOtherProdef(String prodefId, List <String> lstSchemaId, List <Node> lstBCopy) { XmlDocument doc = new XmlDocument(); doc.Load(MProdefListXmlPath); XmlNode nodeRoot = doc.SelectSingleNode("Element"); XmlNode nodeProdef = doc.SelectSingleNode("//Prodef[@ID='" + prodefId + "']"); if (nodeProdef == null) { throw new Exception("找不到被复制对象的流程配置信息,请检查!"); } //所有选中的方案 List <XmlNode> lstSelectSchemaNode = new List <XmlNode>(); lstSchemaId.ForEach(p => { lstSelectSchemaNode.Add(nodeProdef.SelectSingleNode("ProdefChild[@ID='" + p + "']")); }); XmlNode nodeCopyToProdefXmlNode = null; XmlElement elementCopyToProdefXmlElement = null; XmlElement elementProdefSchema = null; lstBCopy.ForEach(p => { ProdefEntity prodefEntity = (ProdefEntity)p.Tag; PropackageEntity propackageEntity = (PropackageEntity)p.Parent.Tag; String copyToProdefId = prodefEntity.Id; String copyToProdefName = prodefEntity.Name; String copyToPropackageName = propackageEntity.Caption; nodeCopyToProdefXmlNode = doc.SelectSingleNode("//Prodef[@ID='" + copyToProdefId + "']"); if (nodeCopyToProdefXmlNode == null) { nodeCopyToProdefXmlNode = doc.CreateElement("Prodef"); nodeRoot.AppendChild(nodeCopyToProdefXmlNode); } elementCopyToProdefXmlElement = nodeCopyToProdefXmlNode as XmlElement; elementCopyToProdefXmlElement.SetAttribute("ID", copyToProdefId); elementCopyToProdefXmlElement.SetAttribute("Name", prodefEntity.Name); elementCopyToProdefXmlElement.SetAttribute("PackageName", propackageEntity.Caption); lstSelectSchemaNode.ForEach(t => { String newChildProdefId = Guid.NewGuid().ToString(); elementProdefSchema = doc.CreateElement("ProdefChild"); elementProdefSchema.SetAttribute("ID", newChildProdefId); elementProdefSchema.SetAttribute("Name", t.Attributes["Name"].Value + "_copy" + Guid.NewGuid().ToString()); elementCopyToProdefXmlElement.AppendChild(elementProdefSchema); //复制配置文件 String dictoryPath = AppDomain.CurrentDomain.BaseDirectory + @"\XML\"; String filePath = dictoryPath + string.Format("Prodef_{0}_{1}.xml", prodefId, t.Attributes["ID"].Value); String newFilePath = dictoryPath + string.Format("Prodef_{0}_{1}.xml", copyToProdefId, newChildProdefId); File.Copy(filePath, newFilePath, true); ActdefDataEntity actdefDataEntity = ProTree.GetActdefInfo(new string[] { prodefEntity.Key }); List <ActdefEntity> allActdef = actdefDataEntity.ListTaskInfor.ToList <ActdefEntity>(); XmlDocument docProdefDetailXml = new XmlDocument(); docProdefDetailXml.Load(newFilePath); XmlElement nodeDetailProdef = docProdefDetailXml.SelectSingleNode("//Prodef") as XmlElement; nodeDetailProdef.SetAttribute("ID", copyToProdefId); nodeDetailProdef.SetAttribute("Name", copyToProdefName); nodeDetailProdef.SetAttribute("PackageName", copyToPropackageName); allActdef.ForEach(o => { XmlNode nodeDetailActdef = nodeDetailProdef.SelectSingleNode("Actdef[@Name='" + o.Task_name + "']"); if (nodeDetailActdef != null) { XmlElement elementDetailActdef = nodeDetailActdef as XmlElement; elementDetailActdef.SetAttribute("ID", o.Task_id); } }); docProdefDetailXml.Save(newFilePath); }); }); doc.Save(MProdefListXmlPath); }