业务流程自定义的实现精_第1页
业务流程自定义的实现精_第2页
业务流程自定义的实现精_第3页
业务流程自定义的实现精_第4页
业务流程自定义的实现精_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、业务流程定义创建的表:XT_LCXX:流程信息表XT_JDXX:节点信息表(原)(改过)XT_LCSL:流程实例(原)(改过)流程实例表中添加了节点顺序,不再用上节点id,下节点id,功能类似,这样可以方便一个节点的下一个步骤允许两个节点同时操作的情况。所以稍做了改变。但是不太确定在其他情况是否都能够满足要求,还在观察中。LC_LSJL:历史记录逻辑顺序:定义流程时:1、 定义流程客体,即流程中流转被操作的对象;2、 流程中需要经过的步骤,即节点,注意节点的先后顺序;3、 每个步骤中操作该对象的主体,即人员或角色;这样一个完整的流程就定义好了。实现界面:1、列表为已存在的流程,图片按钮为创建新

2、流程。2、点击空的流程时出现起点。点击已有流程时则展示流程示意图3、点击起点按钮时,开始定义节点(第一个)。4、第一个节点出现后,鼠标悬停在节点之上时,提示操作人员和操作类型,点击按钮时则出现菜单有3个选择:添加,修改和删除。5、点击增加时,弹出设置节点的窗口,在节点顺序的下拉框中可以选择要添加的节点的顺序,是与当前节点属于同一时间段进行的,还是下一步骤。点击删除时,直接删除掉该节点。操作流程时:1、 在创建流程信息表中包含对象的时候,同时向历史记录表中插入一条记录,并标明状态;2、 根据节点表中的操作人员和历史记录中待处理事件列表,选出待“我”处理的任务;3、 处理完成后,相应增加历史记录,

3、表明目前状态,并把本流程上一个状态注销,(若有并行步骤则需添加多条记录);4、 最终完成后该流程的所有记录的状态都注销。工作流类的设计:实体类:有属性:id,名称等等有方法:add、edit、delete,添加的部分有选择添加下个节点是什么类型的有编制、审核、审批、结束添加的时候,更新到数据库有三个类:public class LCpublic class JDpublic class LCSL分别是流程类,节点类,和流程实例类。一、在流程类中 有一个字段: private string _lcid;有四个属性: public string Bz public string Lcmc publ

4、ic string Lcztpublic string Lcyhid实例化流程是有两种方法:1是创建一个数据库中不存在的新流程,需要传入参数: public LC(string lcmc,string lczt,string bz,string yhid)2是实例化一个数据库中已存在的流程,则只需传入LCID即可: public LC(string lcid) string Sql_Select = select t.lc_mc,t.lc_zt,t.lc_yhid,t.lc_cjrq,t.lc_xgrq,t.lc_scbj,t.lc_bz from xt_lcxx t where t.lc_i

5、d= + lcid + ; DataTable Dt = DBHelper.GetDataSet(Sql_Select); if (Dt.Rows.Count = 1) this._lcmc = Dt.Rows0lc_mc.ToString(); this._lczt = Dt.Rows0lc_lczt.ToString(); this._lcyhid = Dt.Rows0lc_yhid.ToString(); this._bz = Dt.Rows0lc_bz.ToString(); 会将其他信息添加到流程类的属性中。流程类中有方法:/ 增加基本流程信息public string Add_CL

6、() / 修改流程基本信息 public string Edit_CL(string Lcid) public string Delete_CL(string Lcid)在节点类中:有属性: public string Jdid public string Czlx public string Czry public string Yhid public string Bz有方法: / 增加一个新节点 public string Add_JD() / 修改节点 public string Edit_JD(string Jdid) / 删除节点 public string Delete_JD(s

7、tring jdid)实例化节点时,有三种方法1实例化一个空的节点,2实例化一个新的节点(没有节点id),根据节点id实例化一个数据库中已存在的节点(其他属性自动添加)。三、流程实例类有属性: public string Lcid public string Yhid public string Bz有方法:/ 向流程添加节点(流程id必须提前设定好)/ 节点的层次,001是与上节点同一层次,002是下一层次public string Add_JdtoLc(string Jdid,string Jdcc)public string Delete_JdFromLc(string Jdid)必须注

8、意一点,在流程实例中,添加节点和删除节点有点不同:添加的时候是先用节点类添加一个节点,然后再用流程实例类向流程添加这个节点,而删除的时候直接用流程实例类删除掉节点,因为在Delete_JdFromLc方法中已经调用了Delete_JD方法。附类的全部代码:using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;

9、using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Data.OracleClient;using System.Collections.Generic;/using System.ComponentModel;/ /WorkFlow 的摘要说明/ public class WorkFlowpublic WorkFlow()/TODO: 在此处添加构造函数逻辑/ / 流程(基本信息)实体类,实现流程的增删改/ public clas

10、s LC / / 实例化空流程 / public LC() / / 实例化准备添加的新流程 / / / / / public LC(string lcmc,string lczt,string bz,string yhid) this._lcmc = lcmc; this._lczt = lczt; this._bz = bz; this._lcyhid = yhid; / / 实例化数据库中已存在的流程,得到该流程的所有属性 / / public LC(string lcid) this._lcid = lcid; try string Sql_Select = select t.lc_mc

11、,t.lc_zt,t.lc_yhid,t.lc_cjrq,t.lc_xgrq,t.lc_scbj,t.lc_bz from xt_lcxx t where t.lc_id= + lcid + ; DataTable Dt = DBHelper.GetDataSet(Sql_Select); if (Dt.Rows.Count = 1) this._lcmc = Dt.Rows0lc_mc.ToString(); this._lczt = Dt.Rows0lc_lczt.ToString(); this._lcyhid = Dt.Rows0lc_yhid.ToString(); this._bz

12、 = Dt.Rows0lc_bz.ToString(); catch (Exception e) throw e; private string _lcid; private string _bz; public string Bz get return _bz; set _bz = value; private string _lcmc; / / 流程名称 / public string Lcmc get return _lcmc; set _lcmc = value; private string _lczt; public string Lczt get return _lczt; se

13、t _lczt = value; / / 或许在类中可以直接得到登陆的用户id,就不需要再传值了。 / private string _lcyhid; public string Lcyhid get return _lcyhid; set _lcyhid = value; / / 增加基本流程信息 / / 数据库操作信息或错误信息 public string Add_CL() string info=string.Empty; try _lcid = DBHelper.GetScalar(select get_next_id(xt_lcxx,lc_id,LCXX) from dual).To

14、String(); string Sql_Insert = insert into xt_lcxx(lc_id,lc_mc,lc_zt,lc_yhid,lc_cjrq,lc_bz) values( + _lcid + , + _lcmc + , + _lczt + , + _lcyhid + ,trunc(sysdate,dd), + _bz + ); info = DBHelper.ExecuteCommand(Sql_Insert).ToString(); catch (Exception e) info = e.Message.ToString(); return info; / / 修

15、改流程基本信息 / / 准备修改的流程id / public string Edit_CL(string Lcid) string info = string.Empty; try string Sql_Update = update xt_lcxx set lc_mc= + _lcmc + ,lc_yhid= + _lcyhid + ,lc_xgrq=trunc(sysdate,dd),lc_bz=+_bz+ where lc_id=+Lcid+ ;/流程的id对应主体,不可变 info = DBHelper.ExecuteCommand(Sql_Update).ToString(); ca

16、tch (Exception e) info = e.Message.ToString(); return info; public string Delete_CL(string Lcid) string info = string.Empty; try string Sql_Delete = delet xt_lcxx where lc_id= + Lcid + ; info = DBHelper.ExecuteCommand(Sql_Delete).ToString(); catch (Exception e) info = e.Message.ToString(); return in

17、fo; / / 节点实体类,实现节点的增删改/ public class JD public JD() / / 实例化节点实体(已存在的节点) / / 节点id public JD(string jdid) this._jdid = jdid; try string Sql_Select = select a.jd_czry, a.jd_yhdw,a.jd_yhid,a.jd_cjrq,a.jd_bz, a.jd_czlx,a.jd_xgrq,a.jd_scbj from xt_jdxx a where a.jd_id= + jdid + ; DataTable Dt = DBHelper.G

18、etDataSet(Sql_Select); if (Dt.Rows.Count = 1) this._czry = Dt.Rows0jd_czry.ToString(); this._czlx = Dt.Rows0jd_czlx.ToString(); this._yhid = Dt.Rows0jd_yhid.ToString(); this._bz = Dt.Rows0jd_bz.ToString(); catch (Exception e) throw e; / / 实例化新节点,(准备添加到数据库) / / 节点的操作人员 / 该记录的添加人员 / 备注 public JD(strin

19、g czry, string czlx, string yhid, string bz) this._czry = czry; this._czlx = czlx; this._yhid = yhid; this._bz = bz; private string _jdid; public string Jdid get return _jdid; set _jdid = value; private string _czlx; public string Czlx get return _czlx; set _czlx = value; private string _czry; publi

20、c string Czry get return _czry; set _czry = value; private string _yhid; public string Yhid get return _yhid; set _yhid = value; private string _bz; public string Bz get return _bz; set _bz = value; / / 增加节点 / / public string Add_JD() string info = string.Empty; try _jdid = DBHelper.GetScalar(select

21、 get_next_id(xt_jdxx,jd_id,JDXX) from dual).ToString(); / this.Jdid = _jdid; string Sql_Insert = insert into xt_jdxx(jd_id,jd_czry,jd_yhdw,jd_yhid,jd_cjrq,jd_bz,jd_czlx) values( + _jdid + , + _czry + ,(select yhxx_yhdw from xt_yhxx where yhxx_id= + _czry + ), + _yhid + ,trunc(sysdate,dd), + _bz + ,

22、+ _czlx + ); info = DBHelper.ExecuteCommand(Sql_Insert).ToString(); catch (Exception e) info = e.Message.ToString(); return info; / / 修改节点 / / / public string Edit_JD(string Jdid) string info = string.Empty; try string Sql_Update = update xt_jdxx x set x.jd_czry= + _czry + ,x.jd_yhdw=(select yhxx_yh

23、dw from xt_yhxx where yhxx_id= + _czry + ),x.jd_yhid= + _yhid + ,x.jd_xgrq=trunc(sysdate,dd),x.jd_bz= + _bz + ,jd_czlx= + _czlx + where x.jd_id= + _jdid + ; info = DBHelper.ExecuteCommand(Sql_Update).ToString(); catch (Exception e) info = e.Message.ToString(); return info; / / 删除节点 / / / public stri

24、ng Delete_JD(string jdid) string info = string.Empty; try string Sql_Delete = delete xt_jdxx where jd_id= + jdid + ; info = DBHelper.ExecuteCommand(Sql_Delete).ToString(); catch (Exception e) info = e.Message.ToString(); return info; / / 流程实例实体类,实现流程过程的连接/ public class LCSL public LCSL() /属性 private

25、 string _yhid;/用户id public string Yhid get return _yhid; set _yhid = value; private string _bz;/备注 public string Bz get return _bz; set _bz = value; private string _lcid; public string Lcid get return _lcid; set _lcid = value; /方法 / / 向流程添加节点(流程id必须提前设定好) / / 节点id / 节点的层次,001是与上节点同一层次,002是下一层次 / pub

26、lic string Add_JdtoLc(string Jdid,string Jdcc) string info = string.Empty; string Sql_Jdsx = string.Empty; try switch (Jdcc) case 001: Sql_Jdsx = nvl(to_number(select max (lcsl_jdsx) from xt_lcsl where lcsl_id = + _lcid + ), 1) ; break; case 002: Sql_Jdsx = nvl(to_number(select max (lcsl_jdsx) from

27、xt_lcsl where lcsl_id = + _lcid + )+1, 1) ; break; string Jl_id = DBHelper.GetScalar(select get_next_id(xt_lcsl,jl_id,LCJD) from dual).ToString(); string Sql_Insert = insert into xt_lcsl(jl_id,lcsl_id,lcsl_jdid,lcsl_qsbj,lcsl_ljd_id,lcsl_njd_id,lcsl_yhid,lcsl_cjrq,lcsl_bz,lcsl_jdsx) values( + Jl_id + , + _lcid + , + Jdid + ,002,(select max(lcsl_jdid) from xt_lcsl where

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论