YbSoftwareFactory 代码生成插件【二十三】:集成强大的公文流转系统
2016-02-26 08:58
941 查看
今天有空更新博客才发现快一年没有写博客了,不得不感叹时间过得真快。过去的一年确实也挺忙的,在此祝各位博友们新的一年工作顺利。权限模型在过去一年进行了不少的升级,主要集成了公文流转系统、多家手机短信接口的集成、CMS动态路由的实现、以及Hangfire消息队列与任务调度组件的集成等,本章主要对公文流转系统进行总体的介绍,感兴趣的可进一步交流或访问http://pjdemo.yellbuy.com。
公文流转系统是国内企事业单位的普遍需求,具有很强的中国特色。通常其核心需求如下:
具备公文流程审批,流程支持多人并批(有时需要考虑审批人的权重)、打回当前审批人之前任意人(包括起草人)
有权限的审批人能在审批过程中能前插、后插审批人进行审批,审批人可提前浏览本人将审批的公文。
每个公文流程可设置传阅人,传阅人只能看流程的公文信息,不参与审批
公司(子公司)可分别创建不同的审批流程,根据公司(子公司)、公文类别来确定流程
公文起草和审批时能上传多个附件
菜单中有起草公文、已发公文、送阅公文、待办公文、已批公文、公文一览等。
权限模型以组织机构为中心,更加符合国内实际情况,也非常适合公文流转系统的开发。在权限模型框架的基础之上,能对模块、按钮、数据权限进行全方位的控制,可对各个组织不同类型的权限进行授权和管理。使用权限模型,就需要根据权限模型的开发规范对数据库进行建模,其中需要进行数据权限控制的业务功能模块需要具有(:DeleteStatus,CreatedFID和CreatedFName三个默认的字段)。如下为公文流转系统的数据库设计表结构:
WorkflowTemplate - 公文流程模板
WorkflowCreator - 流程所允许发起的组织
ActivityTemplate - 活动模板
ActivityAuditor -活动步骤模板所允许审批的组织
WorkflowInstance - 公文实例
Attachment - 公文附件
ActivityInstance - 活动步骤实例
ActivityInstanceAuditor - 活动步骤实例对应的审批人
ActivityLogs - 活动日志
最终实现的界面效果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/0f4f4361317bf11576ec796482ece886.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/eee8aba1b4ead2711863641e071c0d4a.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/31a645a2b63adc4dea83dcd0c9542fb8.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/348e5466f3ee367c5e34d713e871d9b0.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/405154474e837332571dc60bbd4ee069.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/c3f82a82ad5d59284f2d50100ec779d6.png)
下一章:MVC中实现动态自定义路由
公文流转系统是国内企事业单位的普遍需求,具有很强的中国特色。通常其核心需求如下:
具备公文流程审批,流程支持多人并批(有时需要考虑审批人的权重)、打回当前审批人之前任意人(包括起草人)
有权限的审批人能在审批过程中能前插、后插审批人进行审批,审批人可提前浏览本人将审批的公文。
每个公文流程可设置传阅人,传阅人只能看流程的公文信息,不参与审批
公司(子公司)可分别创建不同的审批流程,根据公司(子公司)、公文类别来确定流程
公文起草和审批时能上传多个附件
菜单中有起草公文、已发公文、送阅公文、待办公文、已批公文、公文一览等。
权限模型以组织机构为中心,更加符合国内实际情况,也非常适合公文流转系统的开发。在权限模型框架的基础之上,能对模块、按钮、数据权限进行全方位的控制,可对各个组织不同类型的权限进行授权和管理。使用权限模型,就需要根据权限模型的开发规范对数据库进行建模,其中需要进行数据权限控制的业务功能模块需要具有(: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 | 描述 | 流程所允许发起的组织 | |||||
序号 | 列名 | 字段类型 | 长度 | 可空 | 主键 | 外键 | 描述 | |
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 | 描述 | 活动模板 | |||||
序号 | 列名 | 字段类型 | 长度 | 可空 | 主键 | 外键 | 描述 | |
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 | 描述 | 活动步骤模板所允许审批的组织 | |||||
序号 | 列名 | 字段类型 | 长度 | 可空 | 主键 | 外键 | 描述 | |
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 | 描述 | 公文实例(每个流程发起的实例) | |||||
序号 | 列名 | 字段类型 | 长度 | 可空 | 主键 | 外键 | 描述 | |
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 | 描述 | 公文附件 | |||||
序号 | 列名 | 字段类型 | 长度 | 可空 | 主键 | 外键 | 描述 | |
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 | 描述 | 活动步骤实例 | |||||
序号 | 列名 | 字段类型 | 长度 | 可空 | 主键 | 外键 | 描述 | |
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 | 描述 | 活动步骤实例对应的审批人(多个审批人则为并行模式,通过权重判断是否审批通过) | |||||
序号 | 列名 | 字段类型 | 长度 | 可空 | 主键 | 外键 | 描述 | |
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 | 描述 | 活动审批日志信息 | |||||
序号 | 列名 | 字段类型 | 长度 | 可空 | 主键 | 外键 | 描述 | |
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 | 否 | 起草日期 | ||||
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/0f4f4361317bf11576ec796482ece886.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/eee8aba1b4ead2711863641e071c0d4a.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/31a645a2b63adc4dea83dcd0c9542fb8.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/348e5466f3ee367c5e34d713e871d9b0.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/405154474e837332571dc60bbd4ee069.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/c3f82a82ad5d59284f2d50100ec779d6.png)
下一章:MVC中实现动态自定义路由
相关文章推荐
- java web session共享
- PHP中array_keys和array_unique函数源码的分析
- 解析Java中的定时器及使用定时器制作弹弹球游戏的示例
- Go 消费者和生产者的简单例子
- Go 消费者和生产者的简单例子
- Go 消费者和生产者的简单例子
- Eclipse中引用依赖库library失败的原因
- Java 反射机制详解?!!
- Spring3 MVC请求参数获取的几种方法
- JAVA学习20160226
- 1054. The Dominant Color (20)
- struts报错严重: Dispatcher initialization failed Unable to load configuration.
- 从头认识Spring-3.7 简单的AOP日志实现(注解版)-增加检查订单功能
- ubuntu下google 拼音输入法的安装
- C# XML读写实例
- 关于cookie 类的Java操作
- Python图像处理库PIL的ImageDraw模块介绍
- php脚本判断闰年
- Java基础和环境配置
- Andriod学习笔记5:通过NDK在C++中实现日志输出