Flowable6.8-表单信息的存储 (表单的数据回显在下篇讲述)

1.为何使用表单?

我的简单理解为表单就是将简单的业务存储在整个流程中,随去随用随改。并且可以配合条件表达式使用,也可以单纯作为用户信息的流程所展示。

2.表单的语言

在我的项目中,表单是由前端语言决定的,分为Vue和React两个版本。当前项目使用的技术是React。(如果需要Vue的表单、相关处理工具类可以私信我)

3.表单数据的存储

3.1.设计表单

在一个工作流中,我们首先需要经历【设计流程---->部署流程----->新建流程】这三个步骤

表单在设计流程的时候由设计者选择表单(在我当前的项目中,流程启动节点必须绑定表单)

项目中同时提供一个表单设计模块供用户自定义表单,其中包含表单样式如:长宽高、图标、是否禁用、隐藏、默认值等操作

其中重要一点则是表单的每一个元素都有一个单独的元素key,该key在流程启动的时候存储至流程中,所以我们可以在流程中任何地方获取到这个表单中填写的数据.

在部署流程的时候,将流程选择的表单新增添加至表单流程关联表,并且将表单的信息也存储下来,这样如果后期表单的样式变了不会影响之前的表单

3.2发起流程时表单的作用

在新建流程的时候,将我们设计的表单展示出来供用户填写相关信息

在上述中我说过,一个表单的每一个元素都有一个单独的key,用户填写的数据则是value。

所以表单实际上就是一个Map<key,value>,传值的时候后端的的确是用一个map来接收

提交后前端传值

这个审核人填写的1,13代表的是用户的userId,此处前端还没写好所以有点简陋,我们不要在意这么多

后端接收参数

所以在流程新建的时候,我们获取到了表单的信息后直接存储至当前流程中。

runtimeService.startProcessInstanceById(procDef.getId(), variables);
调用该API即可发起流程,当然发起流程的方式还有很多,比如用流程key启动runtimeService.startProcessInstanceByKey()

这个Map就会被交给框架处理,用来保存变量,当前这个map的作用不仅是用来存储表单的值,也可以用来替换BPMN中的占位符

我在表单中设计了一个审核人的元素,该元素的key和这个bpmn中的占位符是一致的。所以在流程启动的时候可以直接进行替换,将此处的用户替换为我选择的审核人userId。

我们来看一下bpmn对应的xml文件

所以表单的用户不仅仅可以让流程中用户展示的信息好看,更重要的是可以使流程更加灵活,还可以配合条件表达式使用(上篇我有讲述过地址为:https://blog.csdn.net/Russell_b/article/details/140120998?spm=1001.2014.3001.5501

4.流程启动后表单及相关数据存储

流程启动后,表单和相关的数据就存储至act_ru_variable表中

可以看到其中有TYPE_和NAME_字段,该字段分别为数据类型和数据名称。

下方的TEXT_则是数据值。

我们在当前流程中,只需要根据流程业务实例ID就可以获取到当前流程中所包含的所有变量,也就是根据PROC_INST_ID_。

如果流程中使用了监听器,在监听器实现 ExecutionListener接口 后重写notify方法后,该方法的参数也可以获取。

该参数提供了许多API

获取当前流程所有的变量
Map<String, Object> variables = execution.getVariables();

获取指定变量的值
execution.getVariable(String key);

获取当前流程业务实例ID
String processInstanceId = execution.getProcessInstanceId();

设置流程变量的值(记住流程中变量就是一个map,map的特性需要知道,考验基本功的时候到了)
execution.setVariable(String key, OBject value);

下篇讲述表单的数据回显和历史流程的页面展示,如有需要请私信(无偿)

前端暂时还没写好,简略看下即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值