Передать свойство из inSequence в outSequence

Я отправляю сообщение с прокси на порт TCP / IP HL7 и получаю ответ в outSequence. Но моя проблема в том, что все свойства, установленные в inSequence, больше не доступны. Все они равны нулю. Я тестировал все различные области (транспорт, axis2, axis2-client), но ни один из них не работал.

В этом сообщении я увидел, что это должно быть возможно. Отправитель HL7 уничтожает свойства? Как можно использовать мои свойства из inSequence в outSequence?

Пример моего прокси (получить сообщение от ActiveMQ JMS и отправить на порт 4000 HL7):

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" xmlns:hl7="http://wso2.org/hl7"  xmlns:urn="urn:hl7-org:v2xml" name="demo_toHL7" transports="jms" startOnLoad="true" trace="disable">
    <parameter name="transport.jms.Destination">demo_qFilter</parameter>
    <parameter name="transport.jms.ConnectionFactory">queueBlocking</parameter>
    <parameter name="transport.jms.DestinationType">queue</parameter>
    <parameter name="transport.jms.ContentType">
        <rules>
            <jmsProperty>contentType</jmsProperty>
            <default>application/edi-hl7</default>
        </rules>
    </parameter>
    <target faultSequence="rollbackSequence">
        <inSequence>
            <log level="full"/>
            <property name="ClientApiNonBlocking" scope="axis2" action="remove"/>
            <property name="testProperty" value="blabla" scope="transport"/>
            <property name="messageType" value="application/edi-hl7" scope="axis2"/>
            <property name="ContentType" value="application/edi-hl7" scope="axis2"/>            
            <send>
                <endpoint>
                    <address uri="hl7://localhost:4000"/>
                </endpoint>
            </send>
        </inSequence>
        <outSequence>
            <log level="custom">
                <property name="PROPERTY" expression="get-property('transport','testProperty')"/>
            </log>
        </outSequence>
    </target>
</proxy>

Я использую WSO2 ESB 4.0.3 и установил функцию HL7. В качестве приемника я использую приложение 7edit.


person FiveO    schedule 14.11.2012    source источник


Ответы (1)


Попробуйте указать в области свойств значение "по умолчанию / синапс"

FiveO редактировать комментарий:

Попробуйте установить область свойств по умолчанию:

Отправка свойства транспорта из inSequence в outSequence (от имени области по умолчанию):

<inSequence>
   ...
   <property name="myPropertyInTransport" value="myValue" scope="transport"/>
   <property name="myPropertyInDefault" expression="get-property('transport','myPropertyInTransport')" scope="default"/>
   ...
</inSequence>
<outSequence>
   ...
   <property name="myPropertyInTransport" expression="get-property('default', 'myPropertyInDefault')" scope="transport"/>
   <!-- Now myProperty is also available in the outSequence -->
   ...
</outSequence>
person Ratha    schedule 14.11.2012
comment
нет - я получаю эту ошибку: org.apache.synapse.SynapseException: для области атрибута для посредника свойств разрешены только значения "axis2", "transport" или "axis2-client", неподдерживаемая область по умолчанию / синапс - person FiveO; 14.11.2012
comment
Как вы определили объем? ‹Имя свойства = выражение свойства = get-property ('testProperty') scope = default /› - person Ratha; 14.11.2012
comment
Спасибо, мне удалось добиться результата, отправив свойства в пределах области действия по умолчанию в outSequence. Я дополню ваш ответ некоторыми примерами. - person FiveO; 14.11.2012
comment
Спасибо .. я добавил свой комментарий в ответ - person Ratha; 15.11.2012
comment
@Ratha Мне нужно отправить строковое значение в качестве ответа с помощью посредника класса. Вот мой вопрос stackoverflow.com/questions/45132859/. Вы знаете об этом, спасибо - person Priyantha; 17.07.2017