-
Notifications
You must be signed in to change notification settings - Fork 7
huemul_Control
huemul_Control es la clase que posibilita la integración del desarrollo con el gobierno de datos. Control registra todas las definiciones de tablas y datalake en un diccionario de datos en PostgreSQL. Por otro lado genera un registro de actividad en la ejecución de los procesos, identificando automáticamente la trazabilidad del datalake y las tablas.
import com.huemulsolutions.bigdata.common._
import com.huemulsolutions.bigdata.control._
val Control = new huemul_Control(huemulBigDataGov, null, huemulType_Frequency.MONTHLY)
class huemul_Control (huemulBigDataGov: huemul_BigDataGovernance, ControlParent: huemul_Control, runFrequency: huemulType_Frequency, IsSingleton: Boolean = true, RegisterInControlLog: Boolean = true)
- huemulBigDataGov: Instancia de la clase huemul_BigDataGovernance
- ControlParent: Proceso que está invocando este nuevo proceso, con esto se establece la dependencia entre procesos.
- runFrequency: Frecuencia de ejecución del proceso (solo informativo).
- IsSingleton: Por default está en true, evita que se ejecute el mismo proceso en paralelo, esto previene un posible conflicto de datos.
- RegisterInControlLog: Al especificar false no registra la actividad en el modelo de control.
Para facilitar la revisión en la ejecución de procesos a través del tiempo, se han implementado métodos específicos para identificar parámetros de tipo fecha/hora:
- AddParamYear(name: String, value: Integer): Registra el parámetro de tipo Año
- AddParamMonth(name: String, value: Integer): Registra el parámetro de tipo Mes
- AddParamDay(name: String, value: Integer): Registra el parámetro de tipo Dia
- AddParamHour(name: String, value: Integer): Registra el parámetro de tipo Hora
- AddParamMin(name: String, value: Integer): Registra el parámetro de tipo Minuto
- AddParamSec(name: String, value: Integer): Registra el parámetro de tipo Segundo
- AddParamInformation(name: String, value: String): Registra otros tipos de parámetros del proceso
Cada proceso puede tener muchos pasos, huemul_Control expone métodos para documentar el paso a paso de los procesos, y facilitar su posterior visualización.
- NewStep(StepName: String): Registra un paso dentro del código de la aplicación.
Control.NewStep("paso 1: asigna valor")
val valor1 = 10
val valor2 = 20
Control.NewStep("paso 2: suma")
val suma = valor1 + valor2
- FinishProcessOK: Una vez que el proceso ha terminado exitosamente, se debe invocar este método de cierre
- FinishProcessError(): En caso de que el proceso haya terminado con algún error, se debe invocar este método.
- RegisterError(ErrorCode: Integer, Message: String, Trace: String, FileName: String, MethodName: String, ClassName: String, LineNumber: Integer, WhoWriteError: String ): Registra el error capturado por try-catch
- RaiseError(txt: String): Gatilla un error de usuario.
El siguiente es un ejemplo del correcto uso de huemul_Control para registrar la actividad del proceso.
def process_master(huemulBigDataGov: huemul_BigDataGovernance, ControlParent: huemul_Control, param_ano: Integer, param_mes: Integer): Boolean = {
val Control = new huemul_Control(huemulBigDataGov, ControlParent, huemulType_Frequency.MONTHLY)
try {
/*************** AGREGAR PARAMETROS A CONTROL **********************/
Control.AddParamYear("param_ano", param_ano)
Control.AddParamMonth("param_mes", param_mes)
/*************** LOGICAS DE NEGOCIO **********************/
Control.NewStep("paso 1: asigna valor")
val valor1 = 10
val valor2 = 20
Control.NewStep("paso 2: suma")
val suma = valor1 + valor2
Control.NewStep("paso 3: validaciones")
if (suma > 40)
Control.RaiseError(s"User: Error de usuario")
Control.FinishProcessOK
} catch {
case e: Exception => {
Control.Control_Error.GetError(e, this.getClass.getName, null)
Control.FinishProcessError()
}
}
return Control.Control_Error.IsOK()
}