应用场景
一般来说,轻流的表单系统只支持静态数据存储,也就是说数据提交后,除非额外制作一个辅助应用来通过Q-Robot更新,否则字段显示内容是无法轻易变化的!但是所有的字段中有一个例外,那就是引用字段。
我们的常规习惯来说,一般引用字段经常被用来做为快速选择目标数据并在选择数据后快速填充其它配套字段的小工具,但是换一个思路,如果引用字段做为常规字段使用呢?那么理论上我们可以得到一个耦合数据关联字段。
当然应用场景也会存在一定的局限性,只能针对引用所关联的目标数据的字段的变化,自身无法执行复杂数据计算,并且引用字段由于自身的实际数据内容是目标数据ID,所以引用做为字段内容显示的时候,也是无法通过Q-Robot等手段直接更新到其它字段内存储的,除非更新目标也是引用数据,并且做了相同的目标数据及显示字段设定。
接下来我们就以一个非常简易的场景来进行举例及演示(订单当中所关联的客户档案的数据被修改的情况下,订单当中在不使用Q-Robot的情况下直接同步客户档案最新的客户手机号)
注:本例中涉及到引用字段设定「关联已有数据」只有「新版数据关联引擎」才支持
配置方式
首先我们建立三个引用字段,分别是客户编号、客户姓名、客户电话,其中编号利用系统编号字段。
客户编号做为主选择字段在「添加流程」当中的「申请人节点」开放「可编辑」
客户姓名和客户电话做为被填充引用内容在「添加流程」当中的「申请人节点」设置为「仅可见」(不可直接编辑)
三个引用字段先选择相同的「数据来源」,本例中是客户管理,根据字段需要分别设置显示字段,除了客户编号做为主要操作字段开放全部字段显示权限以外,另外两个字段不需要特别设置权限。
上述设定完成之后先保存,否则无法进行下一步操作
接下来,由于引用字段互相直接无法直接进行填充、关联等动作,所以需要增加一个文本字段用于互相之间做数据关联识别,本例中我们建立一个叫客户编号的文本字段,并设置为「在表单中隐藏」。
这个文本字段将做为未来所有客户数据动态关联的目标,所以建议使用唯一值的内容(例如系统编号),同时可能有朋友会疑问,为什么客户编号不直接用数据关联做选择,要多此一举呢,这里面涉及到一个操作体验的问题,单纯一个编号不利于使用者识别要选择的数据,引用因为可以展示更多目标字段内容,更适合做为选择数据使用。
接下来就将客户编号(引用字段)设置填充规则,将客户编号填充至刚刚添加的客户编号(文本字段)当中。
最后一步,客户姓名和客户电话两个字段分别设置「默认内容」为「关联已有数据」,其中目标应用选择客户管理,目标字段选择「数据ID」,「默认内容」的「筛选数据」设置筛选条件为编号等于客户编号(文本字段)。
之所以选择数据ID做为目标字段,是因为引用字段本身是不携带内容的,数据ID就是引用字段携带的目标数据的ID,我们看到的引用字段所显示的内容就是引用字段设置的显示字段,但是在数据的传递过程当中,引用字段只会传递数据ID。
到这里,相信你已经发现了这个设置的特点,就是通过文本存储下目标数据的唯一识别信息,例如编号,然后这边的引用字段通过关联已有数据的方式直接定位到目标数据ID,获取到目标的引用数据,在通过引用字段自身的显示字段设定来显示和呈现出来。
到这里设置已经完成。我们可以添加一条客户数据,在添加一条订单数据,并选择好客户,然后在尝试直接用管理员权限或其它方式修改客户信息,修改完成后,在回到订单里面查看就能发现,订单的客户信息随着客户信息被修改,也动态的产生了变化
总结
总体来说,这个方案能适用于很多场景,但是还存在着一定的缺陷,例如引用字段在列表当中是不直接显示字段内容的,再例如,如果引用字段被做为主要数据展示内容的话,在通过Q-Robot等方式传递数据的时候都只能传递数据ID,要区分清楚到底传递的是哪个应用的数据ID,并且在传递目标当中需要做更多配套设定的话需要通过数据ID来识别和关联。无法尽善尽美,但是针对一些需要被引用,但是又经常要通过非Q-Robot流程进行修改的原始数据,引用字段相当于提供了一个不错的动态数据解决方案。
结尾彩蛋:
子表中也同样可以用引用字段实现类似或相同的操作,尤其尤其使用公有云的朋友,很多经历过数据量过大,数据关联字段应用过多导致的发起新的数据时造成页面卡顿的情况,用这里的方法加上引用字段的填充功能,可以有效的减少字段对数据关联的依赖,降低数据压力。