Вызов потока с использованием Groovy Script в Mule 4 - PullRequest
0 голосов
/ 24 марта 2019

Мне нужно вызвать поток с помощью groovy script в mule 4. Может кто-нибудь сообщить мне, если он попробовал его с помощью Mule 4

1 Ответ

1 голос
/ 25 марта 2019

Возможно, но я НАСТОЯТЕЛЬНО рекомендую вам НЕ делать этого.

Вам придется углубиться в API-интерфейсы Mule Java и присоединиться к ним, а также добавить множество собственных обработчиков ошибок и т. Д. И опасаться обновлений платформы и изменений API-интерфейса Java.

Лично я бы реструктурировал ваше приложение, чтобы в сценариях была только «бизнес-логика», и позволил бы Муле выполнять поиск потоков в других местах.

Вы даже можете искать потоки в потоке данных.

Но вот грубый рабочий пример (обратите внимание, вам придется укрепить этот код самостоятельно):

<flow name="test-flow">
        <scheduler>
            <scheduling-strategy>
                <fixed-frequency frequency="100000"></fixed-frequency>
            </scheduling-strategy>
        </scheduler>
        <set-payload value="bla bla" />
        <scripting:execute engine="groovy" doc:name="Toggle flow" doc:id="2eb6f071-bdef-4d3d-926d-2565fcd62d33">
            <scripting:code>
                import org.mule.runtime.api.message.Message;
                import org.mule.runtime.core.api.event.CoreEvent;
                import org.mule.runtime.core.api.event.EventContextFactory;
                flow=registry.lookupByName(&quot;another-flow&quot;).get();
                thisflow=registry.lookupByName(&quot;test-flow&quot;).get();
                msg = Message.builder().value(payload).build();
                event =CoreEvent.builder(EventContextFactory.create(thisflow,
                org.mule.runtime.dsl.api.component.config.DefaultComponentLocation.fromSingleComponent("add-location"))).message(msg).build();
                result =flow.process(event);
            </scripting:code>
        </scripting:execute>
    </flow>

    <flow name="another-flow">
        <logger level="ERROR" message="Another Flow #[payload]" />
    </flow>

Вам нужно получить текущий поток и поток, который вы хотите вызвать.

Использование API-интерфейсов Mule - создание событий Mule, Messgae, полезных данных и т. Д. Вам также необходимо добавить любые необходимые атрибуты и т. Д.

...