Spring Integration con Pivotal Tracker
De Dos Ideas.
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.