Как экстернализовать повторяющиеся атрибуты ответа SOAP в муле данных? - PullRequest
0 голосов
/ 03 ноября 2018

Я создаю ответ SOAP в Dataweave. Определенные компоненты (ESBHeader) ответа повторяются в нескольких потоках. Мне также нужно установить код статуса и сообщение для каждого запроса.

Мне нужен общий / общий способ загрузки этих повторяющихся строк в общий файл dwl для оптимизации кода. Как мне это сделать?

Пример ответного сообщения1 потока1

{
        ns1#ResponseMsg1: {
            ns0#ESBHeader: {
                ns0#InitialContext @(CreationTime: flowVars.req.ResponseMsg1.ESBHeader.InitialContext.@CreationTime, TrackingID: flowVars.req.ResponseMsg1.ESBHeader.InitialContext.@TrackingID): {
                    ns0#Actor @(Component: flowVars.req.ResponseMsg1.ESBHeader.InitialContext.Actor.@Component , Operation: flowVars.req.ResponseMsg1.ESBHeader.InitialContext.Actor.@Operation): null
                },
                ns0#MessageContext  : {
                    ns0#Actor @(Component: flowVars.req.ResponseMsg1.ESBHeader.MessageContext.Actor.@Component  , Operation: flowVars.req.ResponseMsg1.ESBHeader.MessageContext.Actor.@Operation): null
                },
                ns0#Status: {
                    ns0#Code: "Success",
                    ns0#Message: ""
                }
            },
            ns1#var1: flowVars.var1
        }
    }

Пример ответного сообщения2 потока2

{
        ns1#ResponseMsg2: {
            ns0#ESBHeader: {
                ns0#InitialContext @(CreationTime: flowVars.req.ResponseMsg2.ESBHeader.InitialContext.@CreationTime, TrackingID: flowVars.req.ResponseMsg2.ESBHeader.InitialContext.@TrackingID): {
                    ns0#Actor @(Component: flowVars.req.ResponseMsg2.ESBHeader.InitialContext.Actor.@Component , Operation: flowVars.req.ResponseMsg2.ESBHeader.InitialContext.Actor.@Operation): null
                },
                ns0#MessageContext  : {
                    ns0#Actor @(Component: flowVars.req.ResponseMsg2.ESBHeader.MessageContext.Actor.@Component  , Operation: flowVars.req.ResponseMsg2.ESBHeader.MessageContext.Actor.@Operation): null
                },
                ns0#Status: {
                    ns0#Code: "Failure",
                    ns0#Message: ""
                }
            },
            ns1#var1: flowVars.var1,
            ns1#var2: flowVars.x.var2
        }
    }

Любые указатели очень ценятся.

Большое спасибо.

1 Ответ

0 голосов
/ 04 ноября 2018

Если вы используете Mule 4, легко создать и импортировать модуль DataWeave .

В Mule 3 есть похожий метод, но он на самом деле не поддерживается, и вы можете столкнуться с некоторыми проблемами. Из вашего скрипта это выглядит как Mule 3. Этот пост в блоге объясняет метод.

...