Wednesday, 30 September 2015

Mule

Fetching Data from Database and Writing to CSV File
Description: Here I used Database connector of MYSQL which gets Map as output. Then I used Transformer to convert Map to CSV and stored in csv file at path specified.
Flow
MuleConfig.xml
   <jdbc-ee:mysql-data-source name="MySQL_Data_Source" user="root" password="root" url="jdbc:mysql://localhost:3306/test" transactionIsolation="UNSPECIFIED" doc:name="MySQL Data Source"/>
    <jdbc-ee:connector name="Database_Mysql" dataSource-ref="MySQL_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database"/>
    <http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8089" doc:name="HTTP Listener Configuration"/>
    <db:mysql-config name="MySQL_Configuration" host="localhost" port="3306" user="root" password="root" database="test" doc:name="MySQL Configuration"/>
    <data-mapper:config name="Map_To_CSV" transformationGraphPath="map_to_csv.grf" doc:name="Map_To_CSV"/>
    <flow name="csvtodbFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/" allowedMethods="GET" doc:name="HTTP"/>
        <db:select config-ref="MySQL_Configuration" doc:name="Database">
            <db:dynamic-query/>
        </db:select>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <data-mapper:transform config-ref="Map_To_CSV" metadata:id="def2d8b9-62a2-442f-8be1-956d11615b04" doc:name="Map To CSV"/>
      <file:outbound-endpoint path="C:/Users/sreddi/Desktop/output" responseTimeout="10000" doc:name="File" outputPattern="swamy.csv"/>
    </flow>
Output:
Getting Data from SalesForce
Description: Here I used salesforce connector to  fetch the data from salesforce  where I get Object. So I used transformer Object to Json and set one logger to see output.
Flow
 
 
MuleConfiguration.xml
<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"/>
    <sfdc:config name="Salesforce__Basic_authentication" username="swamy.rhythm@gmail.com" password="reddi@b42" securityToken="AHHE7QziON3yR53WgCUx8M83t" doc:name="Salesforce: Basic authentication"/>
    <flow name="getsfdcaccdataFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/sfdc" allowedMethods="GET" doc:name="HTTP"/>
        <sfdc:query config-ref="Salesforce__Basic_authentication" query="dsql:SELECT BillingAddress,BillingCity,BillingCountry,BillingPostalCode,BillingState,Name FROM Account" doc:name="Salesforce"/>
        <json:object-to-json-transformer doc:name="Object to JSON"/>
        <logger level="INFO" doc:name="Logger" message="#[payload]"/>
Exposing Json REST Service with List of orders
Description:Here  I used RestService with Json as output. With display List of orders
Output
[
  {
    "custmer": "Kumar",
    "address": "Bangalore",
    "order-no": 15,
    "bill-amount": "$2000"
  },
  {
    "custmer": "Swamy",
    "address": "HYDERABAD",
    "order-no": 15,
    "bill-amount": "$2000"
  }
]
Using Choice and Subflows
Description: Based on Language selected it trigger the particular flow.
If English then English Flow, if Hindi then triggers Hindi flow else default will be Telugu Flow
FLOW
 
<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"/>
    <flow name="choiceconnpocFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
        <logger level="INFO" doc:name="Logger" message="english"/>
        <set-variable variableName="language" value="english" doc:name="Variable"/>
        <choice doc:name="Choice">
            <when expression="#[flowVars.language=='english']">
                <set-payload doc:name="Set English  Payload" value="#['English'.toUpperCase()]"/>
                <flow-ref name="choiceconnpocFlow1" doc:name="English flow"/>
            </when>
            <when expression="#[flowVars.language=='hindi']">
                <set-payload doc:name="Set Hindi Payload" value="#['Hindi'.toUpperCase()]"/>
                <flow-ref name="choiceconnpocFlow2" doc:name="Hindi flow"/>
            </when>
            <otherwise>
                <set-variable doc:name="Variable" value="telugu" variableName="language"/>
                <set-payload doc:name="Set Telugu Payload" value="#['Telugu'.toUpperCase()]"/>
                <flow-ref name="choiceconnpocFlow3" doc:name="Telugu Flow"/>
            </otherwise>
        </choice>
    </flow>
    <flow name="choiceconnpocFlow1">
        <poll doc:name="Poll">
            <logger message="English Flow executed -----" level="INFO" doc:name="Logger"/>
        </poll>
        <logger level="INFO" doc:name="Logger"/>
    </flow>
    <flow name="choiceconnpocFlow3">
        <poll doc:name="Poll">
            <logger level="INFO" doc:name="Logger"/>
        </poll>
        <logger level="INFO" doc:name="Logger"/>
    </flow>
    <flow name="choiceconnpocFlow2">
        <poll doc:name="Poll">
            <logger level="INFO" doc:name="Logger"/>
        </poll>
        <logger level="INFO" doc:name="Logger"/>
    </flow>

No comments:

Post a Comment