.net工作流引擎ccflow集成并多从定义功能。.net工作流引擎ccflow集成并增加从定义功能。

剩下的根据具体业务需求抽象成公共功能进行扩展,剩下的根据具体业务需求抽象成公共功能进行扩展

一如既往、为什么要打定义扩展

相同、为什么用打定义扩展

1、第三方类库已满足大部分急需,剩下的冲实际工作需求抽象成国有职能拓展扩展

1、第三正类库已满足大部分求,剩下的冲具体工作需要抽象成国有职能进行扩展

2、第三正在见的web页面与原类库耦合度较高,希望于原页面及扩张而未影响原本的效用

2、第三正值见的web页面与原类库耦合度较高,希望于原先页面上扩大而休影响原本的成效

3、在一点一滴不改动第三正值类库及web页面的情况下,加入自己之代码

3、在全不改动第三正类库及web页面的状况下,加入自己之代码

4、未来得以联手更新第三方类库

4、未来足一并更新第三正类库

仲、主要实现思路

其次、主要实现思路

1、类库通过连续的办法壮大

1、类库通过持续的章程扩大

2、asp.net页面通过加一个分部类来调用扩展后的类库

2、asp.net页面通过长一个分部类来调用扩展后底类库

老三、具体集成ccflow操作步骤

老三、具体集成ccflow操作步骤

1、解决方案引入ccflow核心三格外接近库,确保三万分接近库底以及解决方案免在与一个目录,由ccflow维护更新

1、解决方案引入ccflow核心三挺类库,确保三老接近库底同缓解方案无以跟一个目,由ccflow维护更新

澳门蒲京网址 1

澳门蒲京网址 2

2、新建好事情的扩展类库,恢宏类库命名空间要为BP开头,与ccflow类库命名规则保持一致,否则无法反射完成初始化

2、新建好事务的扩大类库,扩充类库命名空间要为BP开头,与ccflow类库命名规则保持一致,否则无法反射完成初始化

澳门蒲京网址 3

澳门蒲京网址 4

 

 

3、在扩张类库中初打一个BP.Def.FlowExt类,以持续BP.WF.Template.FlowExt类为条例,根本是再写子类的EnMap属性

3、在扩张类库中初砌一个BP.Def.FlowExt类,以连续BP.WF.Template.FlowExt类为条例,第一是再写子类的EnMap属性

 

 

澳门蒲京网址 5澳门蒲京网址 6

澳门蒲京网址 7澳门蒲京网址 8

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using BP.En;
  6 using BP.Web;
  7 using BP.Sys;
  8 
  9 namespace BP.Def
 10 {
 11 
 12     public class FlowExtAttr : BP.WF.Template.FlowAttr
 13     {
 14         /// <summary>
 15         /// 自定义业务编号
 16         /// </summary>
 17         public const string DefNoFormat = "DefNoFormat";
 18         /// <summary>
 19         /// 自定义业务名称
 20         /// </summary>
 21         public const string DefNameFormat = "DefNameFormat";
 22         /// <summary>
 23         /// 删除流程时是否同时删除自定义
 24         /// </summary>
 25         public static string IsDeleteDef = "IsDeleteDef";
 26     }
 27 
 28     public class FlowExt : BP.WF.Template.FlowExt
 29     {
 30         public FlowExt()
 31         {
 32            
 33         }
 34 
 35         public FlowExt(string _No)
 36         {
 37             this.No = _No;
 38             this.Retrieve();
 39         }
 40 
 41         /// <summary>
 42         /// 重写基类方法
 43         /// </summary>
 44         public override Map EnMap
 45         {
 46             get
 47             {
 48                 //web界面中的Tab展示控制
 49                 EnCfg en = new EnCfg(this.ToString());
 50                 if (en.GroupTitle.Contains(FlowExtAttr.DefNoFormat) == false)
 51                 {
 52                     en.SetValByKey(EnCfgAttr.GroupTitle, en.GroupTitle + "@" + FlowExtAttr.DefNoFormat + "=自定义扩展");
 53                     en.Save();
 54                 }
 55 
 56                 //首次构造返回基类
 57                 if (this._enMap == null)
 58                 {
 59                     this._enMap = base.EnMap;
 60                     return this._enMap;
 61                 }
 62 
 63                 //基类构造完成后,后续使用子类
 64                 int index = this._enMap.Attrs.GetIndexByKey(FlowExtAttr.DefNoFormat);
 65 
 66                 //新增加的配置
 67                 if (this._enMap != null && this.Row.Count > 0 && string.IsNullOrEmpty(this.No) == false && index < 0)
 68                 {
 69                     this._enMap.AddTBString(FlowExtAttr.DefNoFormat, "", "自定义业务编号", true, false, 0, 50, 10, true);
 70                     this._enMap.AddTBString(FlowExtAttr.DefNameFormat, "", "自定义业务名称", true, false, 0, 50, 10, true);
 71                     this._enMap.AddBoolean(FlowExtAttr.IsDeleteDef, false, "删除流程时是否同时删除自定义", true, true, true);
 72                 }
 73 
 74                 return this._enMap;
 75             }
 76         }
 77 
 78         /// <summary>
 79         /// 自定义业务编号
 80         /// </summary>
 81         public string DefNoFormat
 82         {
 83             get
 84             {
 85                 return this.GetValStrByKey(FlowExtAttr.DefNoFormat);
 86             }
 87             set
 88             {
 89                 this.SetValByKey(FlowExtAttr.DefNoFormat, value);
 90             }
 91         }
 92 
 93         /// <summary>
 94         ///自定义业务名称
 95         /// </summary>
 96         public string DefNameFormat
 97         {
 98             get
 99             {
100                 return this.GetValStrByKey(FlowExtAttr.DefNameFormat);
101             }
102             set
103             {
104                 this.SetValByKey(FlowExtAttr.DefNameFormat, value);
105             }
106         }
107 
108         /// <summary>
109         /// 删除流程时是否同时删除自定义
110         /// </summary>
111         public bool IsDeleteDef
112         {
113             get
114             {
115                 return this.GetValBooleanByKey(FlowExtAttr.IsDeleteDef);
116             }
117         }
118     }
119 
120     public class FlowExts : BP.WF.Template.FlowExts
121     {
122         public FlowExts()
123         {
124         }
125 
126         public override Entity GetNewEntity
127         {
128             get { return new FlowExt(); }
129         }
130     }
131 }
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using BP.En;
  6 using BP.Web;
  7 using BP.Sys;
  8 
  9 namespace BP.Def
 10 {
 11 
 12     public class FlowExtAttr : BP.WF.Template.FlowAttr
 13     {
 14         /// <summary>
 15         /// 自定义业务编号
 16         /// </summary>
 17         public const string DefNoFormat = "DefNoFormat";
 18         /// <summary>
 19         /// 自定义业务名称
 20         /// </summary>
 21         public const string DefNameFormat = "DefNameFormat";
 22         /// <summary>
 23         /// 删除流程时是否同时删除自定义
 24         /// </summary>
 25         public static string IsDeleteDef = "IsDeleteDef";
 26     }
 27 
 28     public class FlowExt : BP.WF.Template.FlowExt
 29     {
 30         public FlowExt()
 31         {
 32            
 33         }
 34 
 35         public FlowExt(string _No)
 36         {
 37             this.No = _No;
 38             this.Retrieve();
 39         }
 40 
 41         /// <summary>
 42         /// 重写基类方法
 43         /// </summary>
 44         public override Map EnMap
 45         {
 46             get
 47             {
 48                 //web界面中的Tab展示控制
 49                 EnCfg en = new EnCfg(this.ToString());
 50                 if (en.GroupTitle.Contains(FlowExtAttr.DefNoFormat) == false)
 51                 {
 52                     en.SetValByKey(EnCfgAttr.GroupTitle, en.GroupTitle + "@" + FlowExtAttr.DefNoFormat + "=自定义扩展");
 53                     en.Save();
 54                 }
 55 
 56                 //首次构造返回基类
 57                 if (this._enMap == null)
 58                 {
 59                     this._enMap = base.EnMap;
 60                     return this._enMap;
 61                 }
 62 
 63                 //基类构造完成后,后续使用子类
 64                 int index = this._enMap.Attrs.GetIndexByKey(FlowExtAttr.DefNoFormat);
 65 
 66                 //新增加的配置
 67                 if (this._enMap != null && this.Row.Count > 0 && string.IsNullOrEmpty(this.No) == false && index < 0)
 68                 {
 69                     this._enMap.AddTBString(FlowExtAttr.DefNoFormat, "", "自定义业务编号", true, false, 0, 50, 10, true);
 70                     this._enMap.AddTBString(FlowExtAttr.DefNameFormat, "", "自定义业务名称", true, false, 0, 50, 10, true);
 71                     this._enMap.AddBoolean(FlowExtAttr.IsDeleteDef, false, "删除流程时是否同时删除自定义", true, true, true);
 72                 }
 73 
 74                 return this._enMap;
 75             }
 76         }
 77 
 78         /// <summary>
 79         /// 自定义业务编号
 80         /// </summary>
 81         public string DefNoFormat
 82         {
 83             get
 84             {
 85                 return this.GetValStrByKey(FlowExtAttr.DefNoFormat);
 86             }
 87             set
 88             {
 89                 this.SetValByKey(FlowExtAttr.DefNoFormat, value);
 90             }
 91         }
 92 
 93         /// <summary>
 94         ///自定义业务名称
 95         /// </summary>
 96         public string DefNameFormat
 97         {
 98             get
 99             {
100                 return this.GetValStrByKey(FlowExtAttr.DefNameFormat);
101             }
102             set
103             {
104                 this.SetValByKey(FlowExtAttr.DefNameFormat, value);
105             }
106         }
107 
108         /// <summary>
109         /// 删除流程时是否同时删除自定义
110         /// </summary>
111         public bool IsDeleteDef
112         {
113             get
114             {
115                 return this.GetValBooleanByKey(FlowExtAttr.IsDeleteDef);
116             }
117         }
118     }
119 
120     public class FlowExts : BP.WF.Template.FlowExts
121     {
122         public FlowExts()
123         {
124         }
125 
126         public override Entity GetNewEntity
127         {
128             get { return new FlowExt(); }
129         }
130     }
131 }

View Code

View Code

 

 

 4、在化解方案新建一个web项目,完全拷贝ccflow下的WF、DataUser目及web项目里,最终整结构如下

 4、在化解方案新建一个web项目,完全拷贝ccflow下的WF、DataUser目录及web项目里,最终整结构如下

澳门蒲京网址 9

澳门蒲京网址 10

5、为后台页面增加一个分部类,每当分割路里修改asp.net页面入口,转向访问于定义之BP.Def类库

5、为后台页面增加一个分部类,每当分档次里修改asp.net页面入口,转向访问于定义之BP.Def类库

澳门蒲京网址 11

澳门蒲京网址 12

6、最终效果上以了不改ccflow的内外台源码下实现由定义功能的扩大

6、最终效果上在全无改ccflow的前后台源码下促成由定义功能的壮大

澳门蒲京网址 13

澳门蒲京网址 14