protected void Btn_Save_Click(object sender, EventArgs e) { try { FlowSort fs = new FlowSort(); fs.Name = Tbx_FlowSortName.Text; fs.No = fs.GenerNewNo; fs.Insert(); LbMessage.Text = "添加成功!"; this.WinClose(); } catch { LbMessage.Text = "保存失败!"; } }
/// <summary> /// 树的实体包含了No,Name,ParentNo,Idx 必须的属性(字段),它是树结构的描述. /// </summary> public void EnttiyTree() { //创建父节点, 父节点的编号必须为1 ,父节点的ParentNo 必须是 0. FlowSort en = new FlowSort("1"); en.Name = "根目录"; //创建子目录节点. FlowSort subEn = (FlowSort)en.DoCreateSubNode(); subEn.Name = "行政类"; subEn.Update(); //创建子目录的评级节点. FlowSort sameLevelSubEn = (FlowSort)subEn.DoCreateSameLevelNode(); sameLevelSubEn.Name = "业务类"; sameLevelSubEn.Update(); //创建子目录的下一级节点1. FlowSort sameLevelSubSubEn = (FlowSort)subEn.DoCreateSameLevelNode(); sameLevelSubSubEn.Name = "日常办公"; sameLevelSubSubEn.Update(); //创建子目录的下一级节点1. FlowSort sameLevelSubSubEn2 = (FlowSort)subEn.DoCreateSameLevelNode(); sameLevelSubSubEn2.Name = "人力资源"; sameLevelSubSubEn2.Update(); /** * 根目录 * 行政类 * 日常办公 * 人力资源 * 业务类 * */ }
private string GetFlowTreeTable() { string sql = @"SELECT 'F'+No NO,'F'+ParentNo PARENTNO,NAME, IDX, 1 ISPARENT,'FLOWTYPE' TTYPE,-1 DTYPE FROM WF_FlowSort union SELECT NO, 'F'+FK_FlowSort as PARENTNO,NAME,IDX,0 ISPARENT,'FLOW' TTYPE,DTYPE FROM WF_Flow"; if (BP.Sys.SystemConfig.AppCenterDBType == DBType.Oracle) { sql = @"SELECT 'F'||No NO,'F'||ParentNo PARENTNO,NAME, IDX, 1 ISPARENT,'FLOWTYPE' TTYPE,-1 DTYPE FROM WF_FlowSort union SELECT NO, 'F'||FK_FlowSort as PARENTNO,NAME,IDX,0 ISPARENT,'FLOW' TTYPE,DTYPE FROM WF_Flow"; } DataTable dt = DBAccess.RunSQLReturnTable(sql); //判断是否为空,如果为空,则创建一个流程根结点,added by liuxc,2016-01-24 if (dt.Rows.Count == 0) { FlowSort fs = new FlowSort(); fs.No = "99"; fs.ParentNo = "0"; fs.Name = "流程树"; fs.Insert(); dt.Rows.Add("F99", "F0", "流程树", 0, 1, "FLOWTYPE", -1); } else { DataRow[] drs = dt.Select("NAME='流程树'"); if (drs.Length > 0 && !Equals(drs[0]["PARENTNO"], "F0")) { drs[0]["PARENTNO"] = "F0"; } } return(Newtonsoft.Json.JsonConvert.SerializeObject(dt)); }
public override object Do() { string msg = ""; #region 检查数据文件是否完整. string path = "C:\\CCFlowTemplete"; if (System.IO.Directory.Exists(path) == false) { msg += "@错误:约定的目录不存在服务器" + path + ",请把从ccflow备份的文件放入" + path; } //PortTables. string file = path + "\\PortTables.xml"; if (System.IO.File.Exists(file) == false) { msg += "@错误:约定的文件不存在," + file; } //SysTables. file = path + "\\SysTables.xml"; if (System.IO.File.Exists(file) == false) { msg += "@错误:约定的文件不存在," + file; } //FlowTables. file = path + "\\FlowTables.xml"; if (System.IO.File.Exists(file) == false) { msg += "@错误:约定的文件不存在," + file; } #endregion 检查数据文件是否完整. #region 1 装载流程基础表数据. DataSet ds = new DataSet(); ds.ReadXml(path + "\\FlowTables.xml"); //流程类别. FlowSorts sorts = new FlowSorts(); sorts.ClearTable(); DataTable dt = ds.Tables["WF_FlowSort"]; // sorts = QueryObject.InitEntitiesByDataTable(sorts, dt, null) as FlowSorts; foreach (FlowSort item in sorts) { item.DirectInsert(); //插入数据. } #endregion 1 装载流程基础表数据. #region 2 组织结构. ds = new DataSet(); ds.ReadXml(path + "\\PortTables.xml"); //Port_Emp. Emps emps = new Emps(); emps.ClearTable(); dt = ds.Tables["Port_Emp"]; emps = QueryObject.InitEntitiesByDataTable(emps, dt, null) as Emps; foreach (Emp item in emps) { item.DirectInsert(); //插入数据. } //Depts. Depts depts = new Depts(); depts.ClearTable(); dt = ds.Tables["Port_Dept"]; depts = QueryObject.InitEntitiesByDataTable(depts, dt, null) as Depts; foreach (Dept item in depts) { item.DirectInsert(); //插入数据. } //Stations. Stations stas = new Stations(); stas.ClearTable(); dt = ds.Tables["Port_Station"]; stas = QueryObject.InitEntitiesByDataTable(stas, dt, null) as Stations; foreach (Station item in stas) { item.DirectInsert(); //插入数据. } //EmpDepts. EmpDepts eds = new EmpDepts(); eds.ClearTable(); dt = ds.Tables["Port_EmpDept"]; eds = QueryObject.InitEntitiesByDataTable(eds, dt, null) as EmpDepts; foreach (EmpDept item in eds) { item.DirectInsert(); //插入数据. } //EmpStations. EmpStations ess = new EmpStations(); ess.ClearTable(); dt = ds.Tables["Port_EmpStation"]; ess = QueryObject.InitEntitiesByDataTable(ess, dt, null) as EmpStations; foreach (EmpStation item in ess) { item.DirectInsert(); //插入数据. } #endregion 2 组织结构. #region 3 恢复系统数据. ds = new DataSet(); ds.ReadXml(path + "\\SysTables.xml"); //枚举Main. SysEnumMains sems = new SysEnumMains(); sems.ClearTable(); dt = ds.Tables["Sys_EnumMain"]; sems = QueryObject.InitEntitiesByDataTable(sems, dt, null) as SysEnumMains; foreach (SysEnumMain item in sems) { item.DirectInsert(); //插入数据. } //枚举. SysEnums ses = new SysEnums(); ses.ClearTable(); dt = ds.Tables["Sys_Enum"]; ses = QueryObject.InitEntitiesByDataTable(ses, dt, null) as SysEnums; foreach (SysEnum item in ses) { item.DirectInsert(); //插入数据. } ////Sys_FormTree. //BP.Sys.SysFormTrees sfts = new SysFormTrees(); //sfts.ClearTable(); //dt = ds.Tables["Sys_FormTree"]; //sfts = QueryObject.InitEntitiesByDataTable(sfts, dt, null) as SysFormTrees; //foreach (SysFormTree item in sfts) //{ // try // { // item.DirectInsert(); //插入数据. // } // catch // { // } //} #endregion 3 恢复系统数据. #region 4.备份表单相关数据. if (1 == 2) { string pathOfTables = path + "\\SFTables"; System.IO.Directory.CreateDirectory(pathOfTables); SFTables tabs = new SFTables(); tabs.RetrieveAll(); foreach (SFTable item in tabs) { if (item.No.Contains(".")) { continue; } string sql = "SELECT * FROM " + item.No; ds = new DataSet(); ds.Tables.Add(BP.DA.DBAccess.RunSQLReturnTable(sql)); ds.WriteXml(pathOfTables + "\\" + item.No + ".xml"); } } #endregion 4 备份表单相关数据. #region 5.恢复表单数据. //删除所有的流程数据. MapDatas mds = new MapDatas(); mds.RetrieveAll(); foreach (MapData fl in mds) { //if (fl.FK_FormTree.Length > 1 || fl.FK_FrmSort.Length > 1) // continue; fl.Delete(); //删除流程. } //清除数据. SysFormTrees fss = new SysFormTrees(); fss.ClearTable(); // 调度表单文件。 string frmPath = path + "\\Form"; DirectoryInfo dirInfo = new DirectoryInfo(frmPath); DirectoryInfo[] dirs = dirInfo.GetDirectories(); foreach (DirectoryInfo item in dirs) { if (item.FullName.Contains(".svn")) { continue; } string[] fls = System.IO.Directory.GetFiles(item.FullName); if (fls.Length == 0) { continue; } SysFormTree fs = new SysFormTree(); fs.No = item.Name.Substring(0, item.Name.IndexOf('.')); fs.Name = item.Name.Substring(item.Name.IndexOf('.')); fs.ParentNo = "0"; fs.Insert(); foreach (string f in fls) { try { msg += "@开始调度表单模板文件:" + f; System.IO.FileInfo info = new System.IO.FileInfo(f); if (info.Extension != ".xml") { continue; } ds = new DataSet(); ds.ReadXml(f); MapData md = MapData.ImpMapData(ds, false); md.FK_FrmSort = fs.No; md.Update(); } catch (Exception ex) { msg += "@调度失败,文件:" + f + ",异常信息:" + ex.Message; } } } #endregion 5.恢复表单数据. #region 6.恢复流程数据. //删除所有的流程数据. Flows flsEns = new Flows(); flsEns.RetrieveAll(); foreach (Flow fl in flsEns) { fl.DoDelete(); //删除流程. } dirInfo = new DirectoryInfo(path + "\\Flow\\"); dirs = dirInfo.GetDirectories(); //删除数据. FlowSorts fsRoots = new FlowSorts(); fsRoots.ClearTable(); //生成流程树. FlowSort fsRoot = new FlowSort(); fsRoot.No = "99"; fsRoot.Name = "流程树"; fsRoot.ParentNo = "0"; fsRoot.DirectInsert(); foreach (DirectoryInfo dir in dirs) { if (dir.FullName.Contains(".svn")) { continue; } string[] fls = System.IO.Directory.GetFiles(dir.FullName); if (fls.Length == 0) { continue; } FlowSort fs = new FlowSort(); fs.No = dir.Name.Substring(0, dir.Name.IndexOf('.')); fs.Name = dir.Name.Substring(3); fs.ParentNo = fsRoot.No; fs.Insert(); foreach (string filePath in fls) { msg += "@开始调度流程模板文件:" + filePath; Flow myflow = BP.WF.Flow.DoLoadFlowTemplate(fs.No, filePath, ImpFlowTempleteModel.AsTempleteFlowNo); msg += "@流程:" + myflow.Name + "装载成功。"; System.IO.FileInfo info = new System.IO.FileInfo(filePath); myflow.Name = info.Name.Replace(".xml", ""); if (myflow.Name.Substring(2, 1) == ".") { myflow.Name = myflow.Name.Substring(3); } myflow.DirectUpdate(); } } #endregion 6.恢复流程数据. BP.DA.Log.DefaultLogWriteLineInfo(msg); //删除多余的空格. BP.WF.DTS.DeleteBlankGroupField dts = new DeleteBlankGroupField(); dts.Do(); //执行生成签名. GenerSiganture gs = new GenerSiganture(); gs.Do(); return(msg); }
public string Do(string doWhat, string para1, bool isLogin) { // 如果admin账户登陆时有错误发生,则返回错误信息 var result = LetAdminLogin("CH", isLogin); if (string.IsNullOrEmpty(result) == false) { return(result); } switch (doWhat) { case "GenerFlowTemplete": Flow temp = new BP.WF.Flow(para1); return(null); case "GetFlowSorts": //获取所有流程类型 DataTable dtSorts = null; try { dtSorts = BP.DA.DBAccess.RunSQLReturnTable("SELECT no,name FROM WF_FlowSort"); } catch (Exception ex) { return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true, msg = string.Empty, data = dtSorts.Rows.Cast <DataRow>().Select(dr => new { Key = dr["no"].ToString(), Value = dr["name"].ToString() }) })); case "NewSameLevelFrmSort": //创建同级别的 表单树 目录. SysFormTree frmSort = null; try { var para = para1.Split(','); frmSort = new SysFormTree(para[0]); string sameNodeNo = frmSort.DoCreateSameLevelNode().No; frmSort = new SysFormTree(sameNodeNo); frmSort.Name = para[1]; frmSort.Update(); return(null); } catch (Exception ex) { return("Do Method NewFormSort Branch has a error , para:\t" + para1 + ex.Message); } case "NewSubLevelFrmSort": //创建子级别的 表单树 目录. SysFormTree frmSortSub = null; try { var para = para1.Split(','); frmSortSub = new SysFormTree(para[0]); string sameNodeNo = frmSortSub.DoCreateSubNode().No; frmSortSub = new SysFormTree(sameNodeNo); frmSortSub.Name = para[1]; frmSortSub.Update(); return(null); } catch (Exception ex) { return("Do Method NewSubLevelFrmSort Branch has a error , para:\t" + para1 + ex.Message); } case "NewSameLevelFlowSort": //创建同级别的 流程树 目录. FlowSort fs = null; try { var para = para1.Split(','); fs = new FlowSort(para[0]); string sameNodeNo = fs.DoCreateSameLevelNode().No; fs = new FlowSort(sameNodeNo); fs.Name = para[1]; fs.Update(); return (Newtonsoft.Json.JsonConvert.SerializeObject( new { success = true, msg = string.Empty, data = fs.No })); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method NewSameLevelFlowSort Branch has a error , para:\t" + para1 + ex.Message); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "NewSubFlowSort": //创建子级别的 表单树 目录. try { var para = para1.Split(','); FlowSort fsSub = new FlowSort(para[0]); string subNodeNo = fsSub.DoCreateSubNode().No; FlowSort subFlowSort = new FlowSort(subNodeNo); subFlowSort.Name = para[1]; subFlowSort.Update(); return (Newtonsoft.Json.JsonConvert.SerializeObject( new { success = true, msg = string.Empty, data = subFlowSort.No })); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method NewSubFlowSort Branch has a error , para:\t" + ex.Message); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "EditFlowSort": //编辑表单树. try { var para = para1.Split(','); fs = new FlowSort(para[0]); fs.Name = para[1]; fs.Save(); return (Newtonsoft.Json.JsonConvert.SerializeObject( new { success = true, msg = string.Empty, data = fs.No })); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method EditFlowSort Branch has a error , para:\t" + para1 + ex.Message); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "NewFlow": //创建新流程. Flow fl = new Flow(); try { string[] ps = para1.Split(','); if (ps.Length != 5) { throw new Exception("@创建流程参数错误"); } string fk_floSort = ps[0]; //类别编号. string flowName = ps[1]; // 流程名称. DataStoreModel dataSaveModel = (DataStoreModel)int.Parse(ps[2]); //数据保存方式。 string pTable = ps[3]; // 物理表名。 string FlowMark = ps[4]; // 流程标记. fl.DoNewFlow(fk_floSort, flowName, dataSaveModel, pTable, FlowMark); return (Newtonsoft.Json.JsonConvert.SerializeObject( new { success = true, msg = string.Empty, data = new { no = fl.No, name = fl.Name } })); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method NewFlow Branch has a error , para:\t" + para1 + ex.Message); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "DelFlow": //删除流程. try { return (Newtonsoft.Json.JsonConvert.SerializeObject( new { success = true, msg = WorkflowDefintionManager.DeleteFlowTemplete(para1) })); } catch (Exception ex) { return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "DelFlowSort": try { FlowSort delfs = new FlowSort(); delfs.No = para1; delfs.Delete(); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true })); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method DelFlowSort Branch has a error , para:\t" + para1 + ex.Message); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "DelNode": try { if (!string.IsNullOrEmpty(para1)) { BP.WF.Node delNode = new BP.WF.Node(int.Parse(para1)); delNode.Delete(); } else { throw new Exception("@参数错误:" + para1); } } catch (Exception ex) { return("err:" + ex.Message); } return(null); case "GetSettings": return(SystemConfig.AppSettings[para1]); case "SaveFlowFrm": //保存独立表单. Entity en = null; try { AtPara ap = new AtPara(para1); string enName = ap.GetValStrByKey("EnName"); string pk = ap.GetValStrByKey("PKVal"); en = ClassFactory.GetEn(enName); en.ResetDefaultVal(); if (en == null) { throw new Exception("无效的类名:" + enName); } if (string.IsNullOrEmpty(pk) == false) { en.PKVal = pk; en.RetrieveFromDBSources(); } foreach (string key in ap.HisHT.Keys) { if (key == "PKVal") { continue; } en.SetValByKey(key, ap.HisHT[key].ToString().Replace('^', '@')); } en.Save(); return(en.PKVal as string); } catch (Exception ex) { if (en != null) { en.CheckPhysicsTable(); } return("Error:" + ex.Message); } case "ChangeNodeType": var p = para1.Split(','); try { if (p.Length != 3) { throw new Exception("@修改节点类型参数错误"); } //var sql = "UPDATE WF_Node SET Icon='{0}' WHERE FK_Flow='{1}' AND NodeID='{2}'"; var sql = "UPDATE WF_Node SET RunModel={0} WHERE FK_Flow='{1}' AND NodeID={2}"; DBAccess.RunSQL(string.Format(sql, p[0], p[1], p[2])); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true })); } catch (Exception ex) { return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "ChangeNodeIcon": p = para1.Split(','); try { if (p.Length != 3) { throw new Exception("@修改节点图标参数错误"); } var sql = "UPDATE WF_Node SET Icon='{0}' WHERE FK_Flow='{1}' AND NodeID={2}"; DBAccess.RunSQL(string.Format(sql, p[0], p[1], p[2])); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true })); } catch (Exception ex) { return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } default: throw new Exception("@没有约定的执行标记:" + doWhat); } }
public string Do(string doWhat, string para1, bool isLogin) { // 如果admin账户登陆时有错误发生,则返回错误信息 var result = LetAdminLogin("CH", isLogin); if (string.IsNullOrEmpty(result) == false) { return(result); } switch (doWhat) { case "GenerFlowTemplete": Flow temp = new BP.WF.Flow(para1); return(null); case "NewFrmSort": BP.Sys.FrmSort frmSort = null; try { frmSort = new FrmSort(); frmSort.No = "01"; frmSort.Name = para1; frmSort.No = frmSort.GenerNewNo; frmSort.Insert(); return(null); } catch (Exception ex) { return("Do Method NewFlowSort Branch has a error , para:\t" + para1 + ex.Message); } case "NewFlowSort": BP.WF.FlowSort fs = null; try { fs = new FlowSort(); fs.Name = para1; fs.No = fs.GenerNewNo; fs.Insert(); return(fs.No); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method NewFlowSort Branch has a error , para:\t" + para1 + ex.Message); return(null); } case "EditFlowSort": try { var para = para1.Split(','); fs = new FlowSort(para[0]); fs.Name = para[1]; fs.Save(); return(fs.No); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method EditFlowSort Branch has a error , para:\t" + para1 + ex.Message); return(null); } case "NewFlow": Flow fl = new Flow(); try { string[] ps = para1.Split(','); if (ps.Length != 5) { throw new Exception("@创建流程参数错误"); } string fk_floSort = ps[0]; string flowName = ps[1]; DataStoreModel dataSaveModel = (DataStoreModel)int.Parse(ps[2]); string pTable = ps[3]; string flowCode = ps[4]; fl.DoNewFlow(fk_floSort, flowName, dataSaveModel, pTable, flowCode); return(fl.No + ";" + fl.Name); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method NewFlow Branch has a error , para:\t" + para1 + ex.Message); return(ex.Message); } case "DelFlow": BP.WF.Flow fl1 = new BP.WF.Flow(para1); try { fl1.DoDelete(); return(null); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method DelFlow Branch has a error , para:\t" + para1 + ex.Message); return(ex.Message); } case "DelLable": BP.WF.LabNote ln = new BP.WF.LabNote(para1); try { ln.Delete(); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method DelLable Branch has a error , para:\t" + para1 + ex.Message); } return(null); case "DelFlowSort": try { FlowSort delfs = new FlowSort(para1); delfs.Delete(); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method DelFlowSort Branch has a error , para:\t" + para1 + ex.Message); } return(null); case "NewNode": try { BP.WF.Flow fl11 = new BP.WF.Flow(para1); BP.WF.Node node = new BP.WF.Node(); node.FK_Flow = ""; node.X = 0; node.Y = 0; node.Insert(); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method NewNode Branch has a error , para:\t" + para1 + ex.Message); } return(null); case "DelNode": try { if (!string.IsNullOrEmpty(para1)) { BP.WF.Node delNode = new BP.WF.Node(int.Parse(para1)); delNode.Delete(); } } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method DelNode Branch has a error , para:\t" + para1 + ex.Message); } return(null); case "NewLab": BP.WF.LabNote lab = new BP.WF.LabNote();; try { lab.FK_Flow = para1; lab.MyPK = BP.DA.DBAccess.GenerOID().ToString(); lab.Insert(); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method NewLab Branch has a error , para:\t" + para1 + ex.Message); } return(lab.MyPK); case "DelLab": try { BP.WF.LabNote dellab = new BP.WF.LabNote(); dellab.MyPK = para1; dellab.Delete(); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method DelLab Branch has a error , para:\t" + para1 + ex.Message); } return(null); case "GetSettings": return(SystemConfig.AppSettings[para1]); case "GetFlows": string sqls = "SELECT NO,NAME FROM WF_FlowSort"; sqls += "@SELECT No,Name,FK_FlowSort FROM WF_Flow"; return(RunSQLReturnTableS(sqls)); case "SaveFlowFrm": Entity en = null; try { AtPara ap = new AtPara(para1); string enName = ap.GetValStrByKey("EnName"); string pk = ap.GetValStrByKey("PKVal"); en = ClassFactory.GetEn(enName); en.ResetDefaultVal(); if (en == null) { throw new Exception("无效的类名:" + enName); } if (string.IsNullOrEmpty(pk) == false) { en.PKVal = pk; en.RetrieveFromDBSources(); } foreach (string key in ap.HisHT.Keys) { if (key == "PKVal") { continue; } en.SetValByKey(key, ap.HisHT[key].ToString().Replace('^', '@')); } en.Save(); return(en.PKVal as string); } catch (Exception ex) { if (en != null) { en.CheckPhysicsTable(); } return("Error:" + ex.Message); } case "ReleaseToFTP": // 暂时注释,下次更新ftp功能时会得新编译 。 //var args = para1.Split(','); //var binaryData = Convert.FromBase64String(args[1]); //var imageFilePath = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath) + "/Temp/" + args[0] + ".jpg"; //if (File.Exists(imageFilePath)) //{ // File.Delete(imageFilePath); //} //System.IO.Directory.CreateDirectory( // Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath) + "/Temp"); //var stream = new System.IO.FileStream(imageFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite); //stream.Write(binaryData, 0, binaryData.Length); //stream.Close(); //var xmlFilePath = FlowTemplete_Gener(args[0], true); //string remoteDr = "/" + ConfigurationSettings.AppSettings["UserIdentifier"];; //var ftp = new FtpConnection(); //try //{ // string ftpIP = ConfigurationSettings.AppSettings["FTPServerIP"]; // string email = ConfigurationSettings.AppSettings["FTPUserEmail"]; // Session session = new Session(); // session.Server = ftpIP; // session.Connect("anonymous", "*****@*****.**"); // ftp.Connect(ftpIP, "anonymous", email); // remoteDr = remoteDr; // if(!ftp.DirectoryExist(remoteDr)) // { // ftp.CreateDirectory(remoteDr); // } // ftp.SetCurrentDirectory(remoteDr); // ftp.PutFile(imageFilePath, remoteDr); // return string.Empty;//上传成功 //} //catch (Exception err) //{ // return err.Message;//上传失败 //} //finally //{ // ftp.Close(); //} return(string.Empty); default: throw null; } }
/// <summary> /// 树节点管理 /// </summary> public string Do() { string doWhat = getUTF8ToString("doWhat"); string para1 = getUTF8ToString("para1"); // 如果admin账户登陆时有错误发生,则返回错误信息 var result = LetAdminLogin("CH", true); if (string.IsNullOrEmpty(result) == false) { return(result); } switch (doWhat) { case "GetFlowSorts": //获取所有流程类型 try { FlowSorts flowSorts = new FlowSorts(); flowSorts.RetrieveAll(FlowSortAttr.Idx); return(BP.Tools.Entitis2Json.ConvertEntitis2GenerTree(flowSorts, "0")); } catch (Exception ex) { return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "NewSameLevelFrmSort": //创建同级别的 表单树 目录. SysFormTree frmSort = null; try { var para = para1.Split(','); frmSort = new SysFormTree(para[0]); string sameNodeNo = frmSort.DoCreateSameLevelNode().No; frmSort = new SysFormTree(sameNodeNo); frmSort.Name = para[1]; frmSort.Update(); return(null); } catch (Exception ex) { return("Do Method NewFormSort Branch has a error , para:\t" + para1 + ex.Message); } case "NewSubLevelFrmSort": //创建子级别的 表单树 目录. SysFormTree frmSortSub = null; try { var para = para1.Split(','); frmSortSub = new SysFormTree(para[0]); string sameNodeNo = frmSortSub.DoCreateSubNode().No; frmSortSub = new SysFormTree(sameNodeNo); frmSortSub.Name = para[1]; frmSortSub.Update(); return(null); } catch (Exception ex) { return("Do Method NewSubLevelFrmSort Branch has a error , para:\t" + para1 + ex.Message); } case "NewSameLevelFlowSort": //创建同级别的 流程树 目录. FlowSort fs = null; try { var para = para1.Split(','); fs = new FlowSort(para[0].Replace("F", "")); //传入的编号多出F符号,需要替换掉 string sameNodeNo = fs.DoCreateSameLevelNode().No; fs = new FlowSort(sameNodeNo); fs.Name = para[1]; fs.Update(); return (Newtonsoft.Json.JsonConvert.SerializeObject( new { success = true, msg = string.Empty, data = "F" + fs.No })); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method NewSameLevelFlowSort Branch has a error , para:\t" + para1 + ex.Message); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "NewSubFlowSort": //创建子级别的 流程树 目录. try { var para = para1.Split(','); FlowSort fsSub = new FlowSort(para[0].Replace("F", ""));//传入的编号多出F符号,需要替换掉 string subNodeNo = fsSub.DoCreateSubNode().No; FlowSort subFlowSort = new FlowSort(subNodeNo); subFlowSort.Name = para[1]; subFlowSort.Update(); return (Newtonsoft.Json.JsonConvert.SerializeObject( new { success = true, msg = string.Empty, data = "F" + subFlowSort.No })); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method NewSubFlowSort Branch has a error , para:\t" + ex.Message); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "EditFlowSort": //编辑表单树. try { var para = para1.Split(','); fs = new FlowSort(para[0].Replace("F", ""));//传入的编号多出F符号,需要替换掉 fs.Name = para[1]; fs.Save(); return (Newtonsoft.Json.JsonConvert.SerializeObject( new { success = true, msg = string.Empty, data = fs.No })); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method EditFlowSort Branch has a error , para:\t" + para1 + ex.Message); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "NewFlow": //创建新流程. try { string[] ps = para1.Split(','); if (ps.Length != 6) { throw new Exception("@创建流程参数错误"); } string fk_floSort = ps[0]; //类别编号. fk_floSort = fk_floSort.Replace("F", ""); //传入的编号多出F符号,需要替换掉 string flowName = ps[1]; // 流程名称. DataStoreModel dataSaveModel = (DataStoreModel)int.Parse(ps[2]); //数据保存方式。 string pTable = ps[3]; // 物理表名。 string flowMark = ps[4]; // 流程标记. string flowVer = ps[5]; // 流程版本 string FK_Flow = BP.BPMN.Glo.NewFlow(fk_floSort, flowName, dataSaveModel, pTable, flowMark, flowVer); return (Newtonsoft.Json.JsonConvert.SerializeObject( new { success = true, msg = string.Empty, data = new { no = FK_Flow, name = flowName } })); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method NewFlow Branch has a error , para:\t" + para1 + ex.Message); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "DelFlow": //删除流程. try { return(Newtonsoft.Json.JsonConvert.SerializeObject( new { success = true, msg = WorkflowDefintionManager.DeleteFlowTemplete(para1) })); } catch (Exception ex) { return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "DelFlowSort": try { string FK_FlowSort = para1.Replace("F", ""); string forceDel = getUTF8ToString("force"); FlowSort delfs = new FlowSort(); delfs.No = FK_FlowSort; //强制删除,不需判断是否含有子项。 if (forceDel == "true") { delfs.DeleteFlowSortSubNode_Force(); delfs.Delete(); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true, reason = "" })); } //判断是否包含子类别 if (delfs.HisSubFlowSorts != null && delfs.HisSubFlowSorts.Count > 0) { return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, reason = "havesubsorts", msg = "此类别下包含子类别。" })); } //判断是否包含工作流程 if (delfs.HisFlows != null && delfs.HisFlows.Count > 0) { return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, reason = "haveflows", msg = "此类别下包含流程。" })); } //执行删除 delfs.Delete(); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true, reason = "" })); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineError("Do Method DelFlowSort Branch has a error , para:\t" + para1 + ex.Message); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "DelNode": try { if (!string.IsNullOrEmpty(para1)) { BP.WF.Node delNode = new BP.WF.Node(int.Parse(para1)); delNode.Delete(); } else { throw new Exception("@参数错误:" + para1); } } catch (Exception ex) { return("err:" + ex.Message); } return(null); case "SetBUnit": try { if (!string.IsNullOrEmpty(para1)) { BP.WF.Node nd = new BP.WF.Node(int.Parse(para1)); nd.IsTask = !nd.IsBUnit; nd.Update(); } else { throw new Exception("@参数错误:" + para1); } } catch (Exception ex) { return("err:" + ex.Message); } return(null); case "GetSettings": return(SystemConfig.AppSettings[para1]); case "SaveFlowFrm": //保存流程表单. Entity en = null; try { AtPara ap = new AtPara(para1); string enName = ap.GetValStrByKey("EnName"); string pk = ap.GetValStrByKey("PKVal"); en = ClassFactory.GetEn(enName); en.ResetDefaultVal(); if (en == null) { throw new Exception("无效的类名:" + enName); } if (string.IsNullOrEmpty(pk) == false) { en.PKVal = pk; en.RetrieveFromDBSources(); } foreach (string key in ap.HisHT.Keys) { if (key == "PKVal") { continue; } en.SetValByKey(key, ap.HisHT[key].ToString().Replace('^', '@')); } en.Save(); return(en.PKVal as string); } catch (Exception ex) { if (en != null) { en.CheckPhysicsTable(); } return("Error:" + ex.Message); } case "ChangeNodeType": var p = para1.Split(','); try { if (p.Length != 3) { throw new Exception("@修改节点类型参数错误"); } //var sql = "UPDATE WF_Node SET Icon='{0}' WHERE FK_Flow='{1}' AND NodeID='{2}'"; var sql = "UPDATE WF_Node SET RunModel={0} WHERE FK_Flow='{1}' AND NodeID={2}"; DBAccess.RunSQL(string.Format(sql, p[0], p[1], p[2])); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true })); } catch (Exception ex) { return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } case "ChangeNodeIcon": p = para1.Split(','); try { if (p.Length != 3) { throw new Exception("@修改节点图标参数错误"); } var sql = "UPDATE WF_Node SET Icon='{0}' WHERE FK_Flow='{1}' AND NodeID={2}"; DBAccess.RunSQL(string.Format(sql, p[0], p[1], p[2])); return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true })); } catch (Exception ex) { return(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = false, msg = ex.Message })); } default: throw new Exception("@没有约定的执行标记:" + doWhat); } }
public override object Do() { string msg = ""; #region 处理表单. // 调度表单文件。 SysFormTrees fss = new SysFormTrees(); fss.ClearTable(); //创建root. SysFormTree root = new SysFormTree(); root.No = "1"; root.Name = "表单库"; root.ParentNo = "0"; root.Insert(); string frmPath = SystemConfig.PathOfWebApp + "\\SDKFlowDemo\\FlowDemo\\Form\\"; DirectoryInfo dirInfo = new DirectoryInfo(frmPath); DirectoryInfo[] dirs = dirInfo.GetDirectories(); int i = 0; foreach (DirectoryInfo item in dirs) { if (item.FullName.Contains(".svn")) { continue; } string[] fls = System.IO.Directory.GetFiles(item.FullName); if (fls.Length == 0) { continue; } SysFormTree fs = new SysFormTree(); fs.No = item.Name.Substring(0, 2); fs.Name = item.Name.Substring(3); fs.ParentNo = "1"; fs.Idx = i++; fs.Insert(); foreach (string f in fls) { System.IO.FileInfo info = new System.IO.FileInfo(f); if (info.Extension != ".xml") { continue; } msg += "@开始调度表单模板文件:" + f; BP.DA.Log.DefaultLogWriteLineInfo("@开始调度表单模板文件:" + f); DataSet ds = new DataSet(); ds.ReadXml(f); try { MapData md = MapData.ImpMapData(ds); md.FK_FrmSort = fs.No; md.FK_FormTree = fs.No; md.AppType = "0"; md.Update(); } catch (Exception ex) { BP.DA.Log.DefaultLogWriteLineInfo("@装载表单模版文件:" + f + "出现错误," + ex.Message + " <br> " + ex.StackTrace); throw new Exception("@装载模版文件:" + f + "出现错误," + ex.Message + " <br> " + ex.StackTrace); } } } #endregion 处理表单. #region 处理流程. FlowSorts sorts = new FlowSorts(); sorts.ClearTable(); dirInfo = new DirectoryInfo(SystemConfig.PathOfWebApp + "\\SDKFlowDemo\\FlowDemo\\Flow\\"); dirs = dirInfo.GetDirectories(); FlowSort fsRoot = new FlowSort(); fsRoot.No = "99"; fsRoot.Name = "流程树"; fsRoot.ParentNo = "0"; fsRoot.DirectInsert(); foreach (DirectoryInfo dir in dirs) { if (dir.FullName.Contains(".svn")) { continue; } string[] fls = System.IO.Directory.GetFiles(dir.FullName); if (fls.Length == 0) { continue; } FlowSort fs = new FlowSort(); fs.No = dir.Name.Substring(0, 3); fs.Name = dir.Name.Substring(3); fs.ParentNo = fsRoot.No; fs.Insert(); foreach (string filePath in fls) { msg += "\t\n@开始调度流程模板文件:" + filePath; BP.DA.Log.DefaultLogWriteLineInfo("@开始调度流程模板文件:" + filePath); Flow myflow = BP.WF.Flow.DoLoadFlowTemplate(fs.No, filePath, ImpFlowTempleteModel.AsTempleteFlowNo); msg += "\t\n@流程:[" + myflow.Name + "]装载成功。"; System.IO.FileInfo info = new System.IO.FileInfo(filePath); myflow.Name = info.Name.Replace(".xml", ""); if (myflow.Name.Substring(2, 1) == ".") { myflow.Name = myflow.Name.Substring(3); } myflow.DirectUpdate(); } //调度它的下一级目录. DirectoryInfo dirSubInfo = new DirectoryInfo(SystemConfig.PathOfWebApp + "\\SDKFlowDemo\\FlowDemo\\Flow\\" + dir.Name); DirectoryInfo[] myDirs = dirSubInfo.GetDirectories(); foreach (DirectoryInfo mydir in myDirs) { if (mydir.FullName.Contains(".svn")) { continue; } string[] myfls = System.IO.Directory.GetFiles(mydir.FullName); if (myfls.Length == 0) { continue; } // 流程类别. FlowSort subFlowSort = fs.DoCreateSubNode() as FlowSort; subFlowSort.Name = mydir.Name.Substring(3); subFlowSort.Update(); foreach (string filePath in myfls) { msg += "\t\n@开始调度流程模板文件:" + filePath; BP.DA.Log.DefaultLogWriteLineInfo("@开始调度流程模板文件:" + filePath); Flow myflow = BP.WF.Flow.DoLoadFlowTemplate(subFlowSort.No, filePath, ImpFlowTempleteModel.AsTempleteFlowNo); msg += "\t\n@流程:" + myflow.Name + "装载成功。"; System.IO.FileInfo info = new System.IO.FileInfo(filePath); myflow.Name = info.Name.Replace(".xml", ""); if (myflow.Name.Substring(2, 1) == ".") { myflow.Name = myflow.Name.Substring(3); } myflow.DirectUpdate(); } } } //执行流程检查. Flows flsEns = new Flows(); flsEns.RetrieveAll(); foreach (Flow fl in flsEns) { fl.DoCheck(); } #endregion 处理流程. BP.DA.Log.DefaultLogWriteLineInfo(msg); //删除多余的空格. BP.WF.DTS.DeleteBlankGroupField dts = new DeleteBlankGroupField(); dts.Do(); return(msg); }
public override object Do() { string msg = ""; FlowSorts sorts = new FlowSorts(); sorts.ClearTable(); DirectoryInfo dirInfo = new DirectoryInfo(SystemConfig.PathOfData + "\\FlowDemo\\Flow\\"); DirectoryInfo[] dirs = dirInfo.GetDirectories(); foreach (DirectoryInfo dir in dirs) { if (dir.FullName.Contains(".svn")) { continue; } string[] fls = System.IO.Directory.GetFiles(dir.FullName); if (fls.Length == 0) { continue; } FlowSort fs = new FlowSort(); fs.No = dir.Name.Substring(0, 2); fs.Name = dir.Name.Substring(3); fs.Insert(); foreach (string filePath in fls) { msg += "@开始调度流程模板文件:" + filePath; Flow myflow = BP.WF.Flow.DoLoadFlowTemplate(fs.No, filePath, ImpFlowTempleteModel.AsTempleteFlowNo); msg += "@流程:" + myflow.Name + "装载成功。"; System.IO.FileInfo info = new System.IO.FileInfo(filePath); myflow.Name = info.Name.Replace(".xml", ""); if (myflow.Name.Substring(2, 1) == ".") { myflow.Name = myflow.Name.Substring(3); } myflow.DirectUpdate(); } } // 调度表单文件。 FrmSorts fss = new FrmSorts(); fss.ClearTable(); string frmPath = SystemConfig.PathOfData + "\\FlowDemo\\Form\\"; dirInfo = new DirectoryInfo(frmPath); dirs = dirInfo.GetDirectories(); foreach (DirectoryInfo item in dirs) { if (item.FullName.Contains(".svn")) { continue; } string[] fls = System.IO.Directory.GetFiles(item.FullName); if (fls.Length == 0) { continue; } FrmSort fs = new FrmSort(); fs.No = item.Name.Substring(0, 2); fs.Name = item.Name.Substring(3); fs.Insert(); foreach (string f in fls) { try { msg += "@开始调度表单模板文件:" + f; System.IO.FileInfo info = new System.IO.FileInfo(f); if (info.Extension != ".xml") { continue; } DataSet ds = new DataSet(); ds.ReadXml(f); MapData md = MapData.ImpMapData(ds, false); md.FK_FrmSort = fs.No; md.Update(); } catch (Exception ex) { msg += "@调度失败" + ex.Message; } } } BP.DA.Log.DefaultLogWriteLineInfo(msg); return(msg); }
/// <summary> /// 执行 /// </summary> /// <returns>返回执行结果</returns> public override object Do() { string path = "C:\\CCFlowTemplete" + DateTime.Now.ToString("yy年MM月dd日HH时mm分ss秒"); if (System.IO.Directory.Exists(path) == false) { System.IO.Directory.CreateDirectory(path); } #region 1.备份流程类别信息 DataSet dsFlows = new DataSet(); //WF_FlowSort DataTable dt = DBAccess.RunSQLReturnTable("SELECT * FROM WF_FlowSort"); dt.TableName = "WF_FlowSort"; dsFlows.Tables.Add(dt); dsFlows.WriteXml(path + "\\FlowTables.xml"); #endregion 备份流程类别信息. #region 2.备份组织结构. DataSet dsPort = new DataSet(); //emps dt = DBAccess.RunSQLReturnTable("SELECT * FROM Port_Emp"); dt.TableName = "Port_Emp"; dsPort.Tables.Add(dt); //Port_Dept dt = DBAccess.RunSQLReturnTable("SELECT * FROM Port_Dept"); dt.TableName = "Port_Dept"; dsPort.Tables.Add(dt); //Port_Station dt = DBAccess.RunSQLReturnTable("SELECT * FROM Port_Station"); dt.TableName = "Port_Station"; dsPort.Tables.Add(dt); //Port_EmpStation dt = DBAccess.RunSQLReturnTable("SELECT * FROM Port_DeptEmpStation"); dt.TableName = "Port_DeptEmpStation"; dsPort.Tables.Add(dt); dsPort.WriteXml(path + "\\PortTables.xml"); #endregion 备份表单相关数据. #region 3.备份系统数据 DataSet dsSysTables = new DataSet(); //Sys_EnumMain dt = DBAccess.RunSQLReturnTable("SELECT * FROM Sys_EnumMain"); dt.TableName = "Sys_EnumMain"; dsSysTables.Tables.Add(dt); //Sys_Enum dt = DBAccess.RunSQLReturnTable("SELECT * FROM Sys_Enum"); dt.TableName = "Sys_Enum"; dsSysTables.Tables.Add(dt); //Sys_FormTree dt = DBAccess.RunSQLReturnTable("SELECT * FROM Sys_FormTree"); dt.TableName = "Sys_FormTree"; dsSysTables.Tables.Add(dt); dsSysTables.WriteXml(path + "\\SysTables.xml"); #endregion 备份系统数据. #region 4.备份表单相关数据. string pathOfTables = path + "\\SFTables"; System.IO.Directory.CreateDirectory(pathOfTables); SFTables tabs = new SFTables(); tabs.RetrieveAll(); foreach (SFTable item in tabs) { if (item.No.Contains(".")) { continue; } if (item.SrcType != SrcType.CreateTable) { continue; } try { string sql = "SELECT * FROM " + item.No + " "; DataSet ds = new DataSet(); ds.Tables.Add(BP.DA.DBAccess.RunSQLReturnTable(sql)); ds.WriteXml(pathOfTables + "\\" + item.No + ".xml"); } catch { } } #endregion 备份表单相关数据. #region 5.备份流程. Flows fls = new Flows(); fls.RetrieveAllFromDBSource(); foreach (Flow fl in fls) { FlowSort fs = new FlowSort(); fs.No = fl.FK_FlowSort; fs.RetrieveFromDBSources(); string pathDir = path + "\\Flow\\" + fs.No + "." + fs.Name + "\\"; if (System.IO.Directory.Exists(pathDir) == false) { System.IO.Directory.CreateDirectory(pathDir); } fl.DoExpFlowXmlTemplete(pathDir); } #endregion 备份流程. #region 6.备份表单. MapDatas mds = new MapDatas(); mds.RetrieveAllFromDBSource(); foreach (MapData md in mds) { if (md.FK_FrmSort.Length < 2) { continue; } SysFormTree fs = new SysFormTree(); fs.No = md.FK_FormTree; fs.RetrieveFromDBSources(); string pathDir = path + "\\Form\\" + fs.No + "." + fs.Name; if (System.IO.Directory.Exists(pathDir) == false) { System.IO.Directory.CreateDirectory(pathDir); } DataSet ds = BP.Sys.CCFormAPI.GenerHisDataSet(md.No); ds.WriteXml(pathDir + "\\" + md.Name + ".xml"); } #endregion 备份表单. return("执行成功,存放路径:" + path); }