数据专家提供了一个个可以组装的微件,如同乐高积木一样,普通科研人员可将它们组成自己需要的工具。在实际生产中,数据处理过程并不完全是单一方向,有时需要同时修改多个地方的参数,有时等待条件满足之后再运行,有时则需要重复运行多次。在这些非线性的应用场景中,就需要使用到协作组的节点。这个组的节点,主要功能在于控制数据流向,相对比较费脑细胞,下面就由我带着大家了解一下各个节点的原理吧。
1、共用参数 [ 流程变量 ]
一个常见需求,在数据处理时,如何让各个部分查询参数保持呢?或是把一个分支的运行结果,应用到其它的分支中呢?在这些数据共享的场景中,我们常见到流程变量忙碌的身影。
流程变量,主要用于数据共享,它存放在流程的公共区域中,流程中的每个节点都可以使用它。
使用时,您可以在流程属性编辑器中定义流程变量;通过更新变量节点,在流程运行中修改某个流程变量的值;或是作为外部传入的参数与其它系统协同。
2、等条件满足了,再运行 [ 等待运行 ]
流程有时需要在特定的数据条件才能运行,比如某些文件是否存在,数据量必须大于多少。针对这一场景,数据专家中量身定制了等待运行节点。
正如上图所示,当流程运行至等待运行节点时,系统会去判断是否满足特定的条件。如果条件尚未满足,它会不断去尝试运行前面的分支流程,直到条件满足后,再继续向后运行。
3、超级备胎 [ 条件分支流程 ]
当某个数据源没有数据时,用另一个数据源的来代替,寻找一个备用数据源,从而使得数据流程能够保持正常运行。这时就用到了条件分支流程。
条件分支流程,是界于IF设置节点与协作节点之间的一段流程。可以与IF设置点配合构建条件分支流程的有文件收集器、顺序运行器和条件运行器三个节点。
需要说明的是,在协用节点和IF设置节点中,要同时设置才能构建条件分支流程。一是协用节点中,定义是否参与协作;二是在IF设置节点中,定义分支流程在什么条件下运行。
正如上图所示,我们也可以这样理解,条件分支的数据运行过程,当数据流走到协作运行节点时,它是取哪一个分支持节点的数据呢?是A线的还是B线的呢?这时候,它再问相应的IF设置节点,是否可以使用相应分支的数据。
4、重复再重复 [ 循环分支流程 ]
在流程中,常见到几个分支流程相似的或是相近的现象。我们通常需要进行一定的数据预处理工作,再进行分组进行数据成图,比如说,绘制每个省的贫困人口分布图。这时,就用到循环分支流程。
构造循环分支流程与条件分支类似,它需要ForEach节点与协作节点配合实现。
运行时,数据流走到ForEach节点时,会根据指定的字段,将数据流划分成若干个小的数据流,再依次分别向后推送。这里协作节点,起一个阻档作用,它会收集每一组数据运行的结果,把它们以一定方式组合起来向后流转,如文件收集器会将每一组运行结果变成文件流。
5、哥俩好 [ 内部分支 ]
数据专家的应用远超出了我们想向,曾经见过一个用了10000多个节点来数据处理流程,这也是数据专家的魅力所在,它能挖掘出科研人员的潜能,发挥出研究者自己的想向力与创造力,去解决他们遇到的问题。
好像废话有点多了~。言归正传,大的数据流程,通常会涉及多个分支,多个分支流之间,数据之间常具有依赖关系,通常可以用链接将它们串连起来。然而随着流程体量的增加,超级节点的大量使用,直接链接似乎不太可能了。
怎么办呢?这时候就可以使用关联数据源节点,它在两个分支流程之间建立起一个数据共用的通道,把一个分支流程数据直接拉入另一个分支流程之中。也可以理解为,它是源节点的分身,共用源节点的数据。
5、超级哥们 [ 外部分支 ]
如果说关联数据源是同一流程文件中的哥们友谊,那么流程穿越节点,则跨越多个文件之间的了。它将另一流程文件中的节点数据拉到当前流程之中。正如它的图标一样,犹如外星人穿越了一般。
6、同舟共济 [ 从属流程]
从上文的表述可以看出,前面节点之间的协作,都是节点与节点之间直接的联系。
先导流程提供一种松散的间接的协作方式,在当前流程运行的同时,运行其它的一些流程。从数据专家系统的层面上看,这些流程之间可以没有必然的关联关系,但从业务协作的角度看,则可以用来建立起多流程协作的场景。
7、路在何方? [ 流程调度]
当前流程运行结果后,想要运行别流程怎么办呢?站在协作运行节点的角度,前面的几个节点,多是协作节点与其之前的节点建立的协作关系。流程调度是个例外,它向向后进行协作。当流程运行到流程调度节点,会根据指定的条件,开启相应流程,并运行指定的节点。
协作运行组节点,它们使得节点之间、分支流程之间、流程之间的合作成为了可能,也是相对比较复杂的操作过程,希望本文能够起到抛砖引玉的作用。