Registro de Valores Programáticamente

Esta guía muestra cómo registrar valores de variables dinámicas directamente utilizando el DynamicExpressionRegistry API, sin utilizar archivos de configuración.

Descripción general

El registro programático es útil para:

  • Pruebas con valores específicos

  • Valores específicos de la entidad que varían por transacción

  • Integración con custom sistemas de configuración

  • Personalizado ConfigurableValueSource implementaciones

Requisitos previos

  • El kfextensions-utils dependencia (debería estar incluida de manera transitiva ya)

  • Acceso a DynamicExpressionRegistry

Registro Global

Registro Básico

Registre los valores directamente utilizando la clave de cadena:

import com.iconsolutions.kfextensions.runtime.DynamicExpressionRegistry;

// Get the singleton instance
DynamicExpressionRegistry registry = DynamicExpressionRegistry.getInstance();

// Register a value
registry.register("paymentService_upperBound", BigInteger.valueOf(5000));

// Register a list value
registry.register("paymentService_allowedCurrencies", Arrays.asList("USD", "EUR", "GBP"));

Registro Seguro por Tipo

Para una mejor seguridad de tipos, utilice el generado DynamicVariable constantes:

DynamicExpressionRegistry registry = DynamicExpressionRegistry.getInstance();

// Type-safe registration
registry.register(<Generated DEL>.upperBound, BigInteger.valueOf(5000));
registry.register(<Generated DEL>.allowedCurrencies, Arrays.asList("USD", "EUR"));

Este enfoque:

  • Asegura que la clave sea correcta (sin errores tipográficos)

  • Proporciona verificación de tipos en tiempo de compilación.

  • Facilita la refactorización

Registro con Alcance de Entidad

Los valores de ámbito de entidad están asociados con un específico ProcessingEntity y anule los valores globales para ese contexto de procesamiento.

Cuándo Utilizar el Alcance de Entidad

  • Aplicaciones multi-entidad con configuración por entidad

Registro con la Entidad

ProcessingEntity entity = processingContext.getProcessingEntity();

registry.register(entity, "paymentService_upperBound", BigInteger.valueOf(10000));

// Or type-safe
registry.register(entity, <Generated DEL>.upperBound, BigInteger.valueOf(10000));