今天有空更新博客才发现快一年没有写博客了,不得不感叹时间过得真快。过去的一年确实也挺忙的,在此祝各位博友们新的一年工作顺利。权限模型在过去一年进行了不少的升级,主要集成了公文流转系统、多家手机短信接口的集成、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中实现动态自定义路由