根据字段值自动关联子表

一、场景需求

搭建应用中,会遇到这样的情况。有一个很长的文本字符串,希望能分析这个长文本,解析出其中的各个元素,并更新一个关联的子表。

例如,学校在整理课程表。其中有个字段【教学班组成】,是从排课Excel表中导入的,其中包括了参加这堂课的班级的编号,类似这样的数据:

080201;080202

希望将代表每个班级的编号分割出来后,更新到关联子表【教学班】中。形成下面的结果。

img

二、搭建思路

  1. 通过自定义按钮触发,或者Excel导入触发工作流;
  2. 把控件中的长字段取出,根据构成特征进行拆分,将字符串类型的教学班,转换成数组类型的【教学班】。这里需要使用循环条件节点和公式SPLIT
  3. 得到【教学班】数组后,遍历数组,检查每条教学班的值,是不是在【教学班表】中已经存证,如果已存在,将改教学班的值更新到关联子表中,如果不存在,需要在【教学班表】中先创建对应记录,然后再更新关联子表。

三、配置过程

这里假设,构建了2个表单。【教学班组】和【班级号信息】。【教学班组】用于保存教学班名称和教学班的对应信息。【班级号信息】维护班级号信息,是【教学班组】的子表。

【教学班组】表单中,教学班信息都已经填入了某个文本控件,可以通过自定义控件来触发解析,和更新关联关系的工作流。

img img

按钮触发器后面,添加运算节点,按照分号隔离这个特征将每个【班号】都提取出来。同时将文本字符串形态的【班号】转换成数组形态的【班号】构成【教学班组成(文本转数组)】。

img img

添加获取子表节点,将【教学班组成(文本转数组)】中的数据取出。

img

遍历每条取出的【班级号】。

img

这里需要再增加一个运算节点因为前序的运算节点计算的结果是个Object,后续节点并不知道内部的数据结构,因此要用这个运算节点解析出内部数据构成。

img img

判定取出的【班级号】是否已经存在于【班级号信息】表中。如果已经存证,更新教学班组表。

img

更新时,需要确定更新哪一条【教学班】。即当【教学班】表中的记录编号id等于按钮触发器中对应的数据记录id时,需要更新这条【教学班】表中的记录。更新的字段为【[教学班]】。从图上可以看到【[教学班]】是一个数组(被[]包裹)。同时,勾选是否追加选项,因为【[教学班]】可能不止一条,后面需要追加数据。

[!DANGER|style:flat] 更新的是关联子表信息,所以关联的数据,一定是要从子表中选择出来的条记录。因此,【[教学班]】设置为的是查班级号这个节点查出的数据集中的数据,不是教学班号这个运算节点中的数据集。

img

当查找了【班级号信息】表,无数据时,表明自定义按钮关联的数据记录中的【班级号】是新记录。需要新增后,才能被关联到【教学班组】中去。

img

新增【班号】数据后,将该记录更新到对应(【教学班组】表中的记录的【教学班名词】字段值,等于按钮触发器节点关联的数据记录的【教学班名词】字段值)的【教学班组】记录中去。

img

四、案例演示应用

《根据字段值自动关联子表》

results matching ""

    No results matching ""