Я новичок в WSO2 Enterprise Integrator.
Мне тяжело комбинировать эти два сообщения с помощью совокупного посредника.
Я поместил свое первое сообщение в свойстве, чтобы я мог получить доступ к отдельным значениям (есть ли другой способ сделать это?)
Требуемый вывод в формате json.(Я пробовал for each
, но он только зацикливается в сообщениях цикла 2 сообщения.)
Входное сообщение 1:
{
"customerId": "ABC123",
"channelNo": "1",
"codename": "code123"
}
Входное сообщение 2:
{
"lnsAcctInfo": [
{
"acctno": "101991100000012",
"custid": "2018111400000002",
"acctype": null,
"ccy": null,
"name": null,
"prdcode": "300"
},
{
"acctno": "101991100000022",
"custid": "2018111400000052",
"acctype": 1,
"ccy": 1,
"name": 1,
"prdcode": "300"
}
]
}
Требуется вывод:
{
"customerId": "ABC123",
"codename": "code123",
"lnsAcctInfo": [
{
"acctno": "101991100000012",
"custid": "2018111400000002",
"acctype": null
},
{
"acctno": "101991100000022",
"custid": "2018111400000052",
"acctype": 1
}
]
}
Вот код синапса:
<resource methods="POST" uri-template="/foreach">
<inSequence>
<log>
<property expression="json-eval($)" name="RecievedPostMessage" />
</log>
<property name="customid" scope="default" type="STRING" value="sampleuserid" />
<payloadFactory description="payload-xml" media-type="xml">
<format>
<lnsAcctInfo xmlns="">$1</lnsAcctInfo>
</format>
<args>
<arg evaluator="json" expression="$.lnsAcctInfo[*]" />
</args>
</payloadFactory>
<log>
<property expression="." name="payload1" />
</log>
<iterate expression="//lnsAcctInfo/jsonElement" id="1">
<target>
<sequence>
<log>
<property expression="." name="Iterate" />
</log>
<aggregate>
<completeCondition>
<messageCount max="-1" min="-1" />
</completeCondition>
<onComplete expression="//jsonElement">
<log>
<property expression="." name="aggre" />
</log>
</onComplete>
</aggregate>
</sequence>
</target>
</iterate>
<log>
<property expression="." name="overall" />
</log>
<respond />
</inSequence>
<outSequence>
<send />
</outSequence>
<faultSequence />
</resource>