Hello camel riders,

I would like to share a solution and ask if it was the best aproach. 
I think it can be util for some one in the future and because is a
interesting example of integration using camel!


The use case:
I have a orbeon forms installed that was configured to: 1) save the form
date to existdb and 2) after it, send metadata of the form to my camel route
described below. With the camel route, with the metadate of the form
submited (using camel-http) the route interact with existdb rest api to get
the real date of the form.


Ok, it is a simplification of the use case, because next step is improve it
with business rules upon form metadata and start a business process deployed
in apache ode. But start the process from the route is not implemented yet
and not described here.


That is the code (sorry for much comments)


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:cxf="http://camel.apache.org/schema/cxf";
        xsi:schemaLocation="
    http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
    http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd
    http://camel.apache.org/schema/cxf
http://camel.apache.org/schema/cxf/camel-cxf.xsd";>


        <cxf:rsServer id="rsRestServices_OrbeonServer"
address="http://localhost:18181/orbeonservice";
                serviceClass="br.edu.fzlbpms.service.orbeon.ControllerService" 
/>

    
        <camelContext xmlns="http://camel.apache.org/schema/spring";>
                <route 
id="FZLBPMS_CAMEL_ROUTE___cxfrs_bean_rsRestServices_OrbeonServer">
                        <from uri="cxfrs:bean:rsRestServices_OrbeonServer" />
                        
                        
                    <setBody>
                        <constant>""</constant>
                   </setBody>
                    
                    <to 
uri="Handle_App_e_FormTitle_camming_from_orbeonformPROCESSOR"/>
                                
                            
                     <setHeader headerName="CamelHttpUri">
                        <simple>
http://localhost:8282/exist/rest/db/orbeon/fr/${header.fzlbpms_orbeon_app}/${header.fzlbpms_orbeon_form}/data/${header.fzlbpms_orbeon_dataId}/data.xml?bridgeEndpoint=true
                         </simple>
                     </setHeader>                
                        
                     
                       <inOut uri="http://doesnt.matter.we/override/it/anyways"; 
/>                                              
                </route>
        </camelContext>



        <bean id="messageInspectProcessor"
class="br.edu.fzlbpms.service.orbeon.MessageInspectProcessor" />

        <bean id="Handle_App_e_FormTitle_camming_from_orbeonformPROCESSOR"
                
class="br.edu.fzlbpms.service.orbeon.Pega_dados_do_formularioPROCESSOR" />

        <bean id="BuildResponseProcessor"
class="br.edu.fzlbpms.service.orbeon.BuildResponseProcessor" />

</beans>



This processor is important to distinct what data is camming from witch form
by filling the values of the headers:
${header.fzlbpms_orbeon_app}
${header.fzlbpms_orbeon_form}
${header.fzlbpms_orbeon_dataId}

public class Pega_dados_do_formularioPROCESSOR implements Processor{

        public void process(Exchange exchange) throws Exception {
                
                String camelHttpQuery =
(String)exchange.getIn().getHeader("CamelHttpQuery");
                
        
//app=existapp&form=existappform1&document=c757e862848cf9cc2e170d9325a1fc94c282a8e4
                String[] split = camelHttpQuery.split("&");
                
                
                //app=existapp
                String[] appParam = split[0].split("=");
                String app = appParam[1];
                

                String[] formParam = split[1].split("=");
                String form = formParam[1];
                
                String[] dataParam = split[2].split("=");
                String dataId = dataParam[1];
                
                
                System.out.println("\n\n");
                System.out.println(app);
                System.out.println(form);
                System.out.println(dataId);
                
                exchange.getIn().setHeader("fzlbpms_orbeon_app", app);
                exchange.getIn().setHeader("fzlbpms_orbeon_form", form);
                exchange.getIn().setHeader("fzlbpms_orbeon_dataId", dataId);
                
        }

}



I still have several problems and doubts, like basic autentications for
example, but for now I just would like to share and to ask about if it was a
good aproach of this kind of integration (if it is relevant in some sense).

Thanks,







--
View this message in context: 
http://camel.465427.n5.nabble.com/Sharing-a-solution-for-discussion-tp5732560.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to