ADempiere: Model Validator

Un Validador de Modelo es una clase java creada por el desarrollador en la cual debe implementar la interfaz ModelValidator ubicada en el directorio org.compiere.model. Esta interfaz tiene dos metodos importantes (modelChange y docValidate) los cuales son invocados al momento de hacer cambios al modelo o al validar documentos. El Model Validator se registra para controlar los cambios que se hagan en tablas, determinar la reaccion de cambios en el modelo por documentos o controlar las acciones de los documentos como completar, anular, cerrar, etc. En pocas palabras, usamos la interfaz ModelValidator para «programar la logica externa al nucleo de ADempiere».

Metodos

getAD_Client

public int getAD_Client_ID()
Metodo necesario para indicar a la clase el cliente que se esta monitoreando. Si no se implementa este metodo el validador no funcionara.

Initialize (Inicializar)

public void initialize (ModelValidationEngine engine, MClient client)
Permite registrar las tablas o documentos a ser utilizados en el modelo.
Para registrar los elementos a ser manejados en la clase se usa el objeto engine:
engine.addModelChange(tableName, listener); // Para cambios en el modelo o tablas.
engine.addDocValidate(tableName, listener); // Para cambios en los estados de documentos.

Model Change Events (Eventos de cambios en el modelo)

Usados en el metodo:
public String modelChange(PO po, int type) throws Exception
Ocurren cada vez que se cambian los datos en una tabla de ADempiere. 
Hay eventos para cuando se insertan los datos:
  • type = TYPE_BEFORE_NEW
  • type = TYPE_AFTER_NEW
Hay eventos para cuando se cambian los datos:
  • type = TYPE_BEFORE_CHANGE
  • type = TYPE_AFTER_CHANGE
Y hay eventos para cuando se eliminan los datos:
  • type = TYPE_BEFORE_DELETE
  • type = TYPE_AFTER_DELETE

Document Events (Eventos de Documentos)

Usados en el metodo:
public String docValidate(PO po, int timing)
Ocurren cuando se cambia el status de un documento.
Por cada estado del documento se tiene un TIMING_AFTER y un TIMING_BEFORE:
Cuando se prepara un documento:
  • timing = TIMING_AFTER_PREPARE
  • timing = TIMING_BEFORE_PREPARE
Cuando se completa un documento:

  • timing = TIMING_AFTER_COMPLETE
  • timing = TIMING_BEFORE_COMPLETE
Cuando se cierra un documento:
  • timing = TIMING_AFTER_CLOSE
  • timing = TIMING_BEFORE_CLOSE
Y asi para cada uno de los estados del documento: REACTIVATE, REVERSECORRECT, REVERSEACCRUAL, VOID.

Login Events (Eventos de Login)

Usados en el metodo:
public String login(int AD_Org_ID, int AD_Role_ID, int AD_User_ID)
Ocurren cuando un usuario inicia sesion en el sistema. Utiles para configurar restricciones para el login de los usuarios de acuerdo a su rol de operaciones en el sistema.

Pasos para crear un Validador de Modelo

  1. Dentro del paquete de tu customization, crea la clase validadora (con un nombre apropiado y facil de identificar), esta debe implementar la interfaz org.compiere.model.ModelValidator
    • Registra las tablas o documentos que se van a controlar (en el método inicializar)
    • Indica el cliente que estarás monitoreando (en el método getAD_Client) 
    • Codificar la programación necesaria dentro del metodo especifico.
  2. Actualiza el archivo customization.jar para que tengas los cambios recientes disponibles para todos los usuarios
  3. Registra tu validador en ADempiere. Desde Menu » Diccionario de Aplicación » Validador del Modelo

Comentarios

Entradas populares de este blog

ADempiere: Codigo Comun

ADempiere: Configuración Inicial de la Compañía

ADempiere: Diccionario de Aplicación