SIU-Arai/usuarios/integracion-inicial-toba

De SIU
Revisión del 17:18 17 nov 2016 de Svier (discusión | contribuciones) (avances doc integracion app toba)
Saltar a: navegación, buscar
Siu-arai iso.png

Integrando una aplicación Toba

Requisitos previos

Utilizar Composer

Es recomendable que el proyecto se gestione mediante composer para la instalación y actualización de librerías y dependencias. En la wiki de SIU-Toba, se encuentra una referencia detallada de como realizar este paso.

Una vez se tenga el archivo composer.json, se debe editar y agregar la librería arai-cli a la lista de dependencias.

  ...
  "require": {
    "siu-toba/framework": "2.7.x-dev",
    "siu/arai-cli": "dev-master"
  },
  ...

Se elige siempre la última versión estable de arai-cli, de la rama master.

Luego de realizar el cambio, siempre se debe proceder a actualizar la lista de dependencias:

composer update

Integración con toba-usuarios

Si el proyecto utiliza la gestión de usuarios que proporciona SIU-Toba, este punto es transparente y no requiere de cambios adicionales.

Integrar al menú de aplicaciones

SIU-Toba proporciona una implementación de barra o lanzador de apliaciones, desde el cual se puede acceder a todas las aplicaciones integradas a la plataforma SIU-Arai (siempre y cuando tenga permiso de acceder el usuario particular). Esto se activa configurando el archivo proyecto.ini y agregando la siguente entrada:

[proyecto]
...
;Esta entrada activa el uso del appLauncher
app_launcher = 1

Integrar a Arai-Registry la aplicación

Gracias a la librería arai-cli, se pueden registrar las aplicaciones a SIU-Arai de forma sencilla. En la documentación de Arai-Registry se detalla como funciona este procedimiento.

Configurar las necesidades

Arai-Registry permite indicar que servicios consume y proporciona una aplicación. Para ello lo primero a realizar es crear un archivo llamado arai.json que esté ubicado en la raíz del proyecto con el siguiente contenido:

{
  "name": "institucion/proyecto",
  "description": "UNI-Proyecto, aplicación",
  "scripts": {
    "hooks": "UNI\\Proyecto\\AraiRegistryHooks"
  },

  "consume": [
    {
      "name": "service:siu/sso-saml-idp",
      "version": ">=0.1.0"
    },
    {
      "name": "api:siu/arai-usuarios",
      "version": ">=0.1.0",
      "options": {
        "toba-rest": [
          { "proyecto": "toba_usuarios", "rest-id": "rest_arai_usuarios" }
        ]
      }
    }
  ]
}

Es muy relevante establecer el atributo name y description con los valores deseados. Para el atributo hooks, se debe completar con la ruta o namespace del proyecto hasta la clase php. Esta se crea en el siguiente paso.

Hook de auto-configuración

El hook de configuración es una clase php que extiende de HooksInterface. Este archivo tiene una nomenclatura estándar, siempre se denomina AraiRegistryHooks. Se deberá crear dicha clase dentro del directorio /src del proyecto, o en algún punto que esté configurado con el autoloader de composer. Suponiendo en este ejemplo, el archivo sería /src/UNI/Proyecto/AraiRegistryHooks.php:

<?php
namespace UNI\Proyecto;

use SIU\AraiCli\Services\Registry\HooksInterface;
use SIU\AraiJsonParser\Feature\Consumption;
use SIU\AraiJsonParser\Feature\Feature;
use SIU\AraiJsonParser\Feature\Provision;


class AraiRegistryHooks implements HooksInterface
{
    /**
     * Se ejecuta antes de enviar una feature al registry. En esta ventana se deben configurar las features para incluir
     * los datos dependientes de la instalación.
     * @param Provision $feature una feature sin información de instalación, por ej: url.
     */
    public function preProvide(Provision $feature){ }

    /**
     * Se ejecuta después de que se registra una provisión. Todos los consumidores están en $f->getConsumers()
     * @param Provision $feature
     */
    public function postProvide(Provision $feature){ }

    /**
     * Se ejecuta antes de enviar una feature para consumo al registry.
     * @param Consumption $feature
     */
    public function preConsume(Consumption $feature){ }

    /**
     * Se ejecuta cuando vuelve una feature del registry con los datos para su consumo. Este hook es utilizado para
     * configurar el sistema a partir de la información en registry.
     * @param Consumption $feature
     */
    public function postConsume(Consumption $feature){ }

    /**
     * Se ejecuta luego de hacer un add
     */
    public function postAdd(){ }

    /**
     * Se ejecuta luego de hacer un sync
     */
    public function postSync(){ }
}