Microregole per grandi progetti con il BRMS

Transcript

Microregole per grandi progetti con il BRMS
MIDDLEWARE TRACK
A cura del Middleware Solution Architect team di Red Hat
#redhatosd
Agenda Middleware Track part 1
●
14.00 MicroServices, le dimensioni non contano
○ Ugo Landini, Samuele Dell’Angelo
●
14.30 Wildfly Swarm, Spring Boot & Vertx.io: il nuovo che avanza
○ Ugo Landini, Samuele Dell’Angelo
●
15.00 Microservices con JBoss EAP 7: innovare in continuità
○ Giuseppe Bonocore
●
15.30 Microregole per grandi progetti con il BRMS
○ Andrea Leoncini
Agenda Middleware Track part 2
●
16.00 Integrazione e microservizi: come un cammello può passare dalla
cruna di un ago
○ Filippo Calà, Ugo Landini
●
16.30 API Management con 3Scale nell’era dei microservizi
○ Luca Bigotta
●
17.00 SALA PLENARIA
●
17.15 ESTRAZIONE FINALE PREMI
#redhatosd
MicroRegole per grandi progetti
con il BRMS
Andrea Leoncini
#redhatosd
La comunità Drools
Workbench (web UI per la redazione e la
gestione delle regole)
Expert (Rule Engine)
Fusion (CEP, Complex Event Processing)
jBPM (integrazione con processi)
OptaPlanner (pianificazione delle risorse)
Cos’è un motore di regole (Rule Engine)?
A business rules engine is a software system that executes one or
more business rules in a runtime production environment. The rules
might come from legal regulation ("An employee can be fired for any
reason or no reason but not for an illegal reason"), company policy ("All
customers that spend more than $100 at one time will receive a 10%
discount"), or other sources.
A business rule system enables these company policies and other
operational decisions to be defined, tested, executed and maintained
separately from application code.
Source: wikipedia
DROOLS/Red Hat JBoss BRMS
●
Vantaggi di un Motore di Regole:
○ Permette di dire "COSA fare", e non "COME farlo".
○ Separazione della logica e dei dati
○ Centralizzazione della conoscenza
○ Integrazione dei Tool
○ Regole Understandable
○ Velocità e Scalabilità
Quando dovreste usare Red Hat JBoss BRMS
●
●
●
●
Scenari molto complessi, difficili da definire anche per i business
experts
Non esiste o non è noto un ben definito algoritmo
Requisiti che hanno bisogno di essere modificati molto spesso
Necessità di prendere decisioni molto velocemente, spesso su set
di dati non completi
Una semplice regola
Una semplice regola CEP, senza il concetto di tempo
rule "Sound the alarm"
when
$f : FireDetected( )
not( SprinklerActivated() )
then
// sound the alarm
end
Una semplice regola
Una semplice regola CEP, senza il concetto di tempo
Nome Regola
rule "Sound the alarm"
when
$f : FireDetected( )
not( SprinklerActivated() )
then
// sound the alarm
end
Una semplice regola
Una semplice regola CEP, senza il concetto di tempo
rule "Sound the alarm"
when
$f : FireDetected( )
not( SprinklerActivated() )
then
// sound the alarm
end
LHS
Una semplice regola
Una semplice regola CEP, senza il concetto di tempo
rule "Sound the alarm"
when
$f : FireDetected( )
not( SprinklerActivated() )
then
// sound the alarm
end
RHS
Una semplice regola CEP
Una semplice regola CEP, con il concetto di tempo
rule "Sound the alarm"
when
$f : FireDetected( )
not( SprinklerActivated( this after[0s,10s] $f ) )
then
// sound the alarm
end
Una semplice regola CEP
Una semplice regola CEP, con il concetto di tempo
rule "Sound the alarm"
when
$f : FireDetected( )
not( SprinklerActivated( this after[0s,10s] $f ) )
then
// sound the alarm
end
TEMPO
CEP con il BRMS
Complex Event Processing: accorgersi di eventi significativi per il
business riconoscendo time-based patterns in uno o più data feed in
real-time...
●
Regola + Tempo: aggiunge il concetto di tempo alle regole base
○ Sliding windows
○ Entry points
○ Time operations
Rule Engine taglia slim
●
Possibilità di invocare le regole
○ localmente al runtime
○ da remoto
●
Deploy
○ JEE
○ OSGI
○ Wildfly Swarm
○ Spring-Boot
○ Java standalone
○ Docker
Lanciamo la campagna Pro If
●
Non preoccupatevi se la logica della vostra
applicazione è piena di If.
●
Soprattutto non preoccupatevi se non l’avete
capito subito...
●
Lanciamo ufficialmente la campagna Pro If
○ Gli if dal codice li togliamo noi!
Scenario di deploy
KIE factor
Sviluppatori e analisti
lavorano ai progetti e
producono regole,
servizi, modelli di dati
e processi
KIE factor
La build dei progetti
produce i cosiddetti
“artefatti”
KIE factor
L’Execution Server
prende gli artefatti
con cui crea la
propria base di
conoscenza
direttamente dal
server Maven
KIE factor
L’Execution Server
può essere eseguito
nel “Java Flavour”
preferito.
Uso del Rule Engine
Uso del Rule Engine
Un Engine “Specializzato”
No scanner, uno specifico GAV, integrato nella mia pipeline di rilascio
E se serve un motore di regole scalabile ed in alta
affidabilità?
●
●
●
●
Si possono gestire, grazie a JBoss Data Grid, un certo numero di Engine
contemporanei
○ Mantenendo contemporaneamente copie di backup
Distribuzione degli eventi per uno o più gruppi uniformi (carta di credito,
utente, giocatore, ecc.)
Scalabilità fino a centinaia di nodi
Prestazioni del cluster direttamente proporzionali al numero di nodi BRMS
HACEP: https://github.com/redhat-italy/hacep/
HACEP: https://github.com/redhat-italy/hacep/
DEMO RULE BRMS
App
tradizionali
Fisico
Microservizi
Virtuale
Cloud
Red Hat xPaas
Application Server
Pivotal tc Server, VMware vFabric, Oracle WebLogic
Server, IBM WebSphere
JBoss EAP
JBoss Web Server
In-memory data grid
IBM WebSphere eXtreme Scale, Oracle Coherence,
Pivotal GemFire, Software AG Terracotta
JBoss Data Grid
Application integration
IBM Integration Bus, Oracle SOA Suite and ESB, MuleSoft
AnyPoint Platform, Sonic ESB, Tibco ActiveMatrix
JBoss Fuse
Business rules and
process automation
IBM Operational Decision Manager and BPM, Oracle SOA
Suite and BPM Suite, Pega BPM, FICO Blaze Advisor
JBoss BRMS
JBoss BPM Suite
Messaging
IBM WebSphereMQ, Pivotal RabbitMQ, VMware vFabric,
Tibco Enterprise Message Service
JBoss A-MQ
Mobile
IBM MobileFirst, SAP Mobile Platform, Kony Mobility
Platform, Telerik Platform, AnyPresence
Mobile Application Platform
Data virtualization and
data services
IBM InfoSphere, Progress DataXtend SI, Composite
Information Server, Denodo
JBoss Data Virtualization
Links
OSD Demo Applications
https://github.com/redhat-italy/osd-microservices-apps
Microservices Playground
bit.ly/msa-instructions
http://developers.redhat.com/downloads
Container Development Kit
Recorded Demo: https://youtu.be/SPATMHP-xw8