流程审批模块
审批业务流程总结
前言:需要开发一个saas系统,saas系统包含了许多系统,比如EAM,MES,WMS,QMS等系统,这些系统都需要用到审批流,所以需要设计一款通用的审批模块,能够实现自动审批,流程自动流转。
表结构
FlowType (流程类型表)
Id
主键
FlowTypeId
流程类型Id
FlowTypeName
流程类型名称
AppId
应用Id,如采购申请应用、请假申请应用等
Version
版本号
IsEnable
是否是当前版本
Remark
备注
JsonData
保存节点和线条信息
**NodeInfo**(节点信息表)
Id
主键
NodeInfoId
节点信息编码(自动生成)
FlowTypeId
关联流程类型表Id
NodeName
节点名称
NodeType
节点类别,如知会,处理
ApprovalWay
审批方式(按0-角色、1-岗位、2-审批人),枚举类型
ApprovalRoleId
审批角色,关联角色编码
ApprovalPostId
审批岗位 ...
自动编码模块
编码规则模块
前言:因业务需要设计一个所有模块自动编码的功能,因为每个表的主键是Guid,表与表之间关联使用的也是主键关联,由于Guid是128位字符没有任何规律,主要是在实际使用中没有任何意义。所以将每个表的关联改为“有意义且能看懂”的一个字段,就是“编码”,采用英文字母+数字展现。
为了拓展,下面设计加入了时间戳编码选择,使得编码更灵活,满足业务需要。下面展示的是表结果以及各模块的流程。自动获取下位编码前缀代码未列出。
MapTable 表
Id
Id
TableName
中文名称
EnTableName
英文名称
Remark
备注
CodingRuleInfo表
Id
Id
MapTableId
映射表Id
CodingWay
编码方式(前缀编码、时间戳编码)
Prefix
编码前缀
CurrentValue
当前值
SerialLen
编码长度
Remark
备注
CodingPrefix
Id
Id
Length
长度
CurrentPrefixValue
当前前缀值
Remark
备注
C#基础知识一
1.default
在C#7.1中引入,表示某个类型默认值的字面量
1234567891011int a = default; ==> int a = 0;bool b = default; ==> bool b = false;public T GetDefaultValue<T>(){ return default;}// 调用时将自动匹配默认值int defaultInt = GetDefaultValue<int>(); // 等价于 0string defaultString = GetDefaultValue<string>(); // 等价于 null
2.静态导入
使用using static,如 using static NamespaceName.ClassName;
允许在不指定类名的情况下直接使用静态类的成员;
虽然静态导入可以简化代码,但它并不会对内存管理产生影响;
3.泛型约束
where T : struct -约束T为值类型
where T : class -约束T ...
C#基础知识二
21.using和try finally
都用于资源管理和释放
try-finally 比如文件.数据库连接
using语句处理实现IDisposable接口的对象
1234567891011121314FileStream fileStream = null;try{ fileStream = new FileStream("example.txt", FileMode.Open); // 使用 fileStream 进行文件操作}finally{ if (fileStream != null) { fileStream.Dispose(); }}
123456using (FileStream fileStream = new FileStream("example.txt", FileMode.Open)){ // 使用 fileStream 进行文件操作}// 在此处 fileStream 自动被释放
...



