Motore di regole aziendali - Business rules engine

Un motore di regole di business è un sistema software che esegue una o più regole di business in un ambiente di produzione runtime . Le regole potrebbero provenire da normative legali ("Un dipendente può essere licenziato per qualsiasi motivo o senza motivo ma non per un motivo illegale"), politica aziendale ("Tutti i clienti che spendono più di $ 100 in una volta riceveranno uno sconto del 10%" ), o altre fonti. Un sistema di regole aziendali consente di definire, testare, eseguire e mantenere queste politiche aziendali e altre decisioni operative separatamente dal codice dell'applicazione .

I motori delle regole in genere supportano regole, fatti, priorità (punteggio), esclusione reciproca, precondizioni e altre funzioni.

Il software del motore delle regole viene comunemente fornito come componente di un sistema di gestione delle regole aziendali che, tra le altre funzioni, offre la possibilità di: registrare, definire, classificare e gestire tutte le regole, verificare la coerenza delle definizioni delle regole ("I clienti di livello Gold sono idoneo per la spedizione gratuita quando la quantità dell'ordine > 10" e la "quantità massima dell'ordine per i clienti di livello Silver = 15" ), definiscono le relazioni tra le diverse regole e collegano alcune di queste regole alle applicazioni IT interessate o che devono applicarne una o più delle regole.

uso informatico

In qualsiasi applicazione IT , le regole aziendali possono cambiare più frequentemente rispetto ad altre parti del codice dell'applicazione. I motori di regole o motori di inferenza fungono da componenti software collegabili che eseguono regole di business che un approccio di regole di business ha esternalizzato o separato dal codice dell'applicazione. Questa esternalizzazione o separazione consente agli utenti aziendali di modificare le regole senza la necessità dell'intervento dell'IT . Il sistema nel suo insieme diventa più facilmente adattabile con tali regole aziendali esterne, ma ciò non preclude i consueti requisiti di QA e altri test.

Storia

Un articolo su Computerworld fa risalire i motori delle regole ai primi anni '90 ea prodotti come Pegasystems , Fair Isaac Corp e ILOG .

Strategie di progettazione

Gli sforzi per le regole di molte organizzazioni combinano aspetti di ciò che è generalmente considerato il design del flusso di lavoro con il design delle regole tradizionali. Questa incapacità di separare i due approcci può portare a problemi con la capacità di riutilizzare e controllare sia le regole aziendali che i flussi di lavoro. Gli approcci di progettazione che evitano questo dilemma separano il ruolo delle regole aziendali e dei flussi di lavoro come segue:

  • Le regole aziendali producono conoscenza;
  • I flussi di lavoro eseguono il lavoro aziendale.

Concretamente, ciò significa che una regola aziendale può fare cose come rilevare che si è verificata una situazione aziendale e sollevare un evento aziendale (in genere trasportato tramite un'infrastruttura di messaggistica) o creare una conoscenza aziendale di livello superiore (ad esempio, valutare la serie di attività organizzative, di prodotto e regole regolamentari riguardanti se un prestito soddisfa o meno i criteri di sottoscrizione). D'altra parte, un flusso di lavoro risponderebbe a un evento che indicava qualcosa come il sovraccarico di un punto di instradamento avviando una serie di attività.

Questa separazione è importante perché lo stesso giudizio aziendale (il mutuo soddisfa i criteri di sottoscrizione) o lo stesso evento aziendale (il router è sovraccarico) può essere reagito a molti flussi di lavoro diversi. Incorporare il lavoro svolto in risposta alla creazione di conoscenza basata su regole nella regola stessa riduce notevolmente la capacità delle regole aziendali di essere riutilizzate in un'organizzazione perché le rende specifiche per il flusso di lavoro.

Per creare un'architettura che utilizzi un motore di regole di business è fondamentale stabilire l'integrazione tra una piattaforma BPM (Business Process Management) e una piattaforma BRM (Business Rules Management) che si basi su processi che rispondono ad eventi o esaminano giudizi aziendali definiti da regole di business. Ci sono alcuni prodotti sul mercato che forniscono questa integrazione in modo nativo. In altre situazioni questo tipo di astrazione e integrazione dovrà essere sviluppato all'interno di un particolare progetto o organizzazione.

La maggior parte dei motori di regole basati su Java fornisce un'interfaccia tecnica a livello di chiamata, basata sullo standard API ( Application Programming Interface ) JSR-94 , per consentire l'integrazione con diverse applicazioni e molti motori di regole consentono integrazioni orientate ai servizi tramite Web basati su standard come WSDL e SOAP .

La maggior parte dei motori di regole offre la possibilità di sviluppare un'astrazione dei dati che rappresenta le entità aziendali e le relazioni rispetto alle quali devono essere scritte le regole. Questo modello di entità aziendale in genere può essere popolato da una varietà di fonti tra cui XML , POJO , file flat e così via. Non esiste un linguaggio standard per scrivere le regole stesse. Molti motori utilizzano una sintassi simile a Java , mentre alcuni consentono la definizione di linguaggi aziendali personalizzati.

La maggior parte dei motori di regole funziona come una libreria richiamabile. Tuttavia, sta diventando più popolare per loro eseguire come un processo generico simile al modo in cui si comportano gli RDBMS . La maggior parte dei motori tratta le regole come una configurazione da caricare nella propria istanza di processo, sebbene alcuni siano in realtà generatori di codice per l'intera istanza di esecuzione della regola e altri consentano all'utente di scegliere.

Tipi di motori di regole

Esistono diversi tipi di motori di regole. Questi tipi (generalmente) differiscono nel modo in cui le regole sono pianificate per l'esecuzione.

La maggior parte dei motori di regole utilizzati dalle aziende sono concatenazioni in avanti , che possono essere ulteriormente suddivise in due classi:

  • La prima classe elabora le cosiddette regole di produzione/ inferenza . Questi tipi di regole vengono utilizzati per rappresentare comportamenti del tipo IF condizione THEN azione. Ad esempio, una tale regola potrebbe rispondere alla domanda: "A questo cliente dovrebbe essere concesso un mutuo?" eseguendo regole del tipo "IF some-condition THEN allow-customer-a-mortgage".
  • L'altro tipo di motore di regole elabora le cosiddette regole di azione di reazione/ condizione di evento . I motori delle regole reattive rilevano e reagiscono agli eventi in arrivo e elaborano i modelli di eventi. Ad esempio, un motore di regole reattive potrebbe essere utilizzato per avvisare un responsabile quando alcuni articoli sono esauriti.

La più grande differenza tra questi tipi è che i motori delle regole di produzione vengono eseguiti quando un utente o un'applicazione li richiama, di solito in modo stateless. Un motore di regole reattive reagisce automaticamente quando si verificano eventi, di solito in modo stateful. Molti (e in effetti i più) popolari motori di regole commerciali hanno capacità sia di produzione che di reazione, sebbene possano enfatizzare una classe rispetto a un'altra. Ad esempio, la maggior parte dei motori di regole di business sono principalmente motori di regole di produzione, mentre i motori di regole di elaborazione di eventi complessi enfatizzano le regole di reazione.

Inoltre, alcuni motori di regole supportano il concatenamento all'indietro . In questo caso un motore di regole cerca di risolvere i fatti per adattarli a un obiettivo particolare. Viene spesso definito come guidato da un obiettivo perché cerca di determinare se esiste qualcosa in base alle informazioni esistenti.

Un altro tipo di motore di regole commuta automaticamente tra concatenamento in avanti e indietro più volte durante un'esecuzione di ragionamento, ad esempio il sistema Internet Business Logic, che può essere trovato effettuando una ricerca sul web.

Una quarta classe di motori di regole potrebbe essere chiamata motore deterministico. Questi motori di regole possono rinunciare sia al concatenamento in avanti che al concatenamento all'indietro e utilizzare invece approcci linguistici specifici del dominio per descrivere meglio la politica. Questo approccio è spesso più facile da implementare e mantenere e offre vantaggi in termini di prestazioni rispetto ai sistemi di concatenamento in avanti o all'indietro.

Ci sono alcune circostanze in cui l' inferenza basata su Fuzzy Logic può essere più appropriata, dove l'euristica viene utilizzata nell'elaborazione delle regole, piuttosto che le regole booleane. Gli esempi potrebbero includere la classificazione dei clienti, l'inferenza dei dati mancanti, i calcoli del valore del cliente, ecc. Il linguaggio DARL e il motore di inferenza e gli editor associati sono un esempio di questo approccio.

Motori di regole per controllo accessi/autorizzazione

Un caso d'uso comune per i motori di regole è il controllo dell'accesso standardizzato alle applicazioni. OASIS definisce un'architettura del motore di regole e uno standard dedicato al controllo degli accessi chiamato XACML (eXtensible Access Control Markup Language). Una differenza fondamentale tra un motore di regole XACML e un motore di regole di business è il fatto che un motore di regole XACML è senza stato e non può modificare lo stato di alcun dato. Il motore di regole XACML, chiamato Policy Decision Point (PDP), prevede una domanda binaria Sì/No, ad esempio "Alice può visualizzare il documento D?" e restituisce una decisione, ad esempio Consenti / Nega.

Guarda anche

Riferimenti

Bibliografia

link esterno