.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 CreaterName
22         {
23             get
24             {
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 AccessModeDesc
42         {
43             get
44             {
45                 switch (RequestRights)
46                 {
47                     case "-不限-":
48                         return "所有人";
49                     default:
50                         return RequestRights+": ";
51                 }
52             }
53         }
54 
55         [XmlAttribute]
56         public string RoleGroups {
57             get
58             {
59                 if (!string.IsNullOrEmpty(RequestGroup))
60                 {
61                     return string.Join("", RequestGroup.Split(',').Select(g => g.Split('|')[0]));
62                 }
63                 else
64                 {
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 FlowStatusName
18         {
19             get
20             {
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? EndDate
60         {
61             get
62             {
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        
10         public FlowStep FlowStep { get; set; }
11         [XmlAttribute]
12         public DateTime CreateDate { get; set; }
13         [XmlAttribute]
14         public DateTime ProcessDate { get; set; }
15         [XmlAttribute]
16         public WorkflowConstant.SignatureStatus StepStatus { get; set; }
17         public List<AttachFile> FileList { get; set; } 
18     }
View Code

 

這幾個類使用了“貧血模型” 

設定好流程和步驟,以后每次建立的流程實例都是從流程獲取到的。

 

本系列導航:

  1. .net之工作流工程展示及代碼分享(預告)
  2. .net之工作流工程展示及代碼分享(一)工作流表單
  3. .net之工作流工程展示及代碼分享(二)工作流引擎
  4. .net之工作流工程展示及代碼分享(三)數據存儲引擎
  5. .net之工作流工程展示及代碼分享(四)主控制類
  6. .net之工作流工程展示及代碼分享(五)前端交互


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM