我正在使用每个处理器。作为此过程的一部分,我需要汇总每次迭代的响应。为此,我使用以下表达式:
第1步:创建一个名称为“ aggregator”,值为值“#[[]]”的flowVar。在For-Each之前初始化 第2步:处理完成后,在每个处理器中。我使用以下表达式进行汇总:'#[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输出。我无法实现这一目标。
答案 0 :(得分:1)
您可以尝试使用拆分器聚合器。拆分器拆分消息时,它将三个新的出站变量添加到每个输出片段中。聚合器随后使用这三个变量来重组消息:
MULE_CORRELATION_GROUP_SIZE:原始邮件被分割成的片段数
MULE_CORRELATION_SEQUENCE:片段在组中的位置
MULE_CORRELATION_ID:整个组的单个ID(同一原始消息的所有输出片段共享相同的值)。
当聚合器收到单个片段时,它知道将其放入哪个组以及该组应该有多大。一旦所有片段都到达,它将作为单个消息传递完整的组。'
可以参考mule doc了解详情。
答案 1 :(得分:0)
使用当前方法,您可以在聚合后添加以下数据编织:
%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"
}
]
}