1

我正在使用 ADFv2 传输一些数据。作为此操作的一部分,我需要一些配置值来传递到管道中。

配置值必须在运行时从 REST 服务中提取 - 而不是作为参数。

我可以使用 Web Activity 成功查询 REST 服务,并且可以在调试视图中看到输出。

现在的问题:)

如何在管道中的其他活动中使用此输出?

我的网络活动配置是这样的:

{
"name": "Web1",
"type": "WebActivity",
"policy": {
   "timeout": "7.00:00:00",
   "retry": 0,
   "retryIntervalInSeconds": 30,
   "secureOutput": false
},
"typeProperties": {
   "url": "https://myazurefunction.azurewebsites.net/api/MyFunction",
   "method": "GET",
   "headers": {
   "Content-Type": "application/json"
   }
}

我试图在 is 执行后访问输出,但它似乎是空的:

@activity('Web1').Output
@activity('Web1').output
@string(activity('Web1').Output)

他们都是空的。有什么建议么?谢谢!

4

2 回答 2

3

我设置了 ADF2 并尝试获得响应。

这对我有用:

@string(activity('Post').output)

您是否检查过调试中的输出?

这是我的输出:

{
    "test": {
        "value": 123,
        "text": abc
    },
    "concat": 123abc
}

我使用存储过程将值插入到逻辑服务器上的目标表中。

于 2018-04-06T14:56:33.790 回答
3

在 ADFv2 中,您可以使用@activity('ActivityName').output.

对于定义的 Web 活动,您的函数的响应应该是 JSON 格式,因此您可以使用响应中的属性名称来引用特定的 JSON 值。例如,您定义的名为 Web1 的 Web 活动调用一个函数,该函数返回以下响应:

{
  "foo": "bar",
  "some": "value"
}

foo要在后续 ADF 活动中使用 的值,您可以参考@activity('Web1').output.foo. ADFv2 提供了多种类型转换功能,如果您需要将返回值转换为另一种类型。

如果您的函数返回空 JSON 响应,您可能需要使用 Postman 或其他工具检查函数的响应,以确保您返回格式正确的响应,并且您的函数没有因其他原因而失败。

在您的 Azure 函数代码中,您应该返回一个 JSON 对象以及一个成功代码,类似于return req.CreateResponse(HttpStatusCode.OK, json);.

另请注意,如果您引用响应的属性但它不存在,ADF 将在此时失败,因此您可以使用 If Condition 活动检查所需的值以更好地处理 ADFv2 中的故障。

于 2018-10-24T14:32:41.950 回答