paddoc

PROPÓSITO

  • lo relacionado con PADDOC

TEST DE BASE DE DATOS

  • para probar que funciona la conexión con base de datos
https://paddoc.aragon.es/eppla_adm/test.jsp
  • tiene que dat [ORACLE DB] - [OK] y no KO

DATOS USUARIOS

  • para sacar los datos de los usuarios
-- DESDE GEB
GRANT SELECT ON GEB_USUARIOS TO EPCNT;
-- DESDE EPCNT
CREATE TABLE USUARIOS AS 
SELECT * FROM EPCNT_ADM_PERFIL_USUARIO PER, GEB.GEB_USUARIOS USU 
WHERE PER.CNT_ID_USUARIO = USU.GEB_ID_USUARIO
AND CNT_ID_PERFIL <> 'PERFIL_COMISION' ORDER BY CNT_ID_USUARIO;
-- DESDE GEB
REVOKE SELECT ON GEB_USUARIOS FROM EPCNT;
  • salen 86 quitando los de la comisión
  • salen 139 en total
  • aruizcer tiene usuario en EPCNT_ADM pero no tiene datos en GEB
  • paddoc17!

JAVA 1.8

  • empezamos a migrar estas aplicaciones a java 8 cuando se dan problemas de seguridad con log4j
  • AST crea un cluster nuevo para estas aplicaciones
Se ha creado el cluster DES_OFM_CLUSTER_EDU_2 y el manejado EDU_21_2 para albergar estas aplicaciones en java 1.8

NUEVO DISEÑO CON BOOTSTRAP

REINICIAR PARÁMETROS

REINICIAR PARÁMETROS EN TODOS LOS NODOS

  • para reiniciar los parámetros en todos los nodo se usa la pantalla EPDTM/Datos Maestros/Gestión de Aplicaciones/<Nombre aplicación>/
    • en esta pantalla se ven los nodos la ip y la fecha de inicio
    • al aceptar se pasa a otra pantalla donde da más información
    • pero no veo de donde se lanza el reinicio de parámetros
    • tiene que salir otra pantalla con OK

DESARROLLO APUNTANDO A LOCAL

  • para las aplicaciones públicas
    • para que desde despaddoc te lleve a localhost
    • hay que cambiarlo en la tabla EPDTP_APLICACIONES del usuario EPDTP@DESEDUCA y no en la tabla GEB_APLICACIONES de GEB
  • para las aplicaciones privadas
    • se hace a traves de la Administración general / Aplicaciones

PONER UNA APLICACIÓN COMO PRIVADA

  • se gestiona entrando en geb EPDTP / administración / aplicaciones
    • se desmarca el check pública
      • y se da acceso a los usuarios que se quiera
  • de esa forma se queda como privada
    • ya no sale el icono en la pantalla de la lista de aplicaciones
    • se puede abrir desde gestión por fechas dado que en la lista de aplicaciones solo la ven los que están en la lista de usuarios privados de esa aplicación que ahora no es pública

CREAR NUEVO USUARIO

  • correo de Paco Coloma para dar de alta a un nuevo usuario
  • Necesito que deis acceso a SIRHGA y a PADDOC a un nuevo compañero de secundaria.
  • Pedro Pinto García, DNI 38854468Q
  • Usuario: ppinto@aragon.es

AUTENTICACIÓN PUENTEADA CUANDO GEB NO FUNCIONA

  • desde el cambio para poder cambiar de aplicación sin necesidad de nuevo login es necesario modificar esta utilidad
//Se verifica si el usuario tiene acceso a la aplicación
/*   	if (!controlAccesoBL.verificarTokenBL(controlAcceso))
{ 
addActionError (getText("error.start.noAccesoAplicacion")); 
return ActionSupport.ERROR;
}*/

//Se obtienen todos los datos del usuario y se almacenan en sesión
//Usuario usuario = usuarioBL.obtenerUsuarioBL (idUsuario);	
Usuario usuario = new Usuario();
usuario.setIdUsuario("jiranzo");
usuario.setApellido1("GEB_NO_FUNCIONA");

USUARIO PRUEBAS

ENTRADA PARA EPDTP

  • para hacer pruebas directamente entrando en la aplicación sin necesidad de pasar por la autenticación de PADDOC en la parte donde se accede desde EPDTP
--DESDE EPDTP en desarrollo
Insert into EPDTP_CONTROL_USUARIOS
   (DTP_NIF, DTP_ID_APLICACION, DTP_TOKEN, DTP_FECHA_INICIO_ACCESO, DTP_FECHA_FIN_ACCESO)
 Values
   ('76924820D', 8, '1', TO_DATE('04/05/2019 10:38:29', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('04/05/2029 10:39:29', 'MM/DD/YYYY HH24:MI:SS'));
COMMIT;

ENTRADA PARA GEB

  • para hacer pruebas directamente entrando en la aplicación sin necesidad de pasar por la autenticación de PADDOC en la parte donde se accede desde GEG
  • o la parte de gestión
--DESDE GEB en desarrollo
Insert into GEB_CONTROL_USUARIOS
   (GEB_ID_USUARIO, GEB_ID_APLICACION, GEB_TOKEN, GEB_FECHA_INICIO_ACCESO, GEB_FECHA_FIN_ACCESO)
 Values
   ('jiranzo', 49, '1', TO_DATE('04/05/2019 10:38:29', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('04/05/2029 10:39:29', 'MM/DD/YYYY HH24:MI:SS'));
COMMIT;
  • JIRANZO

  • un SQL al que se le pase un usuario y le ponga el token 1 en todas las aplicaciones o en una de ellas

    • el SQL en el proyecto EPDTP y en GEG llamado accesoUsuarioPruebas.sql
  • para tener una lista de enlaces con los usuarios de una aplicación y el perfil que tienen se tiene que sacar desde cada aplicación

SELECT '* [USUARIO-'||PLA_ID_USUARIO||'-'|| PLA_ID_PERFIL||'-PRIMARIA-'||PLA_PRI||'-SECUNDARIA-'||PLA_SEC||DECODE(NVL(PLA_PROVINCIA,'--'),'--','','-PROVINCIA-'||PLA_PROVINCIA)||'](localhost:8080/eppla_adm/start.action?idUsuario=jiranzo'||'&'||'idAplicacion=54'||'&'||'token=1)' URL FROM EPPLA_ADM_PERFIL_USUARIO ORDER BY PLA_ID_PERFIL, PLA_PRI, PLA_SEC, PLA_PROVINCIA

DIFERENCIAL

  • con la excel H:\ecinform\Aplicaciones\Paddoc\Usuarios-Gestores\usuarios-gestores.xls
  • con el usuario geb la primera parte
  • el resto con cada aplicacion
  • falla con EPSOF
INSERT INTO EPSOF_ADM_PERFIL_USUARIO (SOF_ID_USUARIO, SOF_ID_PERFIL, SOF_ID_PROVINCIA) VALUES ('ppinto', 'PERFIL_SSPP', '50'); commit;

EPLST

CREACIÓN DE LISTAS DESDE EPCNV

  • si la lista no existe da un error y el proceso se queda en ejecución
  • se ven los errores en EPLST y EPCNV
  • hay que crear la lista desde EPLST
  • hay que parar el job usando esta opción del Toad

PROYECTO NUEVO

  • a partir de uno reciente como epsof_adm para empezar con epcnt_adm
  • con la ayuda de David siguiendo el documento H:\ecinform\Aplicaciones\Aplicaciones Web - Raul\Instalacion Aplicacion EclipseEE.doc monto la aplicación copiando el contenido de EPSOF creando un proyecto nuevo y copiando en el los fuentes de epsof_adm
  • con la búsqueda selecciono todas las referencias a epsof_ y las cambio por epcnt_
  • ademas es necesario renombrar los archivos de properties con el nombre del proyecto
  • ademas de esta guía
  • poner los datos en la configuración del servidor C:\Servidores\Apache Tomcat 7.0.27\conf en los archivos context.xml, server.xml donde tiene que resolver el nombre de la base de datos

PROPERTIES

  • copiar los properties en C:\Servidores\Apache Tomcat 7.0.27\webapps\properties\epcnt_adm pues es donde los toma el servidor para arrancar

    • son los que están en la aplicación en C:\proyectos\epcnt_adm\src\conf\properties\des para desarrollo
  • el descriptor de despliegue tiene que estar en C:\Servidores\Apache Tomcat 7.0.27\conf\Catalina\localhost

  • pero resulta que no es un proyecto en marcha dado que lo interesante era la parte pública o sea epsof así que da algunos fallos que tengo que corregir

    • tengo que poner el archivo applicationContext-WS.xml que da problemas si no esta
    • falta un imPBL de un clase en solicitudes y eso al usar autowired da problemas antes de arrancar
  • ahora da problemas de sql que son los normales

  • la contraseña 1234 documentar donde se usa para sacar la información del usuario en geb

  • copiar lo que hay en el documento y dejar una guía completa más clara solo del montaje del proyecto

APLICACION NUEVA EN BASE DE DATOS

  • se da de alta mediante la aplicación geb/Administración General

    • copiar lo que tenga otra parecida tanto a nivel de aplicación como de usuarios y grupo
      • Grupos de la Aplicación
        • 9 - Aplicaciones de Personal Docente
    • en la configuración de la aplicación poner
      • Uso Interfaz Si
      • Uso Servicios Web Si
  • hay que dar de alta al usuario en la propia aplicación

INSERT INTO EPCNT_ADM_PERFIL_USUARIO (CNT_ID_USUARIO, CNT_ID_PERFIL, CNT_PROVINCIA, CNT_PRI, CNT_SEC) VALUES ('jiranzo', 'PERFIL_ADMIN', '', 'S', 'S');

CAMBIOS EN PADDOC

  • chuleta de Raúl
-- chuleta de cambios de Raúl
cambiosVersion.txt

----------------------------
-- LOG
----------------------------

Sustituir las líneas:
	static Logger logger = (Logger) LogManager.getLogger(NombreAplicacionCTS.APP_ID);
por:
	static Logger logger = (Logger) LogManager.getLogger(<nombreClase>.class);


Modificar el fichero de configuración. El de producción es un poco diferente ya que no tiene la salida por consola
Es necesario copiar los properties en C:\Servidores\Apache Tomcat 7.0.27\webapps\properties\<nombre_aplicacion> copiados de C:\Proyectos\<nombre_aplicacion>\src\conf\properties


Modificar el fichero del listener para la nueva configuración. Sobran las siguientes líneas.
		    //Se inicializa el log
		    Logger loggerPersonal = (Logger) LogManager.getLogger(ApplicationListener.class);
			PersonalStoredProcedure.setLogger(loggerPersonal);
			EadmonBase.setLogger(loggerPersonal);
		
----------------------------
-- DAL
----------------------------		

Cambiar los ficheros DAL	

--cuando se trata de lista
//Se ejecuta la sentencia 
Map<String, Object> outputs = super.execute(inputs);

//Se obtiene el resultado
	return (List<ActoCandidatoColectivo1>) obtenerRegistrosCursor(FUN_STRING, inputs, outputs);

--cuando se trata de un elemento
//Se ejecuta la sentencia 
Map<String, Object> outputs = super.execute(inputs);

//Se obtiene el resultado
	return (ActoCandidatoColectivo1) obtenerRegistroCursor(FUN_STRING, inputs, outputs);

--cuando se trata de un boolean
//Se ejecuta la sentencia
Map<String, Object> outputs = super.execute(inputs);

//Se obtiene el resultado
return obtenerRegistroBoolean(FUN_STRING, inputs, outputs);  

--cuando se trata de un entero
//Se ejecuta la sentencia
Map<String, Object> outputs = super.execute(inputs);

//Se obtiene el resultado
	return obtenerRegistroInt(FUN_STRING, inputs, outputs); 

--cuando se trata de un String
//Se ejecuta la sentencia
Map<String, Object> outputs = super.execute(inputs);

//Se obtiene el resultado
return obtenerRegistroString(FUN_STRING, inputs, outputs); 

----------------------------
-- QUITAR INPUT STREAM Y DEJAR byte[]
----------------------------

- Clases ent.

- Rowmapper 

	import org.apache.commons.io.IOUtils;


	public byte[] mapRow(ResultSet rs, int argRowNum ) throws SQLException 
    { 

    	byte [] fichero = null;
    	try
    	{
    		fichero = IOUtils.toByteArray(rs.getBinaryStream("OPO_DOCUMENTO"));	
    	}
    	catch (Exception ex)
    	{
    		
    	}
    	
    	return fichero;
    	    	    	    	       	
    }  

- Añadir

	    		String pathFichero = fichero.getAbsolutePath();
	    		File file = new File(pathFichero);
	    		ByteArrayInputStream bais = new ByteArrayInputStream(FileUtils.readFileToByteArray(file));		        
		        oposicionTribunalPrealegacionQueja.setDocumento(IOUtils.toByteArray(bais));
			
- Descargar

		byte[] ficheroBytes = solicitudDocumentoBL.descargarSolicitudDocumentoBL(sesionDatosSolicitud.getNif(), sesionDatosSolicitud.getCodigo(), idDocumento);	
		
		if (ficheroBytes == null)		
		{
    		addActionError (getText("error.error")); 
    		return ActionSupport.ERROR;
		}
		
		nombreFichero = solicitudDocumento.getNombre();		        
		fileInputStream = new ByteArrayInputStream(ficheroBytes);
		
- Previsualizar

		try {
						
			byte[] ficheroBytes = meritoDocumentoBL.descargarMeritoDocumentoBL(sesionDatosPersona.getDatosPersonales().getNif(), idMerito, idDocumento);
			
			if (ficheroBytes == null)
			{
	    		addActionError (getText("error.error")); 
	    		return ActionSupport.ERROR;
			}
			
			inputStream = new ByteArrayInputStream(ficheroBytes);
		
			byte[] buffer = new byte[1024];
			servletResponse.setContentType(UtilValidaciones.obtenerContentTypeFichero(oposicionSolicitudDocumento.getNombre()));
			
			ServletOutputStream bOut = servletResponse.getOutputStream();
			int length=-1;
            while ((length = inputStream.read(buffer)) != -1)	
            {
            	bOut.write(buffer, 0, length);
            }
            
            inputStream.close();
    		bOut.flush();
    		bOut.close();
			
		}
		catch (Exception e) 
		{
			
		}

LOGS

  • para descargar los logs de una aplicación se puede usar la pantalla de administración con la ventaja de que se puede modificar esa ruta por lo que se puede bajar los logs de otra aplicación distinta a la que has accedido
  • es necesario hacerlo en los 4 nodos pues el log es distinto
    • para cambiar de nodo lo mejor es cambiar de navegador
    • desde c:\proyectos\ast<nombre-proyecto>\ se puede cambiar a la rama logs
  • para usar los logs hay que hacer un checkout a la rama logs
    • luego modificar el texto del archivo logs.txt con la fecha y hacer un commit con el mensaje logs-1-pro para que envíen los logs de producción del día anterior
    • llega un correo a la cuenta asociada con un enlace a un fichero comprimido que hay que cambiar de extensión para poderlo descomprimir
      • llegan los logs de los nodos que se usan

IDENTIFICACIÓN Y ADMINISTRACIÓN ELECTRÓNICA

  • Nosotros tenemos identificación con el usuario siempre con Clave Permanente o certificado.
  • En concurso de traslados y oposiciones se firma con sello de órgano, lo cual sé que está mal pero es lo que hay si queremos que funciona tal y como está ahora la Administración Electrónica.
  • En el resto de aplicaciones que tienen un plazo de presentación tan corto no se firman porque da errores cada dos por tres y es inviable.
  • Registro electrónico se hace bien en concurso de traslados y oposiciones y en el resto les mostramos un resguardo (lo que sería su apartado 2).

PROBLEMAS

CHECKBOX NO SE MARCA

  • con los nuevos estilos que usan bootstrap
out.println("	<input type='checkbox' name='tipoSolicitud' value='" + presolicitudTipo.getIdTipo() + "' id='presolicitudTipo_" + presolicitudTipo.getIdTipo() + "' class='form-control-custom' >");					
out.println("	<label for='presolicitudTipo_" + presolicitudTipo.getIdTipo() + "'><span style='font-weight: 400;'>" + presolicitudTipo.getDescripcion() + "</span></label>");		
  • realmente lo que se ve es el label y no el checkbox como se puede comprobar si se usa las dev tools y se quita la propiedad visibility y width lo que hace que se vea el checkbox
input.form-control-custom {
  visibility: hidden;
  width: 1px;
}
  • por eso si no coincide el id del checkbox y el label for todo se pinta bien pero no se deja marcar

FUNCIONA EN LOCAL Y NO EN DESEDUCA

  • para hacer las pruebas en local el parámetro RUTA_BASE_INFORMES se suele establecer a C:\Proyectos\epacf_adm\informes\
    • para probar la aplicación en el servidor de AST es necesario el cambio a /compartido/app/epacf_adm/informes/
    • tanto en la tabla EPACF_ADM_PARAMETROS como en EPACF_P_ADM_PARAMETROS
    • tengo que reiniciar los parámetros https://despaddoc.aragon.es/epacf/admProcessReiniciarParametros
  • esto se nota sobre todo al presentar la solicitud donde se generan informes y la ruta se saca del parámetro.

ORA-01002: RECUPERACIÓN FUERA DE SECUENCIA

  • se da al copiar el esquema de pro a pre por ejemplo
    • las secuencias tienen un contador distinto y eso es lo que provoca el error
    • por ejemplo la secuencia SQ_PROCESO_EJECUCION.NEXTVAL en EPREM cuando se usa para duplicar méritos en EPOPO por ejemplo
      • al tener un número que ya se ha usado provoca una violación de PK en la tabla de procesos
      • el error se extiende de EPOPO a EPREM y se ven trazas en las dos auditorias

Error 404–Not Found

Error 404--Not Found
From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:
10.4.5 404 Not Found

ERROR CL@AVE

  • error al usar clave para el login
  • en la parte pública al hacer login con Cl@ve
    • https://pasarela.clave.gob.es/Proxy2/ServiceProvider
Se ha producido un error...
error
javax.servlet.ServletException: es.clave.ApplicationSpecificServiceException
Por favor, reinténtelo de nuevo más tarde
Error al usar Cl@ve
  • en el escritorio la captura de pantalla errorClave.png

ERRORES DE SERVIDOR