Uso de Variables Dinámicas en Reglas de Negocio
Esta guía muestra cómo referenciar variables dinámicas en sus decisiones, validaciones y funciones. Una vez definidas en una biblioteca de valores, las variables dinámicas pueden ser utilizadas en cualquier lugar donde se permitan expresiones.
Requisitos previos
-
Una biblioteca de valores que contiene definiciones de variables dinámicas.
-
Una decisión, validación o función donde desea utilizar la variable.
Para esta guía, transformaremos la siguiente función para utilizar un DynamicVariable en lugar de un valor estático.
Todo lo que hace esta función es tomar un entero i como entrada devuelve el resultado de i > 1. Haremos que el valor de 1 sea configurable utilizando DynamicVariables para que pueda ser cambiado en tiempo de ejecución sin regenerar el MPS modelo.
Pasos
1. Importe la Biblioteca de Valores
Antes de utilizar variables dinámicas, debe importar la biblioteca de valores que las contiene. En la parte superior de su decisión, validación o función, localice el Imports sección.
Presione Ctrl+Space en el área de importaciones y seleccione su biblioteca de valores.
2. Haga referencia a la Variable en una Expresión
Una vez importada, puede hacer referencia a cualquier variable dinámica de esa biblioteca en sus expresiones.
Escriba el nombre de la variable o presione Ctrl+Space para ver las opciones disponibles de la biblioteca importada.
| Tenga en cuenta que el sistema de tipos garantizará que los tipos coincidan y mostrará advertencias/errores si el tipo esperado no coincide con el tipo de la DynamicVariable suministrado. |
Cómo Funciona
Cuando MPS genera código para sus reglas de negocio, las referencias a variables dinámicas se convierten en llamadas a DynamicVariableResolver.resolve():
// What you write in MPS:
// i < exampleInt
// Generated Java code:
i < DynamicVariableResolver.resolve(ExampleDynamicVariablesLib.exampleInt)
El resolutor:
-
Busca el valor actual en el
DynamicExpressionRegistry -
Vuelve al valor predeterminado si no está configurado.
-
Convierte el valor al apropiado KernelF tipo