Spring Integration con Pivotal Tracker

De Dos Ideas.
Saltar a: navegación, buscar

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 realiza 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="${tracketTocken}"/>
       </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.