向大家咨询一个流程引擎表单存储的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ezeroone
V2EX    程序员

向大家咨询一个流程引擎表单存储的问题

  •  
  •   ezeroone 2022-05-15 00:33:55 +08:00 2139 次点击
    这是一个创建于 1304 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用什么方式存流程审批的表单?求大佬赐教

    现在在做 HRM 系统,使用 MySql ,当用户新增或编辑员工信息时,可以保存草稿或提交表单 。提交表单后通过流程引擎走审批流程,审批通过后向员工信息表写入。

    问题是用户提交的表单该如何用数据库保存呢?

    我想到了三种方式:

    1. 再建一套和员工信息表字段一样的表,用来存用户提交的表单和草稿。 问题是 员工信息有很多例如工作经历、附件这种一对多的关系,需要单独建表,而且 HRM 系统以后也会涉及很多审批流程,如果全都单独建一套表用来存表单,感觉维护起来会比较繁琐

    2.不用建单独的表,直接在员工信息表里加状态字段,用来区分审批的表单、草稿和正式的员工信息。 问题是 这么做,就把表单、草稿数据和正式的数据混在一起,以后的所有查询都要带上状态字段了, 而且员工的工作经历、附件这类表是不是也要加上状态字段?

    3.直接把用户提交的表单序列化成 JSON,存到一个单独的表 text 字段里。
    问题是 表单字段多次迭代后,可能以前版本的表单会反序列化失败

    9 条回复    2022-05-20 00:40:42 +08:00
    acehowxx
        1
    acehowxx  
       2022-05-15 05:30:55 +08:00 via Android   1
    就用 3 啊,多次迭代改需求的问题本来就管不了啊。定好规则,改的时候只能新加,不能修改就完事了。如果非要修改,说明白之前的会无法序列化显示就行了啊。2.0 的 api 不兼容 1.0 了的情况不有的是吗。
    ktqFDx9m2Bvfq3y4
        2
    ktqFDx9m2Bvfq3y4  
       2022-05-15 08:01:42 +08:00 via iPhone   1
    方案 3 ,同时加上版本号,这样使用对应的版本加载就可以。
    potatowish
        3
    potatowish  
       2022-05-15 09:16:38 +08:00 via iPhone   1
    实际中使用方案二比较多。
    只需要在员工信息表加状态,其他附加信息表不需要单独加状态,关联主表就好了。
    用来审批、保存草稿、正式的数据混在一块这个说法不妥,你就把他们都当成正式数据就好了,即使是正式数据后面也可能会更改,不需要区分,只需要关注状态。
    kaf
        4
    kaf  
       2022-05-15 11:07:19 +08:00   1
    上家做 oa 引擎,表单就是表单,不耦合流程状态,流程流转的时候关联流程版本去变更流程状态。实现上面,抽象出流程,流程流转,表单三个主要对象来操作。草稿,审批,正式数据为同一张表,如果实际有需要可以流程结束之后把正式数据保存在需要的业务表里
    ezeroone
        5
    ezeroone  
    OP
       2022-05-15 12:28:00 +08:00
    @potatowish 感谢回答,确实不用在附加信息表单独加状态
    ezeroone
        6
    ezeroone  
    OP
       2022-05-15 12:41:17 +08:00
    @kaf 感谢回答,我理解的您提到的“正式数据”指的是审批通过之后的表单,业务表指的是我举例中的员工信息表?所以是方案一?

    有些审批流程,例如发起调岗、加工资这种要涉及多张业务表,确实适合采用方案一
    pkupyx
        7
    pkupyx  
       2022-05-15 13:53:22 +08:00
    工作流引擎?看看 jbpm 或者 activiti 呗。
    kaf
        8
    kaf  
       2022-05-16 10:03:20 +08:00
    @ezeroone 其实看你业务场景,一个 oa 流程中表单对象就是他填的内容,数据库字段可能还有他的关联流程字段,起草人等字段,这个流程审批生效过后,比如你这个用户需要关联其他服务做业务,最好再创建一个表,拷贝关键的用户属性字段过去,而像一些请假条,加班申请这种,本身就是一个归档文档,有扩展业务也只是单独查文档,就没必要再单独复制
    kekeones
        9
    kekeones  
       2022-05-20 00:40:42 +08:00
    直接在表单加状态,表单和流程分开
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1043 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 23:11 PVG 07:11 LAX 15:11 JFK 18:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86