今天有空更新博客才發現快一年沒有寫博客了,不得不感嘆時間過得真快。過去的一年確實也挺忙的,在此祝各位博友們新的一年工作順利。權限模型在過去一年進行了不少的升級,主要集成了公文流轉系統、多家手機短信接口的集成、CMS動態路由的實現、以及Hangfire消息隊列與任務調度組件的集成等,本章主要對公文流轉系統進行總體的介紹,感興趣的可進一步交流或訪問http://pjdemo.yellbuy.com。
公文流轉系統是國內企事業單位的普遍需求,具有很強的中國特色。通常其核心需求如下:
- 具備公文流程審批,流程支持多人並批(有時需要考慮審批人的權重)、打回當前審批人之前任意人(包括起草人)
- 有權限的審批人能在審批過程中能前插、后插審批人進行審批,審批人可提前瀏覽本人將審批的公文。
- 每個公文流程可設置傳閱人,傳閱人只能看流程的公文信息,不參與審批
- 公司(子公司)可分別創建不同的審批流程,根據公司(子公司)、公文類別來確定流程
- 公文起草和審批時能上傳多個附件
- 菜單中有起草公文、已發公文、送閱公文、待辦公文、已批公文、公文一覽等。
權限模型以組織機構為中心,更加符合國內實際情況,也非常適合公文流轉系統的開發。在權限模型框架的基礎之上,能對模塊、按鈕、數據權限進行全方位的控制,可對各個組織不同類型的權限進行授權和管理。使用權限模型,就需要根據權限模型的開發規范對數據庫進行建模,其中需要進行數據權限控制的業務功能模塊需要具有(:DeleteStatus,CreatedFID和CreatedFName三個默認的字段)。如下為公文流轉系統的數據庫設計表結構:
WorkflowTemplate - 公文流程模板
表名 |
WorkflowTemplate |
描述 |
公文流程模板 |
|||||
序號 |
列名 |
字段類型 |
長度 |
可空 |
主鍵 |
外鍵 |
描述 |
|
1 |
ID |
nvarchar |
36 |
否 |
是 |
|
標識 |
|
2 |
Code |
nvarchar |
255 |
是 |
|
|
編碼 |
|
3 |
Name |
nvarchar |
255 |
否 |
|
|
名稱 |
|
4 |
WorkflowType |
nvarchar |
255 |
是 |
|
|
類型 |
|
5 |
Value |
nvarchar |
-1 |
是 |
|
|
值 |
|
6 |
FormTemplate |
nvarchar |
-1 |
是 |
|
|
表單模板 |
|
7 |
LargeImage |
nvarchar |
-1 |
是 |
|
|
保留 |
|
8 |
SmallImage |
nvarchar |
-1 |
是 |
|
|
保留 |
|
9 |
Description |
nvarchar |
-1 |
是 |
|
|
描述 |
|
10 |
Comment |
nvarchar |
-1 |
是 |
|
|
備注 |
|
11 |
QuanPin |
nvarchar |
-1 |
是 |
|
|
保留 |
|
12 |
JianPin |
nvarchar |
255 |
是 |
|
|
保留 |
|
13 |
ExtensionDataType |
nvarchar |
255 |
是 |
|
|
擴展數據類型的名稱 |
|
14 |
ExtensionData |
nvarchar |
-1 |
是 |
|
|
擴展數據類型存儲值 |
|
15 |
Status |
int |
|
否 |
|
|
狀態(無效,有效,預定義) |
|
16 |
DisplayOrder |
decimal |
|
否 |
|
|
顯示順序 |
|
17 |
CreatedFID |
nvarchar |
2048 |
是 |
|
|
創建者完整標識路徑 |
|
18 |
CreatedFName |
nvarchar |
2048 |
是 |
|
|
創建者完整名稱路徑 |
|
19 |
CreatedDate |
datetime |
|
否 |
|
|
創建時間 |
|
20 |
LastUpdatedFID |
nvarchar |
2048 |
是 |
|
|
最后修改人完整標識路徑 |
|
21 |
LastUpdatedFName |
nvarchar |
2048 |
是 |
|
|
最后修改人完整名稱路徑 |
|
22 |
LastUpdatedDate |
datetime |
|
是 |
|
|
最后修改時間 |
|
23 |
DeleteStatus |
int |
|
否 |
|
|
刪除狀態 |
|
24 |
Owner |
nvarchar |
255 |
是 |
|
|
Owner |
|
25 |
ApplicationName |
nvarchar |
255 |
是 |
|
|
ApplicationName |
|
WorkflowCreator - 流程所允許發起的組織
表名 |
WorkflowCreator |
描述 |
流程所允許發起的組織 |
|||||
序號 |
列名 |
字段類型 |
長度 |
可空 |
主鍵 |
外鍵 |
描述 |
|
1 |
ID |
nvarchar |
36 |
否 |
是 |
|
標識 |
|
2 |
WorkflowId |
nvarchar |
36 |
是 |
|
是 |
流程模板標識 |
|
3 |
OrgFID |
nvarchar |
2048 |
否 |
|
|
可發起人組織標識全路徑 |
|
4 |
OrgFName |
nvarchar |
2048 |
是 |
|
|
可發起人組織名稱全路徑 |
|
5 |
CreatedFID |
nvarchar |
2048 |
是 |
|
|
創建人組織標識全路徑 |
|
6 |
CreatedFName |
nvarchar |
2048 |
是 |
|
|
創建人組織名稱全路徑 |
|
7 |
Version |
int |
|
否 |
|
|
版本號 |
|
8 |
ApplicationName |
nvarchar |
64 |
是 |
|
|
應用程序標識 |
|
ActivityTemplate - 活動模板
表名 |
ActivityTemplate |
描述 |
活動模板 |
|||||
序號 |
列名 |
字段類型 |
長度 |
可空 |
主鍵 |
外鍵 |
描述 |
|
1 |
ID |
nvarchar |
36 |
否 |
是 |
|
ID |
|
2 |
WorkflowId |
nvarchar |
36 |
否 |
|
是 |
所屬公文流程模板標識 |
|
3 |
Code |
nvarchar |
255 |
是 |
|
|
活動編碼 |
|
4 |
Name |
nvarchar |
255 |
否 |
|
|
活動名稱 |
|
5 |
Value |
nvarchar |
-1 |
是 |
|
|
值 |
|
6 |
ActivityKind |
int |
|
否 |
|
|
活動類型 |
|
7 |
TopValue |
int |
|
否 |
|
|
Y坐標 |
|
8 |
LeftValue |
int |
|
否 |
|
|
X坐標 |
|
9 |
WidthValue |
int |
|
否 |
|
|
寬度 |
|
10 |
HeightValue |
int |
|
否 |
|
|
高度 |
|
11 |
IsStartActivity |
bit |
|
否 |
|
|
是否開始活動 |
|
12 |
IsFinishActivity |
bit |
|
否 |
|
|
是否結束活動 |
|
13 |
ExpirationTime |
int |
|
否 |
|
|
默認過期時間 |
|
14 |
Description |
nvarchar |
-1 |
是 |
|
|
描述 |
|
15 |
Comment |
nvarchar |
-1 |
是 |
|
|
備注 |
|
16 |
QuanPin |
nvarchar |
-1 |
是 |
|
|
保留 |
|
17 |
JianPin |
nvarchar |
255 |
是 |
|
|
保留 |
|
18 |
DisplayOrder |
decimal |
|
否 |
|
|
顯示順序 |
|
19 |
LargeImage |
nvarchar |
-1 |
是 |
|
|
保留 |
|
20 |
SmallImage |
nvarchar |
-1 |
是 |
|
|
保留 |
|
21 |
ExtensionDataType |
nvarchar |
255 |
是 |
|
|
擴展數據類型名 |
|
22 |
ExtensionData |
nvarchar |
-1 |
是 |
|
|
擴展數據值 |
|
23 |
EntryExecuteTypeName |
nvarchar |
255 |
是 |
|
|
入口點執行外部方法類的信息 |
|
24 |
EntryExecuteMethodName |
nvarchar |
255 |
是 |
|
|
入口點執行外部方法的方法名 |
|
25 |
ExitExecuteTypeName |
nvarchar |
255 |
是 |
|
|
出口點執行外部方法類的信息 |
|
26 |
ExitExecuteMethodName |
nvarchar |
255 |
是 |
|
|
出口點執行外部方法的方法名 |
|
27 |
DeleteStatus |
int |
|
否 |
|
|
刪除狀態 |
|
28 |
CreatedFID |
nvarchar |
2048 |
是 |
|
|
CreatedFID |
|
29 |
CreatedFName |
nvarchar |
2048 |
是 |
|
|
CreatedFName |
|
30 |
CreatedDate |
datetime |
|
否 |
|
|
CreatedDate |
|
31 |
LastUpdatedFID |
nvarchar |
2048 |
是 |
|
|
LastUpdatedFID |
|
32 |
LastUpdatedFName |
nvarchar |
2048 |
是 |
|
|
LastUpdatedFName |
|
33 |
LastUpdatedDate |
datetime |
|
是 |
|
|
LastUpdatedDate |
|
34 |
Owner |
nvarchar |
255 |
是 |
|
|
Owner |
|
35 |
ApplicationName |
nvarchar |
255 |
是 |
|
|
ApplicationName |
|
ActivityAuditor -活動步驟模板所允許審批的組織
表名 |
ActivityAuditor |
描述 |
活動步驟模板所允許審批的組織 |
|||||
序號 |
列名 |
字段類型 |
長度 |
可空 |
主鍵 |
外鍵 |
描述 |
|
1 |
ID |
nvarchar |
36 |
否 |
|
|
標識 |
|
2 |
ActivityId |
nvarchar |
36 |
否 |
|
是 |
活動模板標識 |
|
3 |
AuditingFID |
nvarchar |
2048 |
否 |
|
|
審批人完整標識路徑 |
|
4 |
AuditingFName |
nvarchar |
2048 |
否 |
|
|
審批人完整名稱路徑 |
|
5 |
Weight |
decimal |
|
否 |
|
|
默認審批權重 |
|
6 |
ExperitionTime |
int |
|
否 |
|
|
默認過期時間,小時 |
|
7 |
Comment |
ntext |
1073741823 |
是 |
|
|
備注 |
|
WorkflowInstance - 公文實例
表名 |
WorkflowInstance |
描述 |
公文實例(每個流程發起的實例) |
|||||
序號 |
列名 |
字段類型 |
長度 |
可空 |
主鍵 |
外鍵 |
描述 |
|
1 |
ID |
nvarchar |
36 |
否 |
是 |
|
標識 |
|
2 |
WorkflowId |
nvarchar |
36 |
否 |
|
是 |
所屬公文流程模板標識 |
|
3 |
WorkflowName |
ntext |
1073741823 |
否 |
|
|
所屬公文流程模板名稱 |
|
4 |
No |
nvarchar |
255 |
是 |
|
|
文號 |
|
5 |
Subject |
nvarchar |
255 |
否 |
|
|
標題 |
|
6 |
Kind |
nvarchar |
255 |
是 |
|
|
類型 |
|
7 |
Abstract |
nvarchar |
1024 |
是 |
|
|
摘要 |
|
8 |
Body |
ntext |
1073741823 |
是 |
|
|
內容 |
|
9 |
SafeLevel |
int |
|
否 |
|
|
密級 |
|
10 |
UrgencyDegree |
int |
|
否 |
|
|
緊急程度 |
|
10 |
DeleteStatus |
bit |
|
否 |
|
|
邏輯刪除狀態 |
|
11 |
DocStatus |
int |
|
否 |
|
|
當前狀態,0開始 1運行 2結束 |
|
12 |
AuditedStatus |
int |
|
否 |
|
|
當前審核狀態 0:未通過 1:已通過 |
|
13 |
SourceActivityId |
nvarchar |
36 |
是 |
|
|
當前已執行活動標識 |
|
14 |
SourceActivityName |
nvarchar |
50 |
是 |
|
|
當前已執行活動名稱 |
|
15 |
TargetActivityId |
nvarchar |
36 |
是 |
|
|
當前待執行活動標識 |
|
16 |
TargetActivityName |
nvarchar |
50 |
是 |
|
|
當前待執行活動名稱 |
|
17 |
Version |
int |
|
否 |
|
|
版本號 |
|
18 |
ExtensionDataType |
nvarchar |
255 |
是 |
|
|
擴展數據類型 |
|
19 |
ExtensionData |
ntext |
1073741823 |
是 |
|
|
擴展數據 |
|
20 |
CreatedFID |
nvarchar |
2048 |
否 |
|
|
起草人完整標識路徑 |
|
21 |
CreatedFName |
nvarchar |
2048 |
否 |
|
|
起草人完整名稱路徑 |
|
22 |
CreatedDate |
datetime |
|
否 |
|
|
起草時間 |
|
23 |
LastUpdatedFID |
nvarchar |
2048 |
是 |
|
|
最后修改人完整路徑標識 |
|
24 |
LastUpdatedFName |
nvarchar |
2048 |
是 |
|
|
最后修改人完整名稱描述 |
|
25 |
LastUpdatedDate |
datetime |
|
是 |
|
|
最后修改時間 |
|
Attachment - 公文附件
表名 |
Attachment |
描述 |
公文附件 |
|||||
序號 |
列名 |
字段類型 |
長度 |
可空 |
主鍵 |
外鍵 |
描述 |
|
1 |
ID |
nvarchar |
36 |
否 |
是 |
|
標識 |
|
2 |
No |
nvarchar |
50 |
是 |
|
|
文號 |
|
3 |
Title |
nvarchar |
256 |
否 |
|
|
標題 |
|
4 |
FileName |
nvarchar |
256 |
是 |
|
|
文件名 |
|
5 |
FilePath |
nvarchar |
256 |
是 |
|
|
文件路徑 |
|
6 |
ExtensionName |
nvarchar |
10 |
是 |
|
|
文件擴展名 |
|
7 |
Kind |
int |
|
否 |
|
|
附件類別 |
|
8 |
Type |
nvarchar |
256 |
否 |
|
|
類型 |
|
9 |
Abstract |
nvarchar |
1024 |
是 |
|
|
摘要 |
|
10 |
Body |
ntext |
1073741823 |
是 |
|
|
正文 |
|
11 |
Keyword |
nvarchar |
256 |
是 |
|
|
關鍵字 |
|
12 |
Tag |
nvarchar |
256 |
是 |
|
|
標記 |
|
13 |
Comment |
ntext |
1073741823 |
是 |
|
|
備注 |
|
14 |
FileContent |
varbinary |
-1 |
是 |
|
|
附件內容 |
|
15 |
PublishDate |
datetime |
|
是 |
|
|
發布日期 |
|
16 |
DeleteStatus |
int |
|
否 |
|
|
刪除狀態 |
|
17 |
CreatedFID |
nvarchar |
2048 |
否 |
|
|
創建人標識路徑 |
|
18 |
CreatedFName |
nvarchar |
2048 |
否 |
|
|
創建人名稱路徑 |
|
19 |
CreatedDate |
datetime |
|
否 |
|
|
創建時間 |
|
20 |
LastUpdatedFID |
nvarchar |
2048 |
是 |
|
|
最后修改人標識路徑 |
|
21 |
LastUpdatedFName |
nvarchar |
2048 |
是 |
|
|
最后修改人名稱路徑 |
|
22 |
LastUpdatedDate |
datetime |
|
是 |
|
|
最后修改時間 |
|
23 |
DisplayOrder |
decimal |
|
否 |
|
|
顯示順序 |
|
24 |
Version |
int |
|
否 |
|
|
版本號 |
|
25 |
ObjectId |
nvarchar |
255 |
是 |
|
|
所屬記錄標識 |
|
ActivityInstance - 活動步驟實例
表名 |
ActivityInstance |
描述 |
活動步驟實例 |
|||||
序號 |
列名 |
字段類型 |
長度 |
可空 |
主鍵 |
外鍵 |
描述 |
|
1 |
ID |
nvarchar |
36 |
否 |
是 |
|
標識 |
|
2 |
WorkflowId |
nvarchar |
36 |
否 |
|
|
所屬公文流程模板標識 |
|
3 |
WorkflowName |
nvarchar |
255 |
否 |
|
|
所屬公文流程模板標識 |
|
4 |
WorkflowInstanceId |
nvarchar |
36 |
否 |
|
是 |
WorkflowInstanceId |
|
5 |
WorkflowInstanceSubject |
nvarchar |
255 |
否 |
|
|
WorkflowInstanceSubject |
|
6 |
Code |
nvarchar |
255 |
是 |
|
|
編碼 |
|
7 |
Name |
nvarchar |
255 |
否 |
|
|
名稱 |
|
8 |
Value |
nvarchar |
-1 |
是 |
|
|
值 |
|
9 |
Status |
int |
|
否 |
|
|
活動狀態,未執行,未通過,已通過 |
|
10 |
ActivityKind |
int |
|
否 |
|
|
活動類型,保留 |
|
11 |
TopValue |
int |
|
否 |
|
|
Y坐標 |
|
12 |
LeftValue |
int |
|
否 |
|
|
X坐標 |
|
13 |
WidthValue |
int |
|
否 |
|
|
寬度值 |
|
14 |
HeightValue |
int |
|
否 |
|
|
高度值 |
|
15 |
IsStartActivity |
bit |
|
否 |
|
|
是否開始活動 |
|
16 |
IsFinishActivity |
bit |
|
否 |
|
|
是否結束活動 |
|
17 |
ExpirationTime |
int |
|
否 |
|
|
過期時間 |
|
18 |
Description |
nvarchar |
-1 |
是 |
|
|
描述 |
|
19 |
Comment |
nvarchar |
-1 |
是 |
|
|
備注 |
|
20 |
QuanPin |
nvarchar |
-1 |
是 |
|
|
保留 |
|
21 |
JianPin |
nvarchar |
255 |
是 |
|
|
保留 |
|
22 |
DisplayOrder |
decimal |
|
否 |
|
|
顯示順序 |
|
23 |
LargeImage |
nvarchar |
-1 |
是 |
|
|
保留 |
|
24 |
SmallImage |
nvarchar |
-1 |
是 |
|
|
保留 |
|
25 |
ExtensionDataType |
nvarchar |
255 |
是 |
|
|
擴展數據類型名 |
|
26 |
ExtensionData |
nvarchar |
-1 |
是 |
|
|
擴展數據值 |
|
27 |
EntryExecuteTypeName |
nvarchar |
255 |
是 |
|
|
入口點執行外部方法類的信息 |
|
28 |
EntryExecuteMethodName |
nvarchar |
255 |
是 |
|
|
入口點執行外部方法的方法名 |
|
29 |
ExitExecuteTypeName |
nvarchar |
255 |
是 |
|
|
出口點執行外部方法類的信息 |
|
30 |
ExitExecuteMethodName |
nvarchar |
255 |
是 |
|
|
出口點執行外部方法的方法名 |
|
31 |
DeleteStatus |
int |
|
否 |
|
|
刪除狀態 |
|
32 |
CreatedFID |
nvarchar |
2048 |
是 |
|
|
CreatedFID |
|
33 |
CreatedFName |
nvarchar |
2048 |
是 |
|
|
CreatedFName |
|
34 |
CreatedDate |
datetime |
|
否 |
|
|
CreatedDate |
|
35 |
LastUpdatedFID |
nvarchar |
2048 |
是 |
|
|
LastUpdatedFID |
|
36 |
LastUpdatedFName |
nvarchar |
2048 |
是 |
|
|
LastUpdatedFName |
|
37 |
LastUpdatedDate |
datetime |
|
是 |
|
|
LastUpdatedDate |
|
38 |
Owner |
nvarchar |
255 |
是 |
|
|
Owner |
|
39 |
ApplicationName |
nvarchar |
255 |
是 |
|
|
ApplicationName |
|
ActivityInstanceAuditor - 活動步驟實例對應的審批人
表名 |
ActivityInstanceAuditor |
描述 |
活動步驟實例對應的審批人(多個審批人則為並行模式,通過權重判斷是否審批通過) |
|||||
序號 |
列名 |
字段類型 |
長度 |
可空 |
主鍵 |
外鍵 |
描述 |
|
1 |
ID |
nvarchar |
36 |
否 |
|
|
標識 |
|
2 |
ActivityInstanceId |
nvarchar |
36 |
否 |
|
是 |
所屬活動步驟實例標識 |
|
3 |
ActivityInstanceName |
nvarchar |
255 |
是 |
|
|
所屬活動步驟實例名稱 |
|
4 |
AuditingFID |
nvarchar |
2048 |
否 |
|
|
活動審批人完整標識 |
|
5 |
AuditingFName |
nvarchar |
2048 |
否 |
|
|
審核人完整名稱路徑 |
|
6 |
ExperiationTime |
int |
|
否 |
|
|
過期時間(小時) |
|
7 |
ExperiationResult |
int |
|
否 |
|
|
超時時自動執行的結果(是否通過) |
|
8 |
Weight |
decimal |
|
否 |
|
|
權重 |
|
9 |
AuditedResult |
int |
|
否 |
|
|
審核結果(未審核,審核未通過,審核通過) |
|
10 |
AuditedOpinion |
ntext |
1073741823 |
是 |
|
|
審核意見 |
|
11 |
AuditedFID |
nvarchar |
2048 |
是 |
|
|
審核人完整標識 |
|
12 |
AuditedFName |
nvarchar |
2048 |
是 |
|
|
AuditedFName |
|
13 |
AuditedDate |
datetime |
|
是 |
|
|
AuditedDate |
|
14 |
AuditedKind |
int |
|
否 |
|
|
人工審批,超時自動審批 |
|
15 |
Comment |
ntext |
1073741823 |
是 |
|
|
備注 |
|
ActivityLogs - 活動日志
表名 |
ActivityLogs |
描述 |
活動審批日志信息 |
|||||
序號 |
列名 |
字段類型 |
長度 |
可空 |
主鍵 |
外鍵 |
描述 |
|
1 |
ID |
nvarchar |
36 |
否 |
是 |
|
ID |
|
2 |
WorkflowInstanceId |
nvarchar |
36 |
否 |
|
是 |
所屬公文流程實例標識 |
|
3 |
WorkflowInstanceSubject |
nvarchar |
255 |
否 |
|
|
所屬公文流程實例主題 |
|
4 |
WorkflowId |
nvarchar |
36 |
否 |
|
|
所屬公文流程模板標識 |
|
5 |
WorkflowName |
nvarchar |
255 |
否 |
|
|
所屬公文流程模板名稱 |
|
6 |
SourceActivityInstanceId |
nvarchar |
36 |
是 |
|
|
執行的活動實例標識 |
|
7 |
SourceActivityInstanceName |
nvarchar |
255 |
是 |
|
|
執行的活動實例名稱 |
|
8 |
SourceActivityInstanceKind |
int |
|
是 |
|
|
執行的活動實例類型 |
|
9 |
TargetActivityInstanceId |
nvarchar |
36 |
是 |
|
|
待執行的活動實例標識 |
|
10 |
TargetActivityInstanceName |
nvarchar |
255 |
是 |
|
|
待執行的活動實例名稱 |
|
11 |
TargetActivityInstanceKind |
int |
|
是 |
|
|
待執行的活動實例類型 |
|
12 |
AuditedWeight |
decimal |
|
是 |
|
|
審核的權重結果 |
|
13 |
AuditedOpinion |
nvarchar |
-1 |
是 |
|
|
審核的意見 |
|
14 |
AuditedFID |
nvarchar |
-1 |
是 |
|
|
審核人完整標識路徑 |
|
15 |
AuditedFName |
nvarchar |
-1 |
是 |
|
|
審核人完整名稱路徑 |
|
16 |
AuditedDate |
datetime |
|
是 |
|
|
審核日期 |
|
17 |
AuditedResult |
int |
|
否 |
|
|
審核的結果(未通過,正在並行審批,已通過) |
|
18 |
AuditedKind |
int |
|
否 |
|
|
審核類別(人工審核,超時自動審核等) |
|
19 |
Comment |
nvarchar |
-1 |
是 |
|
|
備注 |
|
20 |
CreatedFID |
nvarchar |
2048 |
否 |
|
|
起草人完整標識路徑 |
|
21 |
CreatedFName |
nvarchar |
2048 |
是 |
|
|
起草人完整名稱路徑 |
|
22 |
CreatedDate |
datetime |
|
否 |
|
|
起草日期 |
|
最終實現的界面效果如下:
下一章:MVC中實現動態自定義路由