martes, 31 de marzo de 2015

WSO2 BPS: Introducción a BPEL con el Developer Studio.

Como parte de una serie de trabajos relacionados con BPEL y WSO2 les dejo este primer documento introductorio al desarrollo de procesos de negocio.



martes, 3 de marzo de 2015

WSO2 ESB: creando una API REST tonta en 1 minuto.

image

Este es un escenario que se nos puede dar en cualquier desarrollo, bien sea en una PoC o como parte de un desarrollo ágil donde necesitamos consumir un servicio REST y no tenemos tiempo para implementar algo desde 0.

Digamos que requimos un servicio que se consulte a través de la siguiente URL:
http://localhost:8281/DummyRESTService/orders

Y queremos que nos devuelva:
{"Order":{"additions":"Milk","drinkName":"Vanilla Flavored Coffee","locked":false,"orderId":123}}


Esta sería su implementación:


<?xml version="1.0" encoding="UTF-8"?>
<api xmlns="http://ws.apache.org/ns/synapse"
     name="DummyRESTService"
     context="/DummyRESTService">
   <resource methods="GET" url-mapping="/orders" faultSequence="fault">
      <inSequence>
         <payloadFactory media-type="json">
            <format>{"Order":{"additions":"Milk","drinkName":"Vanilla Flavored Coffee","locked":false,"orderId":123}}</format>
            <args/>
         </payloadFactory>
         <log>
            <property name="JSON-Payload" expression="json-eval($.)"/>
         </log>
         <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
         <property name="messageType"
                   value="application/json"
                   scope="axis2"
                   type="STRING"/>
         <respond/>
      </inSequence>
   </resource>
</api>


Se usa el mediador payloadfactory en su configuración para JSON y dentro de los tags de format se especifica el  JSON que se requiere sea devuelto por el servicio.


Como ven solo hay que cambiar el payload y claro ajustar el nombre, contexto y la url de mapeo.


Importante notar la propiedad NO_ENTITY_BODY la cual permite no enviar el cuerpo de la respuesta, solo los encabezados. Así que se toma como action = remove.


Si se quiere probar se puede usar el firefox con su plugin RESTClient:


image


O usando curl:


image Y listo. Eso es todo.


Tomada la solución de:


http://ruchirawageesha.blogspot.com/2012/07/wso2-esb-sending-dummy-response.html
http://stackoverflow.com/questions/28572800/how-to-implement-a-dummy-rest-api-in-wso2-esb