G2/ConsideracionesTecnicas/ControlesConfigurables/ejemplo

CÓMO AGREGAR CONTROLES A UNA OPERACIÓN

Implementación

Resultado de ejecución de puntos de control

La ejecución de los controles de un punto de control devuelve uno de los siguientes resultados:

Resultado Descripción
A Todos los controles que se ejecutaron tuvieron resultados satisfactorios.
R Alguno de los controles que se ejecutaron no cumplió lo requerido, la operación debe mostrar el control que falló estaba configurado como ESTRICTO; quedarse en esa ventana para que el usuario decida adonde ir.
P Alguno de los controles que se ejecutaron no cumplió con lo requerido, pero estaba configurado como ADVERTENCIA y el usuario optó por continuar.

Configuración de controles por operación del menú del sistema

El Modo en que puede configurarse un control/requisito en una operación del sistema es:

Modo Descripción
ESTRICTO Indica que si el control falla la ejecución de la operación no puede continuar.
ADVERTENCIA En el caso de que falle el control el usuario podrá parar o continuar con la operación.
En algunos casos el continuar con el proceso podría implicar cambios en la lógica de la operación donde se ejecute el control.
MENSAJE Permite enviar un mensaje al usuario en el caso de que el control falle. Esto no cambia la lógica de la operación. El usuario solo continúa luego de ver el mensaje correspondiente al control que falló y estaba configurado de este modo.

Continuar / Parar la ejecución de controles

El sistema permite parar la ejecución de los controles ante el primer control que falle en/los punto/s de control/es que fueron definidos para ejecutarse en el mismo instante o poder correr todos los controles, ir registrando la información de los controles que fallan, y al finalizar la ejecución de todos los controles mostrar los mensajes correspondientes en el caso que algún control haya fallado.

Agregar un nuevo punto de control

Luego de realizar la incorporación de los puntos de control en las tablas involucradas explicadas anteriormente en este instructivo, se debe proseguir corriendo el siguiente comando para generar la compilación de los puntos de control.

1) Dirigirse a la consola, cd <dir_proyecto>/bin

2) Ejecutar el comando generar_puntos

	> ./guarani generar_puntos

Éste compila los puntos de control, generando automáticamente un archivo php correspondiente al código de dicho punto de control en modelo/controles/puntos_control

Agregar un control a una Operación

La clase 'proceso_control' ( modelo/controles/proceso_control.php ) contiene los métodos que se utilizarán para el manejo de los controles. A continuación se explicará cómo agregar un control (con sus respectivos puntos de control) a una operación.

1) Crear proceso de control

En modelo/transacciones/<nombre_operacion>.php deben especificarse los puntos de control que se agregan a la operación. Por ejemplo, en la operación de Solicitud de Certificados, se crea un control inicial, el cuál tiene dos puntos de control:

	function control__inicial()
	{
		$proceso = $this->nuevo_proceso_control();
		//(Persona - Operación) - Una Persona elige una operación
		$proceso->agregar_punto(2, array('nro_inscripcion' => $this->nro_inscripcion,
						 'operacion' => $this->operacion));
		//(Alumno - Operación) - Un Alumno elige una operación
		$proceso->agregar_punto(3, array('carrera' => $this->carrera,
						 'legajo' => $this->legajo,
						 'operacion' => $this->operacion));
		return $proceso->ejecutar();
	}

En resumen, la forma de agregar puntos de control es la siguiente:

1) Se crea una función que represente el proceso de control.

2) Dentro de la función se instancia un nuevo proceso de control, de la forma:

$proceso = $this->nuevo_proceso_control();

3) A dicho proceso, deben agregarse puntos de control. Tal como dice el ejemplo, de la siguiente forma:

$proceso->agregar_punto(<nro_punto_control>, <array_parametros_punto_de_control>);

4) La función retorna la ejecución de dichos puntos de control:

return $proceso->ejecutar();

Una vez que se tiene creada la función con el proceso de control, el mismo se puede utilizar desde los eventos que requieren dispararlo.

2) Utilizar proceso de control

Como el proceso de control es una función creada en el modelo, debe agregarse en el controlador de la operación ( operaciones/<nombre_operacion>/controlador.php ) las funciones de acceso al modelo, para poder acceder a los controles mediante las mismas.

Siguiendo con el ejemplo, en la operación Solicitud de Certificados:

1) Dirigirse al controlador de la operación ( operaciones/solicitud_certificados/controlador.php )

2) Se crea la función de acceso al modelo para el control requerido:

	protected function modelo__control__inicial()
	{
		$mensajes = $this->modelo()->control__inicial();
		$this->acum_mensajes($mensajes);
	}

3) Se utiliza la función de acceso al modelo para disparar el control creado dentro del evento deseado.

Siguiendo el ejemplo de Solicitud de Certificados, 'control_inicial' se usará en la acción index para esa operación:

	function accion__index()
	{
		$hubo_error = $this->exec_fn_modelo('control__inicial');
		$mensajes = $this->get_var('mensajes');
		if (! empty($mensajes)) {
            $this->vista()->set_hay_mensajes(true);		
        }
		$this->vista()->set_error($hubo_error);
	}

La función exec_fn_modelo, retorna si hubo error o si se ha podido acceder correctamente al modelo. Para ello, es conveniente hacer el manejo de errores, obteniendo los mensajes que generó la función. Para el manejo de errores, debe agregarse el USE: use siu\extension_kernel\controlador_errores_control;