Could you translate your solution in english ?

From: Mad <[email protected]>
Reply-To: "[email protected]" <[email protected]>
Date: Wednesday, July 1, 2020 at 13:03
To: dev <[email protected]>
Subject: 任务结果/变量传递方案讨论


技术方案:

核心:

通过动态修改若干个全局变量的值,来进行任务节点之间的“任务结果/变量传递”;

原因:

1、全局变量对任务流程中的所有任务节点可见。

2、任务实例执行流程为串行,则任务节点之间的任务结果和变量的传递不会同时发生,可以很容易地和已分配的有限个全局变量构成映射关系。

具体实现:

1、顺序遍历一次任务节点,并初始化全局参数个数 n=0,当遍历到传递参数的上游节点,则 n+=需要传递参数的个数,遍历到传递参数的下游节点,则 n 
-=需要传递参数的个数,记录该过程中 n 的最大值,令 N=n_max。创建 N 
个全局变量,全局变量的命名可以为保留字段,也可以为随机字符串,例如{"G1","G2","G3",…,"GN"},并添加到集合U中。

2、串行执行任务节点task_A,并找到需要传递参数的下游任务节点task_B,若task_A不需要传递参数,则跳过以下步骤。

3、将task_B中所需接收的M个参数与集合U中取出的M个全局变量构成映射关系{"Param1":"Gu+1", "Param2":"Gu+2", 
"Param3":"Gu+3", …., "ParamM":"Gu+M"},M<=N;

4、task_A执行完后,将参数根据步骤3中构建的映射关系同步至全局变量。

6、task_B执行之前,将全局变量根据步骤3中构建的映射关系同步至参数。

7、task_B执行完后,将参数对应全局变量重新添加回集合U中。

例子:

[cid:[email protected]]

执行流程如上图所示

[cid:[email protected]]

参数传递过程如上图所示

A节点传递a,b两个参数至C节点;

B节点传递c,d,e三个参数至C节点;

1、N=5,U={G1,G2,G3,G4,G5};

2、执行A任务节点,找到C节点为下游;

3、得到映射{a:G1, b:G2};剩余U={G3,G4,G5};

4、A执行完后,同步a、b至G1、G2;

5、执行B任务节点,找到C节点为下游;

6、得到映射{c:G3, d:G4, e:G5};剩余U={};

7、B执行完后,同步c、d、e至G3、G4、G5;

8、执行C任务节点,同步G1、G2、G3、G4、G5至a、b、c、d、e;U={G1,G2,G3,G4,G5};


Reply via email to