今天有空更新博客才发现快一年没有写博客了,不得不感叹时间过得真快。过去的一年确实也挺忙的,在此祝各位博友们新的一年工作顺利。权限模型在过去一年进行了不少的升级,主要集成了公文流转系统、多家手机短信接口的集成、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 |
否 |
起草日期 |
||||
最终实现的界面效果如下:
时间: 2024-10-18 01:53:19