Monday, October 12, 2015

Node-RED -> Node Visual con SAP HANA

Este post fué posteado originalmente en Node-RED -> Visual Node with SAP HANA.


Node-RED es una herramienta visual para manejar el Internet de las Cosas.


En otras palabras…es NodeJs con una bonita interfaz visual.

Para poder hacerlo funcionar, podemos hacer lo siguiente.

Descargar NodeJS versión 0.10.X para tu OS y arquitectura correspondientes.

Yo uso Linux y esta es la manera más practica de instalarlo…

Luego de descargar el paquete simplemente hacemos..

sudo tar -C /usr/local --strip-components 1 -xzf node-v0.10.36-linux-x86.tar.gz

Con eso, NodeJS debería estar listo y funcionando…así que es hora de Node-RED.

sudo npm install -g node-red

Tan fácil como eso -:) Ahora, simplemente debemos ejecutar node-red en el terminal y abrir un browser con 



Primero, debemos crear un objeto Join y asociar la tabla por MANDT y CARRID. De ahí, seleccionar los siguientes campos como output MANDT, CARRID, CARRNAME, PRICE y CURRENCY.

Luego crear un objeto Aggregation seleccionándo los campos CARRNAME, PRICE (Como columnas agregadas) y CURRENCY. Debemos filtrar el campo CURRENCY por ‘USD’.

Luego, debemos crear un objeto Projection y seleccionar solo PRICE y CARRNAME.

En el objeto Semantics asegúrense de marcar  “CROSS CLIENT” como cliente por defecto.


Ahora, cambiemos a la vista SAP HANA Development y creemos un nuevo repositorio. Lo llamaremos“Flights”.

Creamos un proyecto “XS Engine” y también lo llamamos “Flights”. Lo enlazamos con el repositorio “Flights”.

Creamos un archivo vacio llamado “.xsapp”.

Creamos un archivo llamado “.xsaccess” con el siguente código.

.xsaccess
{
          "exposed" : true,
          "authentication" : [ { "method" : "Basic" } ]
}

Finalmente creamos un archivo llamado “flights.xsodata” con el siguiente código

flights.xsodata
service {
          "Blag/FLIGHTS_BY_CARRIER.calculationview" as "FLIGHTS" keys 
                                                        generate local "Id";
}

Activamos el proyecto y lanzamos nuestro browser...deberíamos ver algo como esto…


La parte de SAP HANA está lista…así que podemos pasar a la parte de Node-RED…

Primero, seleccionamos el nodo http y lo llenamos con /hana en la sección del url


Ahora, seleccionamos el nodo http request node y llenamos esto en el URL


Junto con el resto de la información…


Ahora, seleccionamos el nodo Function node y lo llenamos con siguiente código fuente…


function
var results = msg.payload.d.results;
var message = "";
for (i=0;i<results.length;i++){
    var carrname = results[i].CARRNAME;
    var price = results[i].PRICE;
    message += carrname + ' : ' + price + "\n";
}
 
msg.payload = message;
return msg;


Seleccionamos un nodo template y simplemente pasamos esto…


{{payload}}


Finalmente, seleccionamos un nodo http response node y le ponemos un nombre si queremos -:)



Al final...deberíamos tener algo como esto -;)


Estamos listos -:) y dicho sea de paso…si no sienten con ganas de hacer todo esto…siempre pueden copiar este código e importarlo hacia Node-RED…

Node_RED_HANA.json
[{"id":"4ae9ba82.b51644","type":"http in","name":"","url":"/hana","method":"get",
"x":155,"y":91,"z":"3c0f3fe4.c3f0c","wires":[["ded8853e.212778"]]},{"id":"ded8853e.212778",
"type":"http request","name":"HANA","method":"GET","ret":"obj",
"url":"http://54.65.196.224:8000/Flights/flights.xsodata/FLIGHTS?$format=json",
"x":329,"y":102,"z":"3c0f3fe4.c3f0c","wires":[["c177bd31.3e884"]]},{"id":"c177bd31.3e884",
"type":"function","name":"GetInfo","func":"var results = msg.payload.d.results;
\n//var message = [];\nvar message = \"\";\nfor (i=0;i<results.length;i++){\n    
var carrname = results[i].CARRNAME;\n    var price = results[i].PRICE;\n    
//message[i] = carrname + ' : ' + price + \"\\n\"\n    message += carrname + ' : ' + 
price + \"\\n\";\n}\n\nmsg.payload = message;\nreturn msg;","outputs":1,"valid":true,
"x":507,"y":179,"z":"3c0f3fe4.c3f0c","wires":[["c59088cb.3a6f78"]]},{"id":"1995c536.e66a3b",
"type":"http response","name":"Response","x":653,"y":359,"z":"3c0f3fe4.c3f0c","wires":[]},
{"id":"c59088cb.3a6f78","type":"template","name":"Template","field":"payload",
"format":"handlebars","template":"{{payload}}","x":487,"y":321,"z":"3c0f3fe4.c3f0c",
"wires":[["1995c536.e66a3b"]]}]


Para ejecutarlo…simplemente seleccionen “Deploy” y vayan hacia http://localhost:1880/hana


Asombrosamente sencillo, no? -:)

Saludos,

Blag.
Development Culture.

No comments: