SIU-Guarani/Version3.11.0/personalizaciones/requisito proceso

De SIU
Revisión del 17:11 28 sep 2016 de Gfranz (discusión | contribuciones)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Pasos para crear un requisito de tipo proceso

A continuación se detallan los pasos para crear un requisito de tipo proceso. A lo largo de los mismos se deberá reemplazar:

  • <path proyecto Guaraní> por el path donde está instalado el proyecto SIU-Guaraní Gestión

Crear la regla

Se define regla al proceso que contiene la lógica para resolver el caso propuesto.
Cuando se define un nuevo requisito se puede reutilizar una regla ya existente o crear una nueva.
En el caso de crear una nueva regla se debe dar de alta la misma definiéndola en un conjunto de tablas que se detallan a continuación. Se deben ejecutar los inserts en las siguientes tablas:

Tabla Observaciones
sga_reglas Registro de la Regla
El dato de regla_tipo = 3 (Tipo Proceso)
IMPORTANTE: el id de la regla debe comenzar en 1000. El SIU se reserva los números del 1 al 999.
sga_reglas_parametros Se indica con qué parámetros se ejecuta la regla.
Para los casos donde el usuario que utiliza el requisito que contiene esta regla lleve parámetros, como por ejemplo la regla que controla si un módulo está cumplido teniendo una cierta cantidad de actividades aprobadas o habiendo obtenido una cantidad de créditos de materias aprobadas.
En este caso la regla tendrá dos parámetros:
Parametro 1: cantidad de actividades aprobadas
Parámetro 2: cantidad de créditos de materias aprobadas
sga_reglas_param_contexto Son los parámetros relacionados con los puntos de control donde se ejecutará el requisito que use la regla. Se indica a quién se le aplicará la regla (a qué alumno, sobre qué actividad, en qué fecha, etc..)
Los parámetros disponibles son los que estén definidos en la tabla par_puntos_control_parametros
sga_reglas_mensajes Se definirá el mensaje correspondiente según interfaz -> gestion /autogestion web / autogestion wap

Si se quieren mostrar datos de parámetros en el mensaje se deben insertar en orden creciente con el formato $nro_parametro$
Ejemplo: El alumno $1$ con legajo nro $2$ debe actualizar sus datos personales.
donde $1$ será reemplazado por el nombre del alumno y $2$ será reemplazado por el número de legajo
Si la regla tuviere parámetros, por ejemplo la regla que el alumno tenga x materias cursadas sin final, entonces ese parámetro puede mostrarse en el mensaje insertando %nro_parametro% (son los parámetros definidos en la tabla sga_reglas_parametros).
Ejemplo: El alumno $1$ ya superó la cantidad de actividades (%1%) cursadas sin final.
donde %1% será reemplazado por la cantidad de materias cursadas definida para el requisito que usa esta regla.

Para catalogar la regla, se debe crear un archivo por cada regla en la carpeta <path proyecto Guaraní>/personalizacion/BD/Datos/_nucleo/Controles/Reglas

Ejemplo: Encuestas de la Comisión
Archivo Regla_326_EncuestasComision.dca

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto
-- Versión: 3.0.0
-- Control: Que el alumno haya contestado las encuestas definidas para la comision
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario,  mensaje_validacion, php_clase)
   VALUES (326,
           3,
           'Encuestas Contestadas',
           'Que el alumno haya contestado todas las encuestas de la comisión',
           'Que el alumno haya contestado todas las encuestas de la comisión',
           'El alumno no contestó encuestas de la comisión',
           'regla_encuestas_comision');

-- Mensajes
-- $1$ = Nombre del Alumno
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not)
   VALUES (326, 1, 'El alumno $1$ tiene encuestas obligatorias de la comisión por contestar', 'El alumno $1$ contestó todas las encuestas de la comisión');
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not)
   VALUES (326, 2, 'Tenes encuestas de la comisión sin contestar', 'Contestaste todas las encuestas de la comisión');

-- Parametros

-- Parámetros de Contexto
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'alumno');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'actividad');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'comision');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'fecha');


Crear el archivo php que contiene la clase que corresponde a la regla

El archivo se debe guardar en <path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas, hereda de la clase regla e implementa el método validar el cual realizará la validación.
Completar el arreglo de clases del archivo <path proyecto Guaraní>/personalizacion/php/guarani_autoload_clases_nuevas.php.
Ejemplo:

'regla_alumno_no_sancionado' => 'nucleo/_lib/reglas/regla_alumno_no_sancionado.php'

Ejemplo:

<?php
class regla_alumno_no_sancionado extends regla
{
        function validar()
        {
           $esta_sancionado = guarani::co('co_personas')->persona_sancionada($this->get_parametro('persona'));
           return $this->resultado_final(! $esta_sancionado);
        }
}
?>

Agregar el requisito

El requisito puede darse de alta por sistema o ingresarse directamente a la base.
El tipo de requisito es el Proceso relacionado con actividades. (Nro 6)

Tablas involucradas:

Tabla Descripción
sga_requisitos Define el requisito identificando el tipo de requisito y la regla que contiene la lógica de lo que el requisito define.
IMPORTANTE: el id del requisito debe comenzar en 1000. El SIU se reserva los números del 1 al 999
sga_requisitos_validos Define, para el caso de requisitos usados como controles configurables, las acciones del sistema donde es válido el requisito.
Ejemplo: Inscripción a Actividades, Inscripción a Examenes, etc...
La tabla de acciones es sga_acciones
sga_requisitos_x_punto_control Para el caso de requisito de tipo "Procesos" define los puntos de control donde puede vincularse el requisito.

Configurar el requisito

Luego de asociar un requisito a una acción, el mismo está disponible para ser configurado. Hasta este momento el requisito aún no está activo en ninguna operación del sistema.
El usuario deberá agregar el requisito a la acción que corresponda por la operación Requisitos por Acción (Acciones del punto anterior).
Una vez agregado estará disponible en las operaciones de la acción seleccionada permitiendo activar/desactivar el control, indicar cómo actúa el mismo y para qué interfaces del sistema estará activo. Es en esta operación donde el requisito se podrá configurar por niveles (Para toda la institución, por Responsable Académica, por Tipo de Propuesta, por Propuesta o por Plan de estudios).

Tablas involucradas:

Tabla Descripción
sga_requisitos_grupos Aquí se registran los diferentes grupos de configuración de un requisito en una acción.
sga_requisitos_accion Asocia al requisito en las acciones del sistema.
sga_requisitos_aplanado Se registra cada requisito para cada versión de plan de estudios que está alcanzado segun la configuración del mismo en una acción
sga_requisitos_conf_x_oper Asocia al requisito a las diferentes operaciones de la acción a la cual se asoció. Aqui se configura el estado del requisito en la operación en cada interfaz del sistema y la forma en que actúa el mismo.

Probar la regla desde el sistema

En el sistema existe una operación para probar las reglas usadas en los requisitos.
Para acceder a esta operación se debe ingresar por el editor de Toba.
Alli se debe seleccionar la solapa Operaciones y acceder a la operación Raiz de Proyecto >> Pruebas >> Reglas.
En esa operación se podra seleccionar la regla que se desea probar, la interfaz (gestion / autogestion) y dependiendo de la regla se solicitan los parámetros que la regla necesita.

Ejemplo

Objetivo:

  • Crear un nuevo requisito para correlativas que verifique que el alumno haya aprobado x cantidad de actividades de 1er año.
  • Dejar libre la definición de cantidad de actividades aprobadas que se le requerirá al alumno dependiendo de a qué atividad se le agrega este requisito como correlativa.

Alta de la regla

Definimos la regla que se utilizará para el requisito que se necesita agregar en las correlativas de alguna actividad.

Archivo Regla_1300_ActividadesAprobadas1erAnio.dca

INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario,  mensaje_validacion, php_clase)
   VALUES (1300,
           3,
           'Tener aprobadas n actividades de 1er año',
           'Que el alumno tenga aprobadas n actividades de 1er año',
           'Que el alumno tenga aprobadas n actividades de 1er año',
           'El alumno no aprobó la cantidad de %1% actividades de 1er año',
           'regla_actividades_aprobadas_1er_anio');

-- Mensajes
-- $1$ = Nombre del Alumno
-- %1% = Cantidad de actividades aprobadas de 1er año
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not)
   VALUES (1300, 1, 'El alumno $1$ no tiene aprobadas al menos %1% actividades de 1er año', 'El alumno $1$ aprobó al menos %1% actividades de 1er año');
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not)
   VALUES (1300, 2, 'Debés tener aprobadas al menos %1% actividades de 1er año', 'Aprobaste al menos %1% actividades de 1er año');

-- Parametros de la regla.
INSERT INTO sga_reglas_parametros (regla, parametro, etiqueta, tipo_de_dato, orden, valor_desde, valor_hasta)
   VALUES (1300,'actividades', 'Actividades aprobadas de 1er año', 'E', 1, '1', '100');

-- Parámetros de Contexto
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'alumno');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'actividad');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'fecha');


Crear el archivo php de la regla

Se crea el archivo <path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas/regla_actividades_aprobadas_1er_anio.php
Se completa el arreglo de clases del archivo <path proyecto Guaraní>/personalizacion/php/guarani_autoload_clases_nuevas.php con:

    'regla_actividades_aprobadas_1er_anio' => 'nucleo/_lib/reglas/regla_actividades_aprobadas_1er_anio.php'

Archivo: regla_actividades_aprobadas_1er_anio.php

 <?php
 class regla_actividades_aprobadas_1er_anio extends regla
 {
    function validar()
        {
        // Obtiene los parámetros
        $alumno = $this->get_parametro('alumno');
        $cant_minima_materias_aprobadas = $this->get_parametro('actividades');
 
        // Recupero cantidad de materias aprobadas de primer año por el alumno
        $cant_materias_aprobadas_1er_anio = guarani::co('co_alumnos_XXX')->get_cantidad_materias_aprobadas($alumno, 1);

        // Verifico si llegó al minimo de materias aprobadas
        $resultado = $this->resultado_final($cant_materias_aprobadas_1er_anio < $cant_minima_materias_aprobadas);

        if (! $resultado) {
          // No llegó al mínimo requerido de actividades aprobdas de 1er año.
          // Seteo los parámetros del mensaje (Los parámetros $x$)
          // El parámetro de la regla "actividades" se setea automáticamente (%1%).
          $nombre_alumno = toba::consulta_php('co_alumnos_XXX')->get_alumno_nombre($alumno);

          $this->set_parametros_mensaje_validacion(array($nombre_alumno), true);
        }
        // Devuelvo el resultado del control
        Return $resultado;
     }
 }
 ?>

Archivo: co_alumnos_XXX.php (clase de consulta personalizada, donde XXX es el nodo de institución otorgado por el SIU)

    .....
    function get_cantidad_materias_aprobadas($alumno, $anio_cursada)
    {
      // Cantidad de actividades aprobadas de 1er año del Plan del Alumno.
      $sql = "SELECT count(*) as cant_aprobadas
                FROM sga_alumnos as a,
                     vw_elementos_plan as ep,
                     vw_hist_academica as v
               WHERE a.alumno = $alumno
                 AND ep.plan_version = a.plan_version
                 AND ep.anio_de_cursada = $anio_cursada
                 AND v.alumno   = a.alumno
                 AND v.elemento = ep.elemento
                 AND v.estado = 'A'
              "
;
      // Ejecuto la consulta en la base  
      $rs = guarani_db::consultar_fila($sql);

      // Retorno el resultado
      return $rs['cant_aprobadas'];
    }
   .......

Alta del requisito

El requisito puede darse de alta generando los inserts en las tablas relacionadas con requisitos.
Para ello se generará un archivo para catalogar el requisito personalizado asociando la regla creada en el anterior.

Archivo: Requisito_1300_ActiviadesAprobadas1erAnio.dca

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Tabla: sga_requisitos, sga_requisitos_validos
-- Versión: 3.7.0
-- Control: Verificar si el alumno tiene aprobada n actividades de 1er año
--
-- Usa la regla nro 1300 - Tener aprobadas n actividades de 1er año
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla)
   VALUES (1300, 6, 'Tener aprobadas n actividades de 1er año', NULL, 'Tener aprobadas n actividades de 1er año', 1300);

-- En el caso que el requisito sea usado como un control configurable, se debe definir para que acciones se usa el requisito:
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 1300); -- Inscripción a Cursadas
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 1300); -- Inscripción a Examen

-- En el caso que el requisito sea usado como un control configurable, se debe definir en qué puntos de control se puede vincular el requisito:
-- INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (1, 1300, 5); -- Persona - Operación

Puntos de control

En el caso que quieran agregar nuevos puntos de control, comenzar desde el 1000.
El SIU se reserva los números del 1 al 999.