【问题标题】:ForEach AggregationForEach 聚合
【发布时间】:2018-07-27 07:19:44
【问题描述】:

我正在使用 For-Each 处理器。作为其中的一部分,我需要汇总每次迭代的响应。为此,我使用以下表达式:

第 1 步:创建一个名为“aggregator”且值为“#[[]]”的 flowVar。这是在 For-Each 之前初始化的 Step2:处理完成后,在 For-Each 处理器中。我使用以下表达式进行聚合:'#[flowVars.aggregation.add(message.payload)]'。

我在每次迭代中得到的有效载荷是

[{
"Transactions": [
  {
    "Id": "",
    "CompanyId": "123",
    "ContractId": "777"
  },
  {
    "Id": "",
    "CompanyId": "123",
    "ContractId": "777"
  }
]

聚合的结果是:

[{  
"Transactions": [
{
  "Id": "",
  "CompanyId": "123",
  "ContractId": "777"
},
{
  "Id": "",
  "CompanyId": "123",
  "ContractId": "777"
}
]
}, {
"Transactions": [
{
  "Id": "",
  "CompanyId": "555",
  "ContractId": "2345"
},
{
  "Id": "",
  "CompanyId": "7777",
  "ContractId": "2389"
}
  ]
}]

我想将单个“事务”中的数据合并为 JSON 输出。我无法做到这一点。

【问题讨论】:

    标签: foreach mule mule-esb


    【解决方案1】:

    您可以尝试使用拆分器聚合器。当拆分器拆分消息时,它会将三个新的出站变量添加到每个输出片段中。聚合器稍后会使用这三个变量来重组消息:

    MULE_CORRELATION_GROUP_SIZE:原始消息被拆分成的片段数

    MULE_CORRELATION_SEQUENCE:片段在组内的位置

    MULE_CORRELATION_ID:整个组的单个 ID(同一原始消息的所有输出片段共享相同的值)。

    当聚合器接收到单个片段时,它知道将其放入哪个组以及该组应该有多大。一旦所有片段都到达,它将作为单个消息传递整个组。'

    详情可参考mule doc

    例如:

    【讨论】:

    • 这与使用 For-Each 的情况无关。
    【解决方案2】:

    按照您当前的方法,您可以在聚合后添加以下数据编织:

    %dw 1.0
    %output application/json
    ---
    {
        Transactions: flatten payload.Transactions
    }
    

    如果此转换的输入是您在问题中描述的聚合的输出,则输出为:

    {
      "Transactions": [
        {
          "Id": "",
          "CompanyId": "123",
          "ContractId": "777"
        },
        {
          "Id": "",
          "CompanyId": "123",
          "ContractId": "777"
        },
        {
          "Id": "",
          "CompanyId": "555",
          "ContractId": "2345"
        },
        {
          "Id": "",
          "CompanyId": "7777",
          "ContractId": "2389"
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 2017-09-24
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多