·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> .net之工作流工程展示及代码分享(二)工作流引擎

.net之工作流工程展示及代码分享(二)工作流引擎

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

.net之工作流工程展示及代码分享(二)工作流引擎

在介绍完表单类的时候,接下来介绍工作流引擎,主要由四个类组成,分别是流程、流程步骤、流程实例、流程步骤实例类。

流程类:

 1     [Serializable] 2     public class Flow 3     { 4         [xmlAttribute] 5         public Guid FlowId { get; set; } 6         [XmlAttribute] 7         public string FlowName { get; set; } 8         public List<FlowStep> FlowSteps { get; set; } 9         [XmlAttribute]10         public string FlowCategory { get; set; }11         [XmlAttribute]12         public bool Enabled { get; set; }13         [XmlAttribute]14         public DateTime CreateDate { get; set; }15         public Person Creator { get; set; }16         17         public DateTime? CanRequestDateStart { get; set; }18         19         public DateTime? CanRequestDateEnd { get; set; }20 21         public string CreaterName22         {23             get24             {25                 if(Creator!=null)26                 return Creator.PersonName;27                 return string.Empty;28             }29         }30         [XmlAttribute]31         public Guid FormId { get; set; }32         [XmlAttribute]33         public string FormName { get; set; }34         public WorkflowConstant.accessMode AccessMode { get; set; }35         [XmlAttribute]36         public short PeriodTime { get; set; }37         [XmlAttribute]38         public string RequestRights { get; set; }39         [XmlAttribute]40         public string RequestGroup { get; set; }41         public string AccessModeDesc42         {43             get44             {45                 switch (RequestRights)46                 {47                     case "-不限-":48                         return "所有人";49                     default:50                         return RequestRights+": ";51                 }52             }53         }54 55         [XmlAttribute]56         public string RoleGroups {57             get58             {59                 if (!string.IsNullOrEmpty(RequestGroup))60                 {61                     return string.Join("、", RequestGroup.Split(',').Select(g => g.Split('|')[0]));62                 }63                 else64                 {65                     return string.Empty;66                 }67             } 68         }69     }
View Code

流程步骤类:

 1     [Serializable] 2     public class FlowStep 3     { 4         [XmlAttribute] 5         public Guid StepId { get; set; } 6         [XmlAttribute] 7         public Guid PReviousStepId { get; set; } 8         [XmlAttribute] 9         public Guid NextStepId { get; set; }10         [XmlAttribute]11         public int SequenceId { get; set; }12         [XmlAttribute]13         public string StepName { get; set; }14         [XmlAttribute]15         public string RightGroupTitle { get; set; }16         public List<Guid> CanWriteFormContolIds { get; set; }17         [XmlAttribute]18         public bool CanReturnToPreviousStep { get; set; }19         [XmlAttribute]20         public bool CanReturnToFirstStep { get; set; }21         [XmlAttribute]22         public bool AllowSelectAuditor { get; set; }23         public WorkflowConstant.CounterSignatureMode CounterSignatureMode { get; set; }24         [XmlAttribute]25         public bool IsStartStep { get; set; }26         [XmlAttribute]27         public bool IsLastStep { get; set; }28         [XmlAttribute]29         public bool CanUploadFile { get; set; }30         [XmlAttribute]31         public bool MustUploadFile { get; set; }32         [XmlAttribute]33         public int UploadFileCount { get; set; }34     }
View Code

流程实例类:

 1    [Serializable] 2     public class FlowInstance 3     { 4         [XmlAttribute] 5         public Guid FlowInstantId { get; set; } 6         public Flow Flow { get; set; } 7          8         public List<FlowInstanceStep> FlowStepInstances { get; set; }  9         public Person Creator { get; set; }10         [XmlAttribute]11         public DateTime CreateDate { get; set; }12         [XmlAttribute]13         public DateTime LastDealDate { get; set; }14         [XmlAttribute]15         public WorkflowConstant.SignatureStatus FlowStatus { get; set; }16 17         public string FlowStatusName18         {19             get20             {21                 switch (FlowStatus)22                 {23                     case WorkflowConstant.SignatureStatus.Start:24                         return "进行中";25                         break;26                     case WorkflowConstant.SignatureStatus.Undeal:27                         return "未处理";28                         break;29                     case WorkflowConstant.SignatureStatus.PartialPassed:30                         return "部分通过";31                         break;32                     case WorkflowConstant.SignatureStatus.Passed:33                         return "通过";34                         break;35                     case WorkflowConstant.SignatureStatus.OutDated:36                         return "过期";37                         break;38                     case WorkflowConstant.SignatureStatus.Canceled:39                         return "取消";40                         break;41                     case WorkflowConstant.SignatureStatus.RejectToPreviousStep:42                         return "退回上一步";43                         break;44                     case WorkflowConstant.SignatureStatus.RejectToFirstStep:45                         return "退回第一步";46                         break;47                     case WorkflowConstant.SignatureStatus.Stopped:48                         return "停止";49                         break;50                     case WorkflowConstant.SignatureStatus.Finish:51                         return "结束";52                         break;53                     default:54                         return string.Empty;55                 }56             }57         }58 59         public DateTime? EndDate60         {61             get62             {63                 if (Flow != null)64                 {65                     return CreateDate.AddDays(Flow.PeriodTime);66                 }67                 else return null;68             }69         }70 71         public string CurrentStepDisplayName { get; set; }72     }
View Code

流程步骤实例类:

 1     [Serializable] 2     public class FlowInstanceStep 3     { 4         [XmlAttribute] 5         public Guid StepInstanceId { get; set; } 6         public List<WorkflowPersonSignature> PersonSignatures { get; set; } 7  8         public SerializableDictionary<Guid, string> WriteValues { get; set; } 9