工作流(js版本)

     流程设计器部分源码下载地址:http://files.cnblogs.com/wendy_soft2008/WorkFlow(js).rar

     这个js版本的流程设计器主要是将设计完毕的状态存入xml文件当中。而步骤,流向动作等存入数据库中,参与流程设计完毕后整个流程运行后的记录。比如现在运行到核查(check)这个步骤,首先是从check的上一步流入,然后数据库里记录时间,拥有check这个步骤权限的用户id,完成该check步骤后,从数据库里列出下一流向的id,然后选择转交给谁。这样处理的好处是不用考虑上一步,下一步,check是否通过等等。简单贴个数据库表设计:

  

 

   在设计流程图当中,如果使用js来保存xml格式的流程图,页面通常会出现js不能创建对象等错误,主要是没有将设计流程图的站点设为可信任站点,不能下载未签名的activex控件。于是我想到在后台进行操作,来修改xml文件,并同时将数据库需要的属性存入数据库。

Code
protected void Button1_Click(object sender, EventArgs e)
{
string strsummary = Hidden1.Value.Trim();
string strtitle = Request.QueryString["id"];
string strname = Hidden2.Value.Trim();
string path = Server.MapPath("flows") + @"\" + strtitle.Trim() + ".xml";
FileInfo fi
= new FileInfo(path);
if (!fi.Exists)
{
using (StreamWriter sw = fi.CreateText())
{
sw.WriteLine(
@"<?xml version='1.0' encoding='UTF-8'?>");
sw.WriteLine(
"" + strsummary.Trim() + "");
}
}
else
{
StreamWriter fw
= new StreamWriter(path);
fw.WriteLine(
@"<?xml version='1.0' encoding='UTF-8'?>");
fw.WriteLine(
"" + strsummary.Trim() + "");
fw.Close();
}
string path2 = Server.MapPath("langs/main_zh.xml");
FileInfo fi2
= new FileInfo(path2);
if (fi2.Exists)
{
StreamWriter sw2
= new StreamWriter(path2);
sw2.WriteLine(
@"<?xml version='1.0' encoding='utf-8'?><config><Properties>
<item id='treeText' property='innerHTML' text='流程导航视图' />
<item id='btnNewFlow' property='title' text='创建新流程' />
<item id='btnEditFlow' property='title' text='修改流程' /><item id='btnSaveFlow'
 property='title' text='导出流程' />
</Properties><Selects><select id='flowList'>
");
string DirPath = Server.MapPath("flows");
DirectoryInfo di
= new DirectoryInfo(DirPath);
FileInfo[] dis
= di.GetFiles();
if (dis.Length > 1)
{
for (int i = 0; i < dis.Length; i++)
{
if (dis[i].Name.ToString().Substring(dis[i].Name.LastIndexOf(".") + 1) == "xml")
{
StreamReader SR
= new StreamReader(DirPath + "/" + dis[i].Name);
string s = SR.ReadToEnd();
string flowId = string.Empty;
string flowText = string.Empty;
if (s.Contains("flowId"))
{
s
= s.Replace("flowId", "$");
flowId
= s.Split(new char[] { '$' }, 2, StringSplitOptions.RemoveEmptyEntries)
.GetValue(1).ToString().Trim();
flowId
= flowId.Split(new char[] { '"' }, 10, StringSplitOptions.RemoveEmptyEn
tries).GetValue(1).ToString().Trim();
}
if (s.Contains("flowText"))
{
s
= s.Replace("flowText", "%");
flowText
= s.Split(new char[] { '%' }, 2, StringSplitOptions.RemoveEmptyEntries)
.GetValue(1).ToString().Trim();
flowText
= flowText.Split(new char[] { '"' }, 10, StringSplitOptions.RemoveEmpty
Entries).GetValue(1).ToString().Trim();
}
sw2.WriteLine(
@"<option value='" + flowId + ".xml' text='" + flowText + "' />");
}
}
}
sw2.WriteLine(
@"</select></Selects></config>");
sw2.Close();
}
Response.Write(
"<script language='javascript'>window.close();</script>");
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值