using System;
using System.IO;
using System.Data;
using BP.En;
using BP.Sys;
using BP.WF.Template;
namespace BP.WF.DTS
{
///
/// Method 的摘要说明
///
public class LoadTemplete : Method
{
///
/// 不带有参数的方法
///
public LoadTemplete()
{
this.Title = "装载流程演示模板";
this.Help = "为了帮助各位爱好者学习与掌握ccflow, 特提供一些流程模板与表单模板以方便学习。";
this.Help += "@这些模板的位于" + BP.Difference.SystemConfig.PathOfWebApp + "SDKFlowDemo/FlowDemo/";
this.GroupName = "流程维护";
}
///
/// 设置执行变量
///
///
public override void Init()
{
}
///
/// 当前的操纵员是否可以执行这个方法
///
public override bool IsCanDo
{
get
{
if (BP.Web.WebUser.No.Equals("admin")==true)
return true;
else
return false;
}
}
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 = BP.Difference.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.DebugWriteInfo("@开始调度表单模板文件:" + f);
DataSet ds = new DataSet();
ds.ReadXml(f);
try
{
MapData md = MapData.ImpMapData(ds);
// md.FK_FrmSort = fs.No;
md.FormTreeNo = fs.No;
md.AppType = "0";
md.Update();
}
catch(Exception ex)
{
BP.DA.Log.DebugWriteError("err@装载表单模版文件:" + f + "出现错误," + ex.Message + "
" + ex.StackTrace);
throw new Exception("err@装载模版文件:"+f+"出现错误,"+ex.Message+"
"+ex.StackTrace);
}
}
}
#endregion 处理表单.
#region 处理流程.
FlowSorts sorts = new FlowSorts();
sorts.ClearTable();
dirInfo = new DirectoryInfo(BP.Difference.SystemConfig.PathOfWebApp + "SDKFlowDemo/FlowDemo/Flow/");
dirs = dirInfo.GetDirectories();
FlowSort fsRoot = new FlowSort();
fsRoot.No = "1";
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, 2);
fs.Name = dir.Name.Substring(3);
fs.ParentNo = fsRoot.No;
fs.Insert();
foreach (string filePath in fls)
{
msg += "\t\n@开始调度流程模板文件:" + filePath;
BP.DA.Log.DebugWriteInfo("@开始调度流程模板文件:" + filePath);
Flow myflow = BP.WF.Template.TemplateGlo.LoadFlowTemplate(fs.No, filePath, ImpFlowTempleteModel.AsNewFlow);
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(BP.Difference.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.DebugWriteInfo("@开始调度流程模板文件:" + filePath);
Flow myflow = BP.WF.Template.TemplateGlo.LoadFlowTemplate(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.DebugWriteInfo(msg);
//删除多余的空格.
BP.WF.DTS.DeleteBlankGroupField dts = new DeleteBlankGroupField();
dts.Do();
return msg;
}
}
}