Esecuzione del piano di esecuzione dell'insieme di regole aziendali
La generazione del piano di esecuzione di un insieme di regole aziendali implica le operazioni di seguito indicate.
1. Creazione di un'istanza specifica di RuleValidation in base al selettore definito nella regola aziendale.
2. L'istanza di RuleValidation viene utilizzata per determinare se la configurazione della regola aziendale è valida utilizzando il metodo isConfigurationValid. Se la configurazione non è valida, RuleValidation viene ignorata per il piano di esecuzione dell'insieme di regole aziendali e l'errore viene registrato.
3. Per ciascuna regola aziendale viene chiamata l'istanza di RuleValidation con gli elementi di seguito indicati.
a. Raccolta di oggetti che le regole devono valutare
b. Criteri specifici del contesto (ad esempio il riferimento di contenitore) che possono essere utilizzati da una RuleValidation per configurare la relativa esecuzione.
4. L'istanza di RuleValidation viene aggiunta al piano di esecuzione.
Tutti gli strumenti di convalida delle regole aziendali implementeranno l'interfaccia RuleValidation. Una tipica regola aziendale rientra nelle due categorie principali indicate di seguito.
Convalida semplice: il controllo delle regole viene eseguito sul business object stesso o sugli oggetti origine a seconda di quanto configurato dalla relazione. Un esempio può essere il controllo della convalida di un attributo o il controllo di uno stato del ciclo di vita dell'oggetto prima del rilascio.
Convalida strutturata: le regole possono essere eseguite o meno sui business object, ma includono alcuni controlli di convalida sugli oggetti associati, ad esempio i figli della parte o del documento. In questo tipo di convalida, in genere potrebbe essere necessario un insieme di algoritmi più complesso per calcolare le regole di convalida aziendali e completare il risultato della convalida con il flag appropriato. Un esempio di regola di convalida strutturata è un controllo di convalida che verifica che tutti gli oggetti risultanti e tutti i dipendenti di primo livello siano nello stato del ciclo di vita corretto.
Di seguito sono riportate le implementazioni supportate di RuleValidation fornite:
Selettore di regole aziendali
RuleValidation
Descrizione
CHECKOUT_RULE
com.ptc.core.businessRules.validation.CheckoutRuleValidator
Convalida gli oggetti non sottoposti a Check-Out o sottoposti a Check-Out in un progetto.
RELEASE_TARGET
com.ptc.core.businessRules.validation.ReleaseTargetValidator
Garantisce che tutti gli "Oggetti risultanti" siano in uno stato del ciclo di vita appropriato per il rilascio e che sia stata specificata una transizione di gestione delle modifiche appropriata conforme alle regole di transizione del ciclo di vita assegnate.
ATTRIBUTE_RULE
com.ptc.core.businessRules.validation.AttributeRuleValidator
Verifica che la configurazione della regola di attributo specificata per un tipo di oggetto sia valida.
BOM_RELEASE_RULE
com.ptc.core.businessRules.validation.BOMReleaseRuleValidator
Garantisce che tutti gli oggetti risultanti e tutti i relativi figli di primo livello siano in uno stato del ciclo di vita appropriato.
* 
La richiesta di promozione supporta la regola di attributo e la regola di Check-Out. La notifica di modifica supporta qualsiasi regola.
L'instanziazione di RuleValidation si basa sul selettore definito nella regola aziendale. Vengono utilizzati i servizi dell'applicazione per cercare la classe di implementazione del selettore definito. Se non viene definita alcuna classe di implementazione o se la classe non viene istanziata, viene registrato un errore.
Prima dell'esecuzione di qualsiasi convalida, il motore chiama RuleValidation.isConfigurationValid, che determina se la configurazione della regola aziendale è valida. La convalida della configurazione della regola aziendale viene chiamata anche durante il caricamento della regola aziendale, ma poiché è possibile modificare la RuleValidation registrata, la convalida della configurazione viene chiamata anche prima dell'esecuzione della convalida della regola aziendale.
Il metodo di inizializzazione di TheRuleValidation denominato prepare viene utilizzato per eseguire una pre-elaborazione iniziale dell'intero insieme di oggetti origine che verranno convalidati rispetto all'insieme di regole aziendali. Ciò consente l'esecuzione della pre-convalida nel server Windchill (un esempio potrebbe essere il recupero del modello di ciclo di vita, che sarebbe comune a molti elementi). È preferibile chiamare API a più oggetti dal metodo RuleValidation.prepare. Si consiglia di non utilizzare il metodo RuleValidation.peformValidation per eseguire chiamate a più oggetti.
Se il metodo RuleValidation.isConfigurationValid restituisce true, RuleValidation performValidation viene chiamata per ogni oggetto origine. L'oggetto origine viene passato all'interno di RuleValidationObject. RuleValidationObject contiene l'oggetto di destinazione (l'oggetto origine se non è un link oppure il ruolo A o il ruolo B se l'oggetto origine è un link) e il link (se l'oggetto origine è un link). Quando la regola aziendale è di tipo strutturato RuleValidation, RuleValidationObject contiene anche i figli raccolti e una mappa dei figli raccolti per i link con cui sono stati raccolti. performValidation restituisce sempre un nuovo RuleValidationResult con un riferimento all'oggetto di destinazione e non al link.
Diagramma di motore delle regole aziendali e sequenza
Diagramma di interazione tra motore delle regole aziendali e convalida
Le implementazioni di RuleValidation sono registrate in service.properties. Per creare o sostituire un'implementazione di RuleValidation, aggiungere quanto segue in un file service.properties xconf personalizzato:
<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>
Quando possibile, la cardinalità di RuleValidation deve essere impostata su "singleton" per ridurre il numero di istanze di una particolare implementazione di RuleValidation. Il metodo addToProcessingMap() di RuleValidationKey può essere utilizzato per memorizzare i dati di pre-convalida per supportare l'elaborazione thread-safe delle implementazioni di RuleValidation quando la cardinalità è impostata su "singleton".
È stato utile?