Миграция кода Mule 3 на Mule 4 и rest-router не поддерживается в Mule 4

У меня есть одно приложение - Mule 3, теперь мне нужно перенести его в Mule 4.

Я реализовал и изменил некоторый код, но из-за исключений этот тег не поддерживается, то есть 'rest-router' не поддерживается.

<rest-router:router templateUri="${igate.url}">
<!--Migration ERROR: The migration of 'rest-router' is not supported.-->
<!-- For more information refer to:-->
<!-- * https://docs.mulesoft.com/mule-runtime/4.1/migration-connectors>--
<!-- * https://beta.docs.stgx.mulesoft.com/beta-mule-migration-tool/mule-runtime/4.1/migration-tool.html#unsupported_connectors-->
<rest-router:post>
<ee:transform xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" doc:name="JSON to Object">
<ee:message>
<ee:set-payload>%dw 2.0 output application/java --- payload as Object { class: 'com.ifi.igate.model.Transaction'}</ee:set-payload>
</ee:message>
</ee:transform>
<flow-ref name="igate-object-flow" doc:name="igate-object-flow" />
<ee:transform xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" doc:name="Object to JSON" mimeType="application/json">
<ee:message>
<ee:set-payload>%dw 2.0 output application/json --- payload</ee:set-payload>
</ee:message>
</ee:transform>
</rest-router:post>
</rest-router:router>

Полный XML-файл в Mule 3, который нам нужно перенести на Mule 4 -

<spring:beans>
            <spring:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
                <spring:property name="ignoreUnresolvablePlaceholders" value="true"/>
                <spring:property name="location" value="igate.properties"/>
            </spring:bean>
            <spring:bean id="validation" class="com.ifi.igate.integration.iclient.ValidationTransformer">
                <spring:property name="transactionTypes">
                    <spring:list>
                        <spring:value>INQ-REQ</spring:value> 
                        <spring:value>DEP-REQ</spring:value> 
                        <spring:value>WIT-REQ</spring:value> 
                    </spring:list>
                </spring:property>
            </spring:bean>
            <spring:bean id="iGateStub" class="com.ifi.igate.stub.IGateStub">
                <spring:property name="handlers">
                    <spring:map>
                        <spring:entry key="INQ-REQ">
                            <spring:bean class="com.ifi.igate.stub.handlers.InqHandler"/>
                        </spring:entry>
                        <spring:entry key="WIT-REQ">
                            <spring:bean class="com.ifi.igate.stub.handlers.WitHandler"/>
                        </spring:entry>
                        <spring:entry key="DEP-REQ">
                        <spring:bean class="com.ifi.igate.stub.handlers.DepHandler"/>
                    </spring:entry>
                    </spring:map>
                </spring:property>
            </spring:bean>
        </spring:beans>
        <rest-router:config/>
        <http:connector name="httpConnector" doc:name="HTTP\HTTPS">
            <receiver-threading-profile maxThreadsActive="10" />
        </http:connector>
        <flow name="igate-json-flow" doc:name="igate-json-flow">
            <http:inbound-endpoint exchange-pattern="request-response" host="${igate.host}" port="${igate.port}" doc:name="HTTP"/>
            <rest-router:router templateUri="${igate.url}">  
                <rest-router:post> 
                    <json:json-to-object-transformer xmlns:json="http://www.mulesoft.org/schema/mule/json" returnClass="com.ifi.igate.model.Transaction" doc:name="JSON to Object"></json:json-to-object-transformer>  
                    <flow-ref name="igate-object-flow" doc:name="igate-object-flow"/>
                    <json:object-to-json-transformer xmlns:json="http://www.mulesoft.org/schema/mule/json" doc:name="Object to JSON" mimeType="application/json"></json:object-to-json-transformer> 
                </rest-router:post> 
            </rest-router:router>
            <rest-router:router templateUri="${igate-stub.url}">
                <rest-router:post> 
                    <json:json-to-object-transformer xmlns:json="http://www.mulesoft.org/schema/mule/json" returnClass="com.ifi.igate.model.Transaction" doc:name="JSON to Object"/>
                    <component doc:name="IGateStub">
                        <spring-object bean="iGateStub"/>
                    </component>
                    <json:object-to-json-transformer xmlns:json="http://www.mulesoft.org/schema/mule/json" doc:name="Object to JSON" mimeType="application/json"/>
                </rest-router:post>
            </rest-router:router>   
        </flow>
        <sub-flow name="igate-object-flow" doc:name="igate-object-flow">         
            <transformer ref="validation"/>
            <choice>
                <when expression="#[message.payload.trxstatus == 0]">
                    <logger message="#[message.payload.trxreason]" level="ERROR" doc:name="Logger"/>
                </when>
                <otherwise>
                    <set-variable variableName="request" value="#[message.payload]" doc:name="save request"/>
                    <flow-ref name="promotions-flow" doc:name="Promotions Flow"/>
                    <flow-ref name="ifi-membership-flow" doc:name="Accumulate Spending"/>
                    <!-- logger message="Before backend" level="ERROR" doc:name="Logger"/-->
                    <flow-ref name="rewards-flow" doc:name="Rewards Flow"/>
                    <choice>
                        <when expression="#[message.payload.values['PTS']>0 || message.payload.trxtype=='INQ-REQ']">
                            <flow-ref name="${igate.membership}-membership-flow" doc:name="External Membership Flow"/>
                        </when>
                        <otherwise>
                            <vm:outbound-endpoint exchange-pattern="request-response" path="membership/ifi" />
                    </otherwise>
                    </choice>
                    <!-- logger message="After backend" level="ERROR" doc:name="Logger"/-->
                    <flow-ref name="promotions-flow" doc:name="Promotions Flow"/>
                    <flow-ref name="rewards-flow" doc:name="Rewards Flow"/>
                    <flow-ref name="ifi-membership-flow" doc:name="Manage balances"/>
                    <flow-ref name="pricing-flow" doc:name="Pricing Flow"/>
            </otherwise>
             </choice>
        </sub-flow>
    </mule>

'rest-router' не поддерживается в Mule 4, нужна только замена этого тега или Как я могу перенести его в Mule 4.


person Ajay Jirati    schedule 03.07.2019    source источник


Ответы (1)


rest-router кажется неподдерживаемым и неподдерживаемым (последняя фиксация относится к 2012 году) для Mule 3. Лучше всего перейти с нуля и использовать APIKit. Вам нужно будет написать спецификацию RAML для вашего API, и Studio создаст из нее все необходимые каркасы.

person aled    schedule 04.07.2019