ForEach 聚合
ForEach Aggregation
我正在使用 For-Each 处理器。作为其中的一部分,我需要汇总每次迭代的响应。为此,我使用以下表达式:
第 1 步:创建名称为 'aggregator' 且值为“#[[]]”的 flowVar。这是在 For-Each 之前初始化的
Step2:处理完成后,在 For-Each Processor 中。我使用以下表达式进行聚合:'#[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"
}
]
}]
我想合并单个 "Transactions" 中的数据作为 JSON 输出。我无法做到这一点。
您可以尝试使用拆分聚合器。当拆分器拆分一条消息时,它会将三个新的出站变量添加到每个输出片段中。这三个变量稍后被聚合器用于重新组合消息:
MULE_CORRELATION_GROUP_SIZE: 原始消息被拆分成的片段数
MULE_CORRELATION_SEQUENCE: 片段在组中的位置
MULE_CORRELATION_ID:整个组的单个 ID(同一原始消息的所有输出片段共享相同的值)。
当聚合器收到单个片段时,它知道将其放入哪个组以及该组应该有多大。一旦所有片段都到达,它将整个组作为一条消息传递。'
详情可参考mule doc
例如:
按照您当前的方法,您可以在聚合后添加以下数据编织:
%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"
}
]
}
我正在使用 For-Each 处理器。作为其中的一部分,我需要汇总每次迭代的响应。为此,我使用以下表达式:
第 1 步:创建名称为 'aggregator' 且值为“#[[]]”的 flowVar。这是在 For-Each 之前初始化的 Step2:处理完成后,在 For-Each Processor 中。我使用以下表达式进行聚合:'#[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"
}
]
}]
我想合并单个 "Transactions" 中的数据作为 JSON 输出。我无法做到这一点。
您可以尝试使用拆分聚合器。当拆分器拆分一条消息时,它会将三个新的出站变量添加到每个输出片段中。这三个变量稍后被聚合器用于重新组合消息:
MULE_CORRELATION_GROUP_SIZE: 原始消息被拆分成的片段数
MULE_CORRELATION_SEQUENCE: 片段在组中的位置
MULE_CORRELATION_ID:整个组的单个 ID(同一原始消息的所有输出片段共享相同的值)。
当聚合器收到单个片段时,它知道将其放入哪个组以及该组应该有多大。一旦所有片段都到达,它将整个组作为一条消息传递。'
详情可参考mule doc
例如:
按照您当前的方法,您可以在聚合后添加以下数据编织:
%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"
}
]
}