Buenos días, agregamos una nueva regla para una UA y al momento de ejecutar la misma nos tira el error:
“No se encuentra el parámetro de contexto: elemento.”
La regla se maneja con 2 parámetros de contexto: Alumno y Elemento por lo tanto en la misma le agregamos el punto de control 3. Al momento de ejecutar la regla mediante la operación, ésta valida de manera perfecta.
La regla debe verificar que el alumno posea un promedio mayo a 6.5 para poder inscribirse en una materia. El alumno se pudo inscribir pero al momento de acceder a Cursadas » Actas » Generar Actas de Promocionales Al seleccionar un estudiante nos muestra el error
“No se encuentra el parámetro de contexto: elemento.”
Voy a php, agrego un echo y me muestra que los dos parámetros los estoy recuperando sin problemas y devuelvo True a la regla para que siga con la ejecución, no termino de entender el porque del error que genera el Guarani.
No comprendo qué parte de la regla es la que genera el error.
Les paso el archivo de log.
Podes adjuntar los datos para la creacion del requisito y esa regla?
El requisito lo tenes que haber creado en el punto de control 3 (Alumno - Actividad) que se usa en las operaciones del módulo de cursadas:
Este punto de control recibe: alumno , elemento, fecha, plan_version
Podes tomar como ejemplo el requisito nro 65.
INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (3, 1008, 99);
Luego agregarlo en la accion Cursadas:
INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 1008); -- Cursadas
Luego, a la regla que implementa ese requisito, supongamos que la regla tambien tiene el id 1008, debes registrar estos datos de los parametros del punto de control:
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 1008,'alumno');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 1008,'elemento');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 1008,'plan_version');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 1008,'fecha');
Seguramente agregaste el requisito en otro punto de control que no espera recibir el dato “elemento”
Alejandro, gracias por tu respuesta. Te adjunto los datos requeridos, lo raro es que en la tabla sga_requisitos_x_punto_control tengo que el punto de control asociado es el 1. En las capturas que te mande podrás ver que el relacionado es el 3, por lo que no entiendo porqué aparece el 1.
Como le había comentado a Florencia, cuando yo ejecutaba el control de Reglas desde el toba editor, este funcionaba de manera correcta.
Ahora voy a hacer un update en la tabla mencionada cambiando el 1 por el 3.
Sacalo del punto de control 1, por eso te da error del parámetro “elemento”, porque este parametro no existe en ese punto de control nro 1 Los parametros de este punto son persona y operacion.
Agrega el requisito en el punto de control 3 como te indique en el mensaje anterior, ademas de registrar el parámetro fecha y plan_version. Si es que se valide este requisito en cualquier inscripción a actividad.
¿Que sucede con las actividades de primer año para los ingresantes, tienen controlado que este requisito no se evalúe? O solo se evalúa cuando el alumno al menos tenga una actividad aprobada; sea por promoción, examen final o equivalencia?
Ya hicimos el cambio del punto de control. En cuanto a lo que planteas sobre los alumnos de primer año, estos no deberían poder inscribirse dado que es una materia del último año.
La regla la dimos de alta mediante la operación Administrar Requisitos, y como te mandé en las capturas estaba asociado el punto de control 3, no entiendo porque se registro el 1. Las reglas se deberían dar de alta desde los INSERT en la base de datos o debería ser lo mismo?
Ya hicimos el cambio del punto de control. En cuanto a lo que planteas sobre los alumnos de primer año, estos no deberían poder inscribirse dado que es una materia del último año.
El problema es que al estar asociado este requisito a un punto de control, este requisito se va a evaluar para todas las materias en las que se inscriban los alumnos; a menos que dentro de la regla que implementa este requisitos estés evaluando si la actividad es de 1er año no evaluar y que salga con resultado satisfactorio. Porque de no hace esta diferenciación no va a permitir ni inscribir a la 1er materia a un ingresante.
Si el requisito lo definicas como una correlativa solo sobre esa/s materia/s del ultimo año, entonces se va a controlar dentro de las correlativas de esas materias y asi no habrá problemas, pero NO debes configurarlo en ningun punto de control.
La regla la dimos de alta mediante la operación Administrar Requisitos, y como te mandé en las capturas estaba asociado el punto de control 3, no entiendo porque se registro el 1. Las reglas se deberían dar de alta desde los INSERT en la base de datos o debería ser lo mismo?
Reabro el planteo, ya que hemos inactivado la regla para la operación “Generar Actas de Promociones” y el error ha vuelto a aparecer.
En el log nos aparece
[DEBUG][guarani] SQL con perfil de datos: select get_regla_mensaje(‘1008’, ‘’) as mensaje
[DEBUG][guarani] SQL con perfil de datos: SELECT sga_reglas.regla,
sga_reglas_param_contexto.parametro,
par_puntos_control_parametros.tipo_de_dato,
par_puntos_control_parametros.descripcion
FROM sga_reglas,
sga_reglas_param_contexto,
par_puntos_control_parametros
WHERE sga_reglas.regla = ‘1008’
AND sga_reglas_param_contexto.regla = sga_reglas.regla
AND par_puntos_control_parametros.parametro = sga_reglas_param_contexto.parametro
;
[ERROR][guarani] No se encuentra el par.metro de contexto: elemento.
[ERROR][guarani] No se encuentra el par.metro de contexto: elemento.
[ERROR][guarani] No se encuentra el par.metro de contexto: elemento.
[ERROR][guarani] No se encuentra el par.metro de contexto: elemento.
[ERROR][toba] guarani_error: No se encuentra el par.metro de contexto: elemento.
[TRAZA]
regla_nucleo->set_parametros_contexto
Archivo: /usr/local/proyectos/guarani/php/nucleo/_lib/reglas/regla_nucleo.php, lInea 117
lo que no entendemos es porque si la regla está inactiva para la operación, es controlada
Esperamos sus comentarios
Lo desactivaron desde “REQUISITOS » CONFIGURAR REQUISITOS POR OPERACIÓN”? Pueden adjuntar una captura?
Quizás siga estando en los dos puntos de control (1 y 3)?
SELECT * FROM sga_requisitos_x_punto_control WHERE requisito IN (select requisito from sga_requisitos where regla = 1008);
¿Es un requisito que crearon Uds?
¿Que parametros necesita la regla de ese requisito? Porque de esto depende en que punto de control asocian el requisito.
lo desactivamos desde “Configurar requisitos por operación”, (adjunto imagen imagen1)
El select que hice correr devuelve lo siguiente (adjunto imagen imagen2)
Creamos nosotros el requisitos, los parámetros son alumno, actividad
Saludos
La regla debe verificar que el alumno posea un promedio mayo a 6.5 para poder inscribirse en una materia. El alumno se pudo inscribir pero al momento de acceder a
Cursadas » Actas » Generar Actas de Promocionales Al seleccionar un estudiante nos muestra el error
“No se encuentra el parámetro de contexto: elemento.”
Este error lo da cuando agregan un alumno al acta de promoción desde la opción “Otros Alumnos”, es decir alumnos que no están inscriptos en la comisión?
Nos envían los resultados de ejecutar las siguientes consultas SQL sobre la base de datos de negocio de Guaraní?
SELECT * FROM sga_reglas WHERE regla > 1000;
SELECT * FROM sga_reglas_parametros WHERE regla > 1000;
SELECT * FROM sga_reglas_param_contexto WHERE regla > 1000;
SELECT * FROM sga_requisitos WHERE requisito > 1000;
SELECT * FROM sga_requisitos_validos WHERE requisito > 1000;
SELECT * FROM sga_requisitos_x_punto_control WHERE requisito > 1000;
Parece ser correcta la configuración.
Pueden enviar los logs completos y no sólo la porción donde está el mensaje de error?
Además pueden ejecutar los comandos “svn info” y “svn status” sobre la carpeta de la instalación y adjuntar el resultado?
Pablo, la regla es la nro 1008 (UNT - Verifica Promedio PPA - Plan2008 - ARQ | Que el alumno tenga un promedio >= a 6.50).
Esto lo configuraron en el punto de control 3 que recibe el dato de la actividad (elemento) porque necesitan controlar solo a algunas actividades, no?
¿Por algún motivo no no configuraron este requisito como una correlativa a esas actividades?