Destination using CAP service on BAS Cloud Environment
Agregar destination al servicio de una aplicación con el modelo de programación CAP (Cloud Application Programming) en el ambiente de desarrollo BAS (Business Application Studio) en la nube.
Prerequisitos:
- Una cuenta trial SAP Cloud BTP.
- Subscripción al Business Application Studio (y estar firmados a Cloud Foundry).
- DB de espacio de desarrollo este en estatus RUNNING.
- Crear una aplicación Node.js usando Cloud Application Programming Model.
- Asignar autorización a una aplicación Node.js usando Cloud Application Programming Model.
Justificación:
Para crear una aplicación Fiori a nuestro servicio hay dos maneras de hacerlo, una es crear la interfaz directamente en la mismo workspace CAP, otra opción es crearle al servicio un destination, en este caso la aplicación puede ser creada en otro workspace del tipo FIORI. Y así separar de alguna forma el back-end de acceso de datos a HANA y el front-end de interfaz de usuario FIORI.
1.- Activar el servicio.
Acceder al cockpit de la cuenta trial BTP y asegurarnos de que el servicio este activo, sino, activarlo.
2.- Consultar datos de acceso al servicio.
Dentro de las opciones del servicio tenemos las variables, obtener los datos necesarios de acceso.
3.- Crear el destination al servicio.
Ahora vamos a la configuración de destinations para crearle el destination al servicio.
Crear un nuevo destination con la siguiente configuración:
Destination Configuration:
- Name: Nombre del destination
- Type: HTTP
- URL: https://<trial>.<myappname>.cfapps.<region>.hana.ondemand.com
- Proxy Type: Internet
- Authentication: OAuth2UserTokenExchange
- Client ID: <sacarlo de las variables del servicio>
- Client Secret: <sacarlo de las variables del servicio>
- Token Service URL Type: Dedicated
- Token Service URL: https://<trial>.authentication.<region>.hana.ondemand.com/oauth/token
Additional Properties:
- HTML5.DynamicDestination = true
- WebIDEEnabled = true
- WebIDEUsage = odata_gen,odata_abap,bsp_execute_abap,ui5_execute_abap,dev_abap,odata_gen,bsp_execute_abap
4.- Probar el destination del servicio desde la terminal BAS.
Ahora vamos a probar el destination para verificar que tenemos acceso a los datos.
En una sesion BAS abrimos una nueva terminal.
En la nueva terminal consultamos los datos del servicio de la siguiente manera:
curl + <destination> + “.dest” + “/”<endpoint> + “/”<entity>
Hay que respetar mayúsculas y minúsculas, consultar el endpoint por si tenemos dudas:
Por ejemplo para mi destination sería entonces:
curl CAPBookshop.dest/catalog/Books
Tiene que aparecer la información del servicio solicitado de la siguiente manera:
También podríamos enviar a un archivo con > <archivo>.xml y verificar el contenido. Lo que es importante es hacer esta prueba antes de utilizar el destination para crear la aplicación FIORI y confirmar que tenemos acceso a los datos del back-end.
Troubleshooting:
Si al consultar en la terminal la respuesta es:
{“error”:{“code”:”503″,”message”:”Service Unavailable”}}
Quiere decir que la base de datos no está disponible, seguramente no está en estatus RUNNING.
404 Not Found: Requested route (‘trial-dev-app-srv.cfapps.us10.hana.ondemand.com’) does not exist.
El servicio no está activo, hay que activarlo desde el cockpit BTP en aplicaciones.
Addendum:
Otro motivo por el cual es útil tener acceder a un servicio desde un destination es porque -como en este caso- el servicio está protegido con autentificación, por lo tanto al tratar de consumirlo desde una aplicación es lógico que nos pediría las credenciales. Utilizar un destination con Token nos evitaría tener que capturar esta autentificación básica al crear la aplicación.
Addendum 2:
Si el servicio lo queremos accesar desde otra subcuenta, entonces el destination deberá configurarse con la forma de autenticación OAuth2Password e indicar además el usuario y password.