Spring Integration con Pivotal Tracker
De Dos Ideas.
(Redirigido desde «Spring Integration integración con Pivotal Tracker»)
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.