Automic工作流中作业间通信及工作流名称变量获取方法问询
一、工作流内作业间的通信方式
在Automic里,工作流中的作业之间通信有几种实用的方式,我给你梳理清楚:
Automic变量传递:
你可以在工作流层级定义变量,或者单个作业内定义变量,然后通过&VARIABLENAME#的格式在其他作业中引用。工作流级别的变量对所有子作业可见;如果是作业级变量,可通过调用作业时的参数映射传递,或者用SET_VAR操作在工作流内主动传递值。调用时参数映射:
在工作流中配置作业调用节点时,直接在「Parameters」标签页里设置参数映射,把作业A的输出变量作为作业B的输入参数,实现精准的数据传递。Script对象中转:
对于复杂的通信场景,可以用Script对象做中间层——作业A把数据写入Script的变量,作业B再从Script中读取。这种方式适合需要加逻辑判断的传递场景。文件共享:
如果要传递大量数据,让作业A生成临时文件,作业B读取该文件即可。注意要确保文件路径的权限和唯一性,避免并发运行时的冲突。
二、运行时获取工作流名称(工作流作用域内变量)
要在工作流作用域内获取当前运行的工作流名称,且不使用全局变量,按以下步骤操作:
在工作流中定义局部变量,比如命名为
&WF_NAME#在工作流的「Pre-Process」标签页添加Script代码,利用Automic内置系统变量获取工作流名称:
SET_VAR &WF_NAME#, &$NAME#这里的
&$NAME#是Automic内置变量,在工作流的Pre-Process上下文里,它会返回当前工作流的名称。这段代码执行后,&WF_NAME#就属于工作流作用域,所有子作业都能引用,且不会影响全局变量。在作业中引用变量写入日志:
比如在作业的日志输出逻辑里加入:PRINT "当前运行的工作流名称:&WF_NAME#"这样作业运行时就会把工作流名称写入日志了。
注意:&$NAME#的返回值依赖上下文——在作业里直接用会返回作业名称,只有在工作流的Pre-Process或Post-Process中使用,才会返回工作流名称,所以一定要在工作流层面配置这个变量。
内容的提问来源于stack exchange,提问作者Brajesh kumar

