用什么方式存流程审批的表单?求大佬赐教
现在在做 HRM 系统,使用 MySql ,当用户新增或编辑员工信息时,可以保存草稿或提交表单 。提交表单后通过流程引擎走审批流程,审批通过后向员工信息表写入。
问题是用户提交的表单该如何用数据库保存呢?
我想到了三种方式:
2.不用建单独的表,直接在员工信息表里加状态字段,用来区分审批的表单、草稿和正式的员工信息。 问题是 这么做,就把表单、草稿数据和正式的数据混在一起,以后的所有查询都要带上状态字段了, 而且员工的工作经历、附件这类表是不是也要加上状态字段?
3.直接把用户提交的表单序列化成 JSON,存到一个单独的表 text 字段里。
问题是 表单字段多次迭代后,可能以前版本的表单会反序列化失败
1
acehowxx 2022-05-15 05:30:55 +08:00 via Android 1
就用 3 啊,多次迭代改需求的问题本来就管不了啊。定好规则,改的时候只能新加,不能修改就完事了。如果非要修改,说明白之前的会无法序列化显示就行了啊。2.0 的 api 不兼容 1.0 了的情况不有的是吗。
|
2
Chad0000 2022-05-15 08:01:42 +08:00 via iPhone 1
方案 3 ,同时加上版本号,这样使用对应的版本加载就可以。
|
3
potatowish 2022-05-15 09:16:38 +08:00 via iPhone 1
实际中使用方案二比较多。
只需要在员工信息表加状态,其他附加信息表不需要单独加状态,关联主表就好了。 用来审批、保存草稿、正式的数据混在一块这个说法不妥,你就把他们都当成正式数据就好了,即使是正式数据后面也可能会更改,不需要区分,只需要关注状态。 |
4
kaf 2022-05-15 11:07:19 +08:00 1
上家做 oa 引擎,表单就是表单,不耦合流程状态,流程流转的时候关联流程版本去变更流程状态。实现上面,抽象出流程,流程流转,表单三个主要对象来操作。草稿,审批,正式数据为同一张表,如果实际有需要可以流程结束之后把正式数据保存在需要的业务表里
|
5
ezeroone OP @potatowish 感谢回答,确实不用在附加信息表单独加状态
|
6
ezeroone OP |
7
pkupyx 2022-05-15 13:53:22 +08:00
工作流引擎?看看 jbpm 或者 activiti 呗。
|
8
kaf 2022-05-16 10:03:20 +08:00
@ezeroone 其实看你业务场景,一个 oa 流程中表单对象就是他填的内容,数据库字段可能还有他的关联流程字段,起草人等字段,这个流程审批生效过后,比如你这个用户需要关联其他服务做业务,最好再创建一个表,拷贝关键的用户属性字段过去,而像一些请假条,加班申请这种,本身就是一个归档文档,有扩展业务也只是单独查文档,就没必要再单独复制
|
9
kekeones 2022-05-20 00:40:42 +08:00
直接在表单加状态,表单和流程分开
|