前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一劳永逸的流程集成方案

一劳永逸的流程集成方案

作者头像
星痕
发布2019-10-14 15:31:31
4250
发布2019-10-14 15:31:31
举报
文章被收录于专栏:JAVA后端开发JAVA后端开发

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

  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 大家做流程集成时,参考这写方案就可以了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.10.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档