一劳永逸的流程集成方案

外部系统需要对接流程引擎,多个表单总要对接多次,这个重复的工作量很多,这样会给开发带来很不方便的工作?
有没有办法流程只集成一次就可以呢?
或者有些人说,我用表单引擎就可以了。表单引擎确实是好东西,但万一没有呢,而且表单引擎对于页面有一定的局限性,且扩展,管理不方便。
那怎么处理?
回答之前先说明两件事情:

  1. 流程审批过程中的表单数据一般用于审批流程,只有流程结束后,表单数据才真正落地。所以一般流程中的表单数据,业务是不在乎的。
  2. 流程中的表单数据是变化的,不可能每个表单字段都映射到表的每一个字段中,所以从考虑通用性方案,全部表单数据都以大字段(text)存储.
    到这里,方案就很清晰了,流程业务表单的数据,我用一个大字段存储,无论他有多少个字段,我只放在一个text字段里。
    数据库表设计如下:
字段 类型 描述
id varchar(36) 主键
instance_data mediumtext 表单内容
status varchar(2) 表单状态
form_url varchar(200) 表单URL
form_id varchar(200) 表单ID,用来区分哪个表单,如加班及请假等
attachment_id varchar(20) 附件ID

后面就是以流程引将将表单的内容存储过来即好。
也有人问,我还是想将大字段的内容存储进对应的表,怎么办?
其实也有办法,在保存表单字段时,将字段内容广播出来即可
示例代码如下:

   @Override
    @Transactional
    public OaWorkflowCommonInstance insert(OaWorkflowCommonInstance record) {
        this.mapper.insert(record);
        SpringContextUtils.getApplicationContext().publishEvent(new OaWorkflowCommonInstanceEvent(record, MethodType.ADD, record.getId()));
        return record;
    }


    @Override
    @Transactional
    public Integer update(OaWorkflowCommonInstance record) {
        Integer result= this.mapper.updateById(record);
        SpringContextUtils.getApplicationContext().publishEvent(new OaWorkflowCommonInstanceEvent(record, MethodType.UPDATE, record.getId()));
        return result;
    }

这里插入更新时,都将表单数据广播出来,后面只要自己捕捉这个事件就可以了
之后就自己写页面就可以了,后端基本上不用开发了。
我用自己做的流程引擎写了两个示例,给大家示例一下,都只要写页面就可以了

  • 请假流程:


    image.png
  • 加班流程:


    image.png

    大家做流程集成时,参考这写方案就可以了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Django 准备 “虚拟环境为什么需要虚拟环境:到目前位置,我们所有的第三方包安装都是直接通过 pip inst...
    33jubi阅读 1,349评论 0 5
  • R的三大绘图系统 基本绘图系统 始于空白帆布 图+修饰/添加 = 执行函数 适合2D绘图 graphics包,pl...
    森尼啊阅读 506评论 0 0
  • 最近朋友圈被一张图片刷屏了,图片中是一名小学生,被称作“冰花”男孩。天气很冷,孩子走了一个多小时才到学校,头发都被...
    拜泉0690张雪微阅读 230评论 0 7
  • 新学期,新气象。回到学校,感觉一切都欣欣向荣,树木抽出新芽,迎春花带头开放,孩子们朝气蓬勃,教师们精神抖擞...
    兰泽_ed50阅读 491评论 3 3
  • 俗话说:千里之堤溃于蚁穴。就是说注意小动作才不会造成大损伤。 提菜回家有讲究 当买的菜数量比较多的时候,不要懒省事...
    善德健康阅读 634评论 0 0