钉钉配置化流程调研

钉钉配置化流程调研

配置化流程,实际上就是根据配置好的数据,动态创建表单。

流程上大致可以分为:

  1. 图形化的表单数据配置和创建
  2. 表单数据存储和展示
  3. 通过数据创建表单

需要实现两个主要功能:

  1. 图形化表单编辑器
  2. 表单生成器

思路

钉钉有审核流程的设计,如果不考虑审核流程的话,和 AIoT 的自定义字段功能相差不多。

图形化表单编辑器

这块实现起来大致分为三个部分:

  1. 控件预定义
  2. 控件拖拽
  3. 控件编辑

控件预定义

对于常用的输入控件的具象化。

配置型表单首要解决的问题就是控件差异性和控件数据处理。

对于常用的控件,例如定位、身份证输入框和部门选择之类的,可以先定义好样式和数据的配置,供配置时直接选用。

另外,对于操作复杂、关联性强的控件,可以预定义一套配置,作为套件。

控件拖拽

图形化配置关键功能,有已实现的成熟开源库,效果如下:

拖拽效果

控件编辑

对于控件各种配置的预置。

简单点的有 placeholder、label 之类的设置,复杂点的有级联选择器的数据、日期控件的 format 等。

也可以在这一步预置控件的值。

表单生成器

选定 UI 框架,再拿到设定好的配置,就可以生成表单了,这一步最简单,不做赘述。

复杂的地方在于配置的定义和控件字段。

配置定义:比较好理解,就是对于控件的一些数据定义下字段,比如选择器的 options 列表,默认选择的项、标题、宽度之类的。控件种类越多,需要定义的字段也就越多。

控件字段:因为可能存在相同类型的重复控件,所以控件的字段名要用一个不重复的代号表示。这样在往数据库里存的时候就会有点小问题。一是不知道这个字段内容的具体意义,二是字段和数据库字段肯定对不上,只能转为 string json 存在记录某个字段里。只有配合表单配置这个数据才有意义。

实现

这样一个项目复杂度不低,好在已经有不少开源库实现了类似功能。

form-generator

Element UI表单设计及代码生成器

image.png

可以满足配置化表单的基本需求。

不过不支持 antd,没有审核流程。

approvalFlow

基于form-generator,仿钉钉审批流程创建(表单创建/流程节点可视化配置/必填条件及校验)

image.png

图形化表单编辑器表单生成器都有,完全符合需求,MIT 开源协议,基于 form-generator,同样不支持 antd,可以基于这个项目做些个性化开发。

作者

朷北

发布于

2020-07-30

更新于

2021-04-15

许可协议

评论