Question

I am using retrieving value from oracle database, I want to pass this parameter to setpayload component in mule ESB 3.4.

I am passing my parameter in below format.

'#[{10,2,payload[0]['rate'],payload[0]['name']}]'

I am getting an argument type mismatch error.

How to pass the parameter , please help me with correct syntax.

Thanks in advance

Here is my xml code

<jdbc-ee:oracle-data-source name="Oracle_Data_Source" user="abcd" password="123434" url="jdbc:oracle:thin:@//localhost:1522/xe" transactionIsolation="UNSPECIFIED" doc:name="Oracle Data Source"/>
<jdbc-ee:connector name="Database" dataSource-ref="Oracle_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database">
    <jdbc-ee:query key="Select" value="select applicant_name,rate from interestcalculation where applicant_name = #[message.payload]"/> </jdbc-ee:connector>

<flow name="SetApplicantNameflow" doc:name="SetApplicantNameflow">
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" doc:name="HTTP" path="interest"/>
    <set-payload value="kanagaraj" doc:name="ApplicantName"/>
    <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="Select" queryTimeout="-1" connector-ref="Database" doc:name="Applicant Rate"/>
    <logger message="#[payload[0]['RATE']],#[payload[0]['APPLICANT_NAME']]" level="INFO" doc:name="Logger"/>
    <flow-ref name="interestcalcultionflow" doc:name="InterestCalculationFlow Reference"/>
    <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="update" queryTimeout="-1" connector-ref="Database" doc:name="Save interest">
        <jdbc-ee:query key="update" value="update interestcalculation set interest = #[message.payload.interest] where appid= #[message.payload.appid]"/>
    </jdbc-ee:outbound-endpoint>
    <mulexml:object-to-xml-transformer doc:name="Object to XML"/>
</flow>
<sub-flow name="interestcalcultionflow" doc:name="interestcalcultionflow">
    <set-payload value="#[{1,10,payload[0]['RATE'],payload[0]['APPLICANT_NAME']}]" doc:name="Principle,years&amp; Rates"/>
    <cxf:jaxws-client  clientClass="pack.interest.InterestclassService"  doc:name="SOAP" operation="calculateInterest" port="interestclassPort"/>
    <http:outbound-endpoint exchange-pattern="request-response" method="POST" address="http://localhost:8080/calculateInterest/services/interestclassPort" doc:name="HTTP"/>
</sub-flow>`
Was it helpful?

Solution

You can get the set-payload to work correctly by doing

<set-payload value="#[{1,10,(payload[0]['rate']),(payload[0]['applicant_name'])}]"/>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top