3. Definición del proceso de migración de datos a Sedipualba:(3) Introducción a Web Services y estructuras de datos de Expedientes (1)

1. Introducción

En la Guía de Migración nos indica que para migrar bien los expedientes, debemos tener en cuenta que los siguientes datos están guardados en estructuras propias:

  • Interesados (Terceros) Ja visto en una entrada anterior como se importan, pero luego habrá que asignar los a un expediennte.
  • Expedientes (basados en procedimientos administrativos SIA)
  • Carpetas para alojar documentación
  • Documentos Electrónicos
  • Entradas de Registro
  • Requerimientos a interesados
  • Resoluciones Administrativas
  • Notificaciones
  • Pagos vinculados a expedientes (ej. Tasas, precios públicos, etc.)
  • Relación entre expedientes
Pero también existen estas estructuras no mencionadas que creo son importantes:
  • Entradas de histórico de expediente.
A parte de las estructuras anteriores, existe un catálogo de WS.

También se habla de la posibilidad de migración usando los WS que da la plataforma Sedipualba. En concreto las definiciones de WSDL son:
  • https://pre-dipualba.sedipualba.es/segex/wssegex.asmx?wsdl
  • https://pre-XXXXX.dipualba.sedipualba.es/segex/wssegex.asmx?wsdl -->OJO: Hay cambios!! siendo XXXXX el codigo ine de la población
  • https://pre-dipualba.sedipualba.es/sefycu/wssegra.asmx?WSDL
  • https://pre-dipualba.sedipualba.es/sefycu/wssefycu.asmx?WSDL
  • https://pre-dipualba.sedipualba.es/seres/Servicios/wsseresciudadano.asmx?WSDL
  • https://pre-dipualba.sedipualba.es/seres/Servicios/wsseresregistro.asmx?WSDL
  • https://pre-dipualba.sedipualba.es/wsdirectorio.asmx?WSDL
Las cuales llevan asociada páginas de documentacion muy completa en asmx:
  • https://pre-dipualba.sedipualba.es/segex/wssegex.asmx
  • https://pre-dipualba.sedipualba.es/sefycu/wssegra.asmx
  • https://pre-dipualba.sedipualba.es/sefycu/wssefycu.asmx
  • https://pre-dipualba.sedipualba.es/seres/Servicios/wsseresciudadano.asmx
  • https://pre-dipualba.sedipualba.es/seres/Servicios/wsseresregistro.asmx
  • https://pre-dipualba.sedipualba.es/wsdirectorio.asmx
Se van a analizar cada elemento con detalle

2. Acceso a los Web Services

Para acceder a los WS és necesario autenticarse. Para ello tal como se define en el Manual de Administrador, hay que tener en cuenta:
  • El usuario que realiza la llamada debe de tener permitido el acceso. Dicho acceso se concede desde el panel de administrador  en el apartado "usuarios del servicio web"
  • En la url https://pre-municipio.sedipualba.es/HashedPassword/ (donde municipio es el nombre del municipio tuyo) se explica con detalle el cáculo del password.
  • el algoritmo de generación de la contraseña, se puede hace con java:

package openadmin.utils;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Date;

public class SedipualbaUtils {

	public static String getModifiedPwd(String myPassword) throws NoSuchAlgorithmException {
		
		// 1. Obtener la fecha y hora en formato UTC
		SimpleDateFormat f = new SimpleDateFormat("yyyyMMddHHmmss");
                f.setTimeZone(TimeZone.getTimeZone("UTC"));
		String myUTCDate = f.format(new Date());

		// 2.Concatenamos el timestamp y la contraseña en texto claro
		String cadena = myUTCDate + myPassword;

		// 3. codificamos el resultado a UTF8
		byte[] bytes = cadena.getBytes(StandardCharsets.UTF_8);

		// 4. Obtenemos el hash en SHA-256
                byte[] encodedhash = MessageDigest.getInstance("SHA-256").digest(bytes);
// 5. codificamos el hash en base64 String b64String = Base64.getEncoder().encodeToString(encodedhash); // 6. Concatenamos el timestamp con eñ hash en Base 64 String resultadoFinal = myUTCDate + b64String; return resultadoFinal; } public static void main(String[] args) throws NoSuchAlgorithmException { System.out.println(getModifiedPwd("myPassword")); } }

3. Expedientes

Para poder dar de alta expedientes tenemos que saber al menos:
  1. Cual es el código (id) de nuestra entidad.
  2. El tipo de procedimiento, que se obtendrá del mapeo (excel) de que tuvimos en la entrada anterior 
  3. La clase del expediente que puede ser según documentación Ajuntament de Moncada:
    1. Expediente: Conjunto de documentos que dan lugar a una resolución
    2. Dosier: Conjunto de documentos relacionados o agrupación de documentos, ejemplo, informes, correspondencia. Para la primera migración de expedientes, se suele aconsejar utilizar esta opción, pues parece ser que no es tan restrictiva para la carga de datos
    3. Registro: Conjunto de documentos que incorporan datos ejemplo: Libro de actas, Libros de contabilidad, etc
  4. A parte, también, el usuario, la descripción y algún dato más opcional.

En el WSDL de Expedientes y su documentación asociada (1 general) y (2 detalle) aparece un WS de creación de expediente.  La operación és NuevoExpedienteV3, y devuelve el código (id) del expediente creado) .Se indican los campos requeridos:

  • wsSegUser: Usuario WSSEG (como se vio en el apartado anterior, tiene que estar de alta el usuario en panel del administrador en el apartado usuarios de servicios web
  • wsSegPass: Contraseña WSSEG. Calculada en base al algoritmo en java del apartado anterior.
  • idEntidad: Código de la entidad
  • idSubtipoProcedimiento: Código del subtipo de procedimiento (opcional). Si no se indica, el expediente no será visible hasta que un usuario tramitador le asigne dicho subtipo de procedimiento (para lo cual hay que usar la URL devuelta por ObtenerUrlExpedienteSinProcedimientoComoUsuarioSegexConCertificado). En listar_procedimientos.aspx?entidad=[idEntidad] puede obtenerse el listado de subtipos activo para la entidad indicada.
  • idClase: Código de la clase del expediente (E para expediente, D para dosier y R para registro)
  • descripcion: Descripción del expediente
  • referenciaInterna: Referencia interna del expediente (opcional)
  • nifUsuario: NIF del usuario que está creando el expediente. IMPORTANTE: es responsabilidad de la aplicación que llama a este método el autenticar al usuario y comprobar que éste es realmente su NIF.
  • idNodoContenedor: Determina el nodo contenedor de la estructura administrativa que tramitará incialmente el expediente. Puede indicarse -1 para que sea el sistema quien lo determine a partir del usuario indicado en nifUsuario (si el usuario pertenece a varios nodos contenedores de documentos, se usará el primero).
Con esto, en teroría se puede crear un expediente. Pero recordar siempre GUARDAR EL "ID" DEL EXPEDIENTE CREADO EN UNA TABLA, pues nos hará falta para introducir los otros elementos del expediente

Por lo que he visto, muchas administraciones se plantean la nomenclatura que van a tener los expedientes, por tanto, antes de realizar la migración conviene crear una clase java para que arregle los nombres de expedientes a migrar para que se adapten a la nueva nomenclatura. Se podría inidcar en la descripción del expediente que proviene de la migración.

Veamos una consulta SQL que puede obtener nuestros datos. Tener en cuenta que debemos recoger tambien el nif del usuario (B.documento) que ha dado de alta el expediente


SELECT *
--A.id_expediente, A.id_tipo_expediente, A.id_expediente_acumulacion, A.fecha_alta, 
--A.codigo, A.extracto, A.estado, A.observaciones, A.id_unidad_organizativa,
--A.regi_id,A.id_usuario,A.tipo,modo,A.identificador_eni,A.cod_sia_eni,
--B.documento
FROM gexflow.exp_expediente A
JOIN gexflow.org_usuario B ON B.id_usuario=A.id_usuario
ORDER BY id_expediente

Para obtener el idSubtipo

Comentarios

Entradas populares de este blog

26. Cuestiones(2): Acceso a registro de entrada para los concejales

33. Using Cl@ve (I). First steps

34. Using Cl@ve (II). Using Eclipse