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 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.