Diferencia entre revisiones de «Spring Integration con Pivotal Tracker»

De Dos Ideas.
Saltar a: navegación, buscar
(Configuración)
 
(No se muestran 2 ediciones intermedias del mismo usuario)
Línea 4: Línea 4:
  
 
*Http gateways de entrada y salida
 
*Http gateways de entrada y salida
**Uno de entrada que expone un servicio para atender las peticiones de las aplicaciones y el de salida realiza un POST al API de [https://www.pivotaltracker.com  Pivotal Tracker]  
+
**Uno de entrada que expone un servicio para atender las peticiones de las aplicaciones y el de salida para realizar un POST al API de [https://www.pivotaltracker.com  Pivotal Tracker]  
 
*Cadena:
 
*Cadena:
 
**Se utiliza para encadenar las operaciones de procesamiento del mensaje.
 
**Se utiliza para encadenar las operaciones de procesamiento del mensaje.
Línea 40: Línea 40:
 
         <int:header-enricher>
 
         <int:header-enricher>
 
             <int:header name="Content-Type" value="application/xml"/>
 
             <int:header name="Content-Type" value="application/xml"/>
             <int:header name="X-TrackerToken" value="${tracketTocken}"/>
+
             <int:header name="X-TrackerToken" value="${tracketToken}"/>
 
         </int:header-enricher>
 
         </int:header-enricher>
 
         <!-- Serializa el mensaje -->
 
         <!-- Serializa el mensaje -->
Línea 64: Línea 64:
  
 
El proyecto de ejemplo se puede descargar de nuestro proyecto en [http://code.google.com/p/dosideas-aplicaciones-modelo/source/browse/ google-code].
 
El proyecto de ejemplo se puede descargar de nuestro proyecto en [http://code.google.com/p/dosideas-aplicaciones-modelo/source/browse/ google-code].
 +
 +
[[Category:Spring Framework]]

Revisión actual del 12:53 6 mar 2012

El ejemplo demuestra como integrar aplicaciones propias con la herramienta Pivotal Tracker utilizando Spring Integration.

Componentes utilizados

  • Http gateways de entrada y salida
    • Uno de entrada que expone un servicio para atender las peticiones de las aplicaciones y el de salida para realizar un POST al API de Pivotal Tracker
  • Cadena:
    • Se utiliza para encadenar las operaciones de procesamiento del mensaje.
  • Transformadores:
    • Transformación de Json a objeto
    • Transformación de objeto a xml
    • Transformación de objeto a String

En este caso la entrada esperada es Json, esto se trasforma a la entidad Historia y luego se trasforma a xml para invocar el API de Pivotal Tracker. La entidad posee las anotaciones de JSON y XStream correspondientes para poder realizar los mapeos correctamente.

Configuración

   <http:inbound-gateway id="gatewayHttpEntrada" request-channel="incomingPivotalBug" 
                         supported-methods="POST" reply-timeout="5000" 
                         path="/bug" reply-channel="outcomingPivotalBug"
                         mapped-response-headers="Content-Type"/>


   <int:chain id="cadenaPivotal" input-channel="incomingPivotalBug" output-channel="pivotalPost">
       <int:json-to-object-transformer type="com.dosideas.pivotaltrackerintegration.domain.Historia"/>
       <int:enricher>
           <int:property name="usuarioPivotal" value="${usuarioPivotal}"/>
           <int:property name="propietario" value="${propietario}"/>
           <int:property name="tipo" value="bug"/>
       </int:enricher>
       <int:header-enricher>
           <int:header name="Content-Type" value="application/xml"/>
           <int:header name="X-TrackerToken" value="${tracketToken}"/>
       </int:header-enricher>
       <int-xml:marshalling-transformer marshaller="xstreamMarshaller" result-type="StringResult"/>
       <int:object-to-string-transformer/>
   </int:chain>


   <http:outbound-gateway request-channel="pivotalPost" 
                          url="http://www.pivotaltracker.com/services/v3/projects/{project_id}/stories"
                          http-method="POST"
                          mapped-request-headers="Content-Type, X-TrackerToken"
                          mapped-response-headers="Content-Type"
                          extract-request-payload="true"
                          expected-response-type="java.lang.String"
                          charset="ISO-8859-1"
                          reply-channel="outcomingPivotalBug">
       <http:uri-variable name="project_id" expression="${project_id}"/>    
   </http:outbound-gateway>

El proyecto de ejemplo se puede descargar de nuestro proyecto en google-code.