我目前正在开发一个项目,我必须一个接一个地调用几个管道。对于这样的管道,我必须通过管道执行活动传递一组值作为参数。我尝试了几种方法,但我很难获得正确的语法和设置。
这是我迄今为止尝试过的:
直接在Pipeline Execute活动的参数字段中传递数组,但它似乎将其解释为字符串。
["123456", "7891011"]
使用动态内容创建数组,但我不确定如何正确地将这个数组传递到另一个管道。
array("123456", "7891011")
以下是我在两种情况下遇到的错误。
Operation on target ForEachBoard failed:
The execution of template action 'MainForEachBoard' failed:
The result of the evaluation of 'foreach' expression '@pipeline().parameters.boards' is of type 'String'.
The result must be a valid array.
这是我当前设置的片段:
{
"name": "Execute Updates",
"type": "ExecutePipeline",
"dependsOn": [
{
"activity": "Execute Raw Data",
"dependencyConditions": [
"Succeeded"
]
}
],
"policy": {
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"pipeline": {
"referenceName": "Updates_StageAndLoad",
"type": "PipelineReference"
},
"waitOnCompletion": true,
"parameters": {
"boards": {
"value": "array(\"123456\", \"7891011\")",
"type": "Expression"
},
"stage_foldername": "updates"
}
}
}
有人可以帮我找出将实际数组作为参数传递的正确方法,以便它可以在子管道中使用吗?我应该对动态内容或整体设置进行哪些更改?
您正在将字符串传递给子管道参数,当您将该参数传递给 For-Each 时,这会导致上述错误。
要实现您的要求,请按照以下步骤操作。
首先,在子管道中创建一个数组参数,并且默认值中不要给出任何值。您可以根据您的要求通过表达式
@pipeline().parameters.<parameter_name>
使用此数组参数。
在父管道中,执行执行管道活动并提供子管道。将表达式
@createarray(123456,7891011)
赋予数组参数,如下所示。
此表达式创建一个整数数组,如
[123456,7891011]
。如果您想要像 ["123456", "7891011"]
这样的字符串数组,请使用表达式 @createarray('123456','7891011')
。
对于示例管道运行,我已将数组参数赋予子管道中的数组变量。我已经执行了父管道,你可以在子管道运行所需的数组。