我确信我不是第一个尝试这个但却找不到一篇关于它的人。
我试图将两个工作流嵌套在一个工作流中,这样两个工作流并行运行,我得到了10个流程。以下是我首先尝试的内容:
Workflow a {
param(
[parameter()]alist
)
sequence
{
$WORKFLOW:aOutput = @()
foreach ($aObject in $aList)
{
$WORKFLOW:aOutput += do_stuff
}
return $WORKFLOW:aOutput
}
)
}
Workflow b {
param(
[parameter()]blist
)
sequence
{
$WORKFLOW:bOutput = @()
foreach ($bObject in $bList)
{
$WORKFLOW:bOutput += do_stuff
}
return $WORKFLOW:bOutput
}
)
}
Workflow nest
{
param(
[parameter()]alist,
[parameter()]blist
)
parallel
{
$aOutput = b -alist alist
$bOutput = b -blist blist
}
return ($aOutput,$bOutput)
}
这一切都很好但只能旋转5个并行进程而不是10个。所以我尝试了这个:
Workflow nest
{
param(
[parameter()]alist,
[parameter()]blist
)
parallel
{
$aOutput = inlinescript
{
Workflow a {
param(
[parameter()]alist
)
sequence
{
$WORKFLOW:aOutput = @()
foreach ($aObject in $aList)
{
$WORKFLOW:aOutput += do_stuff
}
return $WORKFLOW:aOutput
}
}
$bOutput = inlinescript
{
Workflow b {
param(
[parameter()]blist
)
sequence
{
$WORKFLOW:bOutput = @()
foreach ($bObject in $bList)
{
$WORKFLOW:bOutput += do_stuff
}
return $WORKFLOW:bOutput
}
)
}
b -blist blist
}
}
return ($aOutput,$bOutput)
}
我在这里遇到的问题是在inlinescript块中使用范围WORKFLOW会引发错误。该错误表示使用范围USING而不是当我切换到关于在foreach -parallel块内重新定义变量时出现错误。
我正在寻找的是这可能,如果是这样,需要使用什么范围来嵌套工作流程?或者是否有另一种方法可以让工作流同时运行,每个进程有5个进程?
为伪代码道歉,但实际代码包含我无法分享的信息。
答案 0 :(得分:2)
我设法弄清楚了,并弄清楚使用USING范围的位置。
Workflow nest
{
param(
[parameter()]alist,
[parameter()]blist
)
parallel
{
$aOutput = inlinescript
{
Workflow a {
param(
[parameter()]alist
)
sequence
{
$aOutput = foreach ($aObject in $aList)
{
do_stuff
}
return aOutput
}
a -alist $USING:alist
}
$bOutput = inlinescript
{
Workflow b {
param(
[parameter()]blist
)
sequence
{
$bOutput = foreach ($bObject in $bList)
{
do_stuff
}
return $bOutput
}
)
}
b -blist $USING:blist
}
}
return ($aOutput,$bOutput)
}
基本上我删除了在foreach循环中添加的数组定义,并将其设置为等于foreach循环。这完全取消了我对范围的需求。我必须将传递的a / b列表变量从嵌套工作流设置为带有USING范围的inlinescript。