Ejecución del plan de ejecución de conjuntos de reglas empresariales
La generación del plan de ejecución de un conjunto de reglas empresariales implicará:
1. Creación de una instancia RuleValidation específica basada en el selector definido en la regla empresarial.
2. La instancia RuleValidation se utilizará para determinar si la configuración de la regla empresarial es válida mediante el método isConfigurationValid. Si la configuración no es válida, se omitirá RuleValidation para el plan de ejecución del conjunto de reglas empresariales y se registrará un error.
3. Para cada regla empresarial, se llama a la instancia RuleValidation con los siguientes elementos:
a. Recopilación de los objetos que las reglas deben evaluar
b. Criterios específicos del contexto (como la referencia de contenedor) que un RuleValidation puede utilizar para configurar su ejecución.
4. La instancia RuleValidation se añade al plan de ejecución.
Todos los validadores de reglas empresariales implementarán la interfaz RuleValidation. Una regla empresarial típica se clasificará en dos categorías principales:
Validación simple: la comprobación de reglas se realiza en el propio objeto de negocio o en los objetos semilla según la configuración de la relación. Un ejemplo podría ser la comprobación de la validación de atributos o la comprobación de un estado del ciclo de vida del objeto antes de la liberación.
Validación estructurada: las reglas se pueden (o no se pueden) realizar en los objetos de negocio, pero incluirán algunas comprobaciones de validación en sus objetos asociados, como los hijos del artículo o documento. En este tipo de validación, normalmente se requiere un conjunto de algoritmos más complejo para calcular las reglas de validación empresarial y rellenar el resultado de la validación con el indicador adecuado. Un ejemplo de regla de validación estructurada es una comprobación de validación que garantiza que todos los objetos resultantes y todos los dependientes de primer nivel tienen el estado correcto.
A continuación se indican las implementaciones de RuleValidation soportadas que se proporcionan:
Selector de reglas empresariales
RuleValidation
Descripción
CHECKOUT_RULE
com.ptc.core.businessRules.validation.CheckoutRuleValidator
Valida que los objetos se han extraído o no en un proyecto.
RELEASE_TARGET
com.ptc.core.businessRules.validation.ReleaseTargetValidator
Garantiza que todos los "objetos resultantes" se encuentran en un estado adecuado para la liberación y tienen definida una transición de gestión de cambios adecuada que es coherente con las reglas asignadas de transición del ciclo de vida.
ATTRIBUTE_RULE
com.ptc.core.businessRules.validation.AttributeRuleValidator
Valida que la configuración de la regla de atributo especificada para un tipo de objeto es válida.
BOM_RELEASE_RULE
com.ptc.core.businessRules.validation.BOMReleaseRuleValidator
Garantiza que todos los objetos resultantes estén en un estado adecuado y que todos sus hijos de primer nivel estén en un estado adecuado.
* 
La solicitud de promoción soporta la regla de atributo y la regla de extracción. La notificación de cambio admite cualquier regla.
La instanciación de RuleValidation se basará en el selector definido en la regla empresarial. Los servicios de aplicación se utilizarán para buscar la clase de implementación del selector definido. Si no se define ninguna clase de implementación o no se puede instanciar la clase, se registrará un error.
Antes de ejecutar cualquier validación, el motor llamará a RuleValidation.isConfigurationValid, lo que determinará si la configuración de la regla empresarial es válida. Esta validación de la configuración de la regla empresarial también se llama al cargar la regla empresarial, pero dado que es posible cambiar el RuleValidation registrado, también se llama a la validación de configuración antes de ejecutar la validación de la regla empresarial.
El método de inicialización de TheRuleValidation llamado prepare se utiliza para realizar un preprocesamiento inicial de todo el conjunto de objetos semilla que se validará con el conjunto de reglas empresariales. Esto es para permitir que cualquier validación previa se produzca dentro del servidor Windchill (por ejemplo, recuperar la plantilla de ciclo de vida, lo que sería común a muchos de los elementos). Es mejor llamar a las API de varios objetos desde el método de RuleValidation.prepare. Se recomienda no utilizar el método de RuleValidation.peformValidation para realizar llamadas a varios objetos.
Si el método de RuleValidation.isConfigurationValid devuelve true, se llama a RuleValidation performValidation para cada objeto semilla. El objeto semilla se pasa dentro de RuleValidationObject. RuleValidationObject contiene el objeto de destino (el objeto semilla si no es un vínculo o el rol A o el rol B si el objeto semilla es un vínculo) y el vínculo (si el objeto semilla es un vínculo). Cuando la regla empresarial es de tipo estructurado RuleValidation, RuleValidationObject también contiene los hijos recopilados y un mapa de los hijos recopilados a los vínculos con los que se recopilaron. performValidation siempre debe devolver un nuevo RuleValidationResult que tenga una referencia al objeto de destino, no al vínculo.
Motor de reglas empresariales y diagrama de secuencia
Motor de reglas empresariales y diagrama de interacción de validación
Las implementaciones de RuleValidation se registran en service.properties. Para crear o sustituir una implementación de RuleValidation, añada lo siguiente a un fichero service.properties xconf personalizado:
<Service context="default" name="com.ptc.core.businessRules.validation.
RuleValidation">
<Option serviceClass="com.ptc.core.businessRules.validation.
CheckoutRuleValidator"
selector="CHECKOUT_RULE"
cardinality="singleton"
requestor="null"/>
</Service>
Cuando sea posible, la cardinalidad de RuleValidation debe establecerse en "singleton" para reducir el número de instancias de una implementación de RuleValidation determinada. addToProcessingMap() de RuleValidationKey se puede utilizar para almacenar datos de validación previa con el fin de soportar el procesamiento seguro de subprocesos de implementaciones de RuleValidation cuando la cardinalidad se define en "singleton".
¿Fue esto útil?