JBoss BRMS - The enterprise platform for business logic
-
Upload
jbug-italy -
Category
Technology
-
view
4.327 -
download
0
Transcript of JBoss BRMS - The enterprise platform for business logic
Agenda
JBoss BRMS overviewJBoss BRMS benefits
JBoss BRMS and Guvnor
JBoss BRMS Assetspackagefactsworking setsrulesdecision tablestest scenariosevent process processing (CEP)other assets
JBPM5 processes
JBoss BRMS authoring
JBoss BRMS deployment
Eclipse integration
Rule agents
JBoss BRMS:
The enterprise platform for
Business Logic Integration
Giovanni Marigi
gmarigi at redhat.com
JBoss ConsultantRed Hat, Inc.Codemotion 2012
Except where otherwise noted, content on this work is licensed under a Creative Commons Attribution 3.0 License.
Agenda
JBoss BRMS overviewJBoss BRMS benefits
JBoss BRMS and Guvnor
JBoss BRMS Assetspackagefactsworking setsrulesdecision tablestest scenariosevent process processing (CEP)other assets
JBPM5 processes
JBoss BRMS authoring
JBoss BRMS deployment
Eclipse integration
Rule agents
JBoss BRMS Overview
BRMSBRMS (business rules management system)a software where to define and externalize the business and decision logic used inside programs inside an organization
JBoss BRMS Overview
JBoss BRMS Overview
BRMSBRMSa single platform for business modeling including different technologies
JBoss BRMS includes:ExpertExpert: Rule EngineFlow/JBPM5Flow/JBPM5 : Rules Process ManagementFusionFusion: Complex Event ProcessingGuvnorGuvnor: BRMS “front end” and repository for BRMS artifacts
JBoss BRMS is distributed:. war archive. already packaged with an EAP/EWP. ready for AS7
JBoss BRMS overview: main features
Centralized repository of business assets
Version control of business assets
IDE/User tools to define and to “governance” the decision logic
Build, deploy, testing of decision logic
Packages of business assets
Categorization of business assets
Roundtrip, integration with dev Tools (Eclipse)
JCR repository (jackrabbit or modeshape) for assets
Repository can also be accessed via REST API - HTTP (WebClient) - WebDAV
BRMS can be configured for high availabilty (clustering)
JBoss BRMS overview: benefits
Logic and data separation
Cross domain logic
Reuse, logic opened to changes
Easy to maintain the business logic
Changes in live systems
Several stakeholders can contribute in defining the business logic (Business Analyst, Rule expert, Developer, Administrators)
JBoss BRMS and Guvnor
Drools Guvnor 5.4.0 Beta1
Drools Guvnor 5.3.0 last stable
Drools Guvnor 5.3.0 includes: Expert 5.3 (rule engine)Fusion 5.3 (CEP)Flow/JBPM5
Eclipse + JBoss Tools
BRMS 5.2 last stable
BRMS 5.2 includes:- Drools Guvnor 5.2- Drools Expert 5.2- Drools Fusion 5.2
BRMS 5.3 (next release) will be based on Guvnor 5.3
JBoss Developer Studio
Bug fixing,patchingSLAEnterprise certification | QA
JBoss BRMS and Guvnor
Feature Community Enterprise
Open Source x x
Benefits from testing by worldwide Community x x
Recommended for Production Use x
Patch Update & Service Pack Program x
Security Errata Program x
Automated Software Update & Alert Service x
Defect & Feature Escalation & Prioritization Process x
Developer Support x
24x7 Production Support & Services x
Platform Certifications & Training Certifications x
Defined Support SLA and End-of-Life Policy x
Out-of-the-Box Configured for Enterprise Use x
Operations Management Tools x
Platform testing & certification process x
Redistribution of modified JBoss technologies x
Red Hat Open Source Assurance (Legal Protection) x
JBoss BRMS assets
Every artifact inside a BRMS is an assetasset
The assets define a knowledge baseknowledge base
Business logic is made by several assets:facts (domain model)rules business processes (workflows)decision tablesfunctionsmore...
Not only business rules!
JBoss BRMS assets: Package
Guvnor Knowledge base
How to start?define a new packagepackage forbusiness assets
JBoss BRMS assets: Model/Facts
A package must contain at least a fact model
fact model != domain modela fact model typically overlapsoverlaps a domain model but better to make it decouple from the domain model
Rules and assets reason upon a fact model
Two ways to do define your fact model:- upload a JAR file containing Java Classes - declare a model within Guvnor
JBoss BRMS assets: Working Sets
Working sets are groups of facts
Use them to put constraints on a group of facts and restrict the “reasoning domain” of your business rules
Disabled by default
JBoss BRMS assets: Rules
Rules are the “backbone” of a BRMS
Don't use a BRMS if you don't have business rules
Don't use a BRMS if you don't want or you can't separate logic from data
Rules are processed and evaluated by a Rule Engine (Drools Expert)
Forward chaining rule engine which implements the RETE algorithm (ReteOO)
Rich native language to define rules
A rule is contained in a DRL file
More info on Drools Expert:JBug Italy slideshare site:http://www.slideshare.net/jbugrome
JBoss BRMS assets: Rules
Forward chaining
Rule Engine
JBoss BRMS assets: Rules
rule "Approve if not rejected" salience -100 agenda-group "approval" when not Rejection() p : Policy(approved == false,policyState:status ) exists Driver(age > 25) Process(status == policyState) then log("APPROVED: due to no objections."); p.setApproved(true);end
Anatomy of a rule
Example of a rule
JBoss BRMS assets: Rules
Inside BRMS there 4 ways to createa rule:
- from scratch,code; (requires knowledge of Expert)
- using the guided editor(can be used DSL assertions)
- uploading a decision tablespreadsheet
- creating a decision table spreadsheet via the guided editor
JBoss BRMS assets: Rules
Rules can be validated inside BRMS
JBoss BRMS assets: Rules
Rules with the guided editor
JBoss BRMS assets: Decision Tables
Express rules with a spreadsheet
A spreadsheet can be imported or created via the guided web editor
A wizard generator for spreadsheet is available in BRMS!
A decision table at runtime is transformed in a series of DRL rules
JBoss BRMS assets: Test Scenarios
Test scenarios are assets used to validate that the rules inside the knowledge base (package) works as expected
A scenario is made by a given section (list of facts and its initial state) and an expect section
What we can “assert” in a expect section?
- RuleValidate that a certain rule fired.
- Fact valueValidate fact values for a fact created in the Given section.
-Any fact that matchesValidate that there is at least one fact in the knowledge base with the specified field values.
JBoss BRMS assets: Test Scenarios
JBoss BRMS assets: CEP
CEP Engine enables Event Detection: Cloud mode and Stream mode
Temporal Reasoning (correlation) – reason over aggregation
Abstraction – Compose complex events and reason over them
CEP Engine SupportsEvent Semantics (point in time and interval) as first
class citizen analogous to rule semantics
Support both point in time (as interval with zero duration) and interval semantics
Ability to apply temporal constraints
Use Session clocks: Support Realtime (system) clock, Psedo Clock (controlled by application)
Sliding window support
Ability to scale to high volume of events
JBoss BRMS assets: CEP
Event A before Event B
Event A meets Event B
Event A overlaps Event B
Event A finishes Event B
Event A includes Event B
Event A starts Event B
Event A coincidces Event B
Event A after Event B
Event A metBy Event B
Event A overlapedBy Event B
Event A finishedBy Event B
Event A during Event B
Event A finishes Event B
when
Shipment( $pickupTime : scheduledPickupTime )
not ShipmentPickup( this before $pickupTime )
then
// shipment not picked up... Action required.
end
rule “Shipment not picked up in time”
13 Operators are Supported
JBoss BRMS assets: CEP
Apply 13 operators available
Define sliding time window or length
JBoss BRMS other assets
Spring contexteditor to define spring context files;once created they are accessible via HTTP inside the package
DSL functionsDefine rules in a domain specific language
EnumerationEnum data to be used in rules
Functions
Rule templates
JBoss BRMS other assets
A guided rule with DSL assertions
JBoss BRMS assets: JBPM5
A workflow is a process that describes the order in which a series of steps need to be executed, using a flow chart.
JBPM5 is based on Drools Flow
Workflow guided by rules
Rule workflows are the new “generation” of business workflows
Rules + workflow: dynamic processes
Available in BRMS 5.3
JBoss BRMS assets: JBPM5
JBPM5 workflow are BPMN2BPMN2 processes
No legacy xml to define the workflow but a standard!
Human task (human interaction with a flow)The task service implementation is based on the WS-HumanTask (WS-HT) specification
Rule Task: use drools rules inside the flow
Pluggable Service Task (work items): nodes with custom logic (e.g. DBControl, EJBControl, EmailControl)
Gateway (split,converge)the decision in a gateway can be taken by a drools rule!
Events (start,end,intermediate)
Timers
JBoss BRMS assets: JBPM5
BPMN2 editor in Eclipse
BPMN2 editor in BRMS (web designer)
BRMS can upload BPMN2 processes designed with other BPMN2 modeling tool
Automatic creation of human task forms
Validation of BPMN2 processes
Online repository to download ready to use service tasksJBPM Service repository
JBPM 3 to 5 migration toolhttps://github.com/droolsjbpm/jbpmmigration
JBoss BRMS assets: JBPM5
When defined a new work item is available inside Eclipse
JBoss BRMS assets: JBPM5
Web Designer integrated inside BRMS (starting from BRMS 5.3)
JBoss BRMS authoring
Every asset in BRMS is versioned; every time an asset changesa new version number is attached
Assets anyway can't be branched or tagged!
An asset contains meta data information
Assets can be categorized
An asset can be linked to many categories
Categories don't have any meaningat runtime; useful to order the assets
An asset can have a status (e.g “Draft”, “Completed”); it's a sort of label
JBoss BRMS authoring
A package otherwise is versioned on demand, taking a snapshot for deployment
Creating a snapshot means that the BRMS package is ready to be used from external application
Before taking a snapshot a build package is required
With a build every assets inside the package is validated
Status and Categories can be used to select only specific assets to include inside a snapshot (Use selector)(e.g. create a snaposhot only with assets belonging to category “Fraud” and with Status “Completed”)
A snapshot will be published inside the repository and accessible via a URL
JBoss BRMS authoring
JBoss BRMS deployment
JBoss BRMS deployment
Stand Alone Package
Well integrated
Best Out of the Box Experience
Lightweight Package
Flexibility of Container
Deploy to lightweight containers like Tomcat
JBoss BRMS Eclipse integration
Eclipse can be configured to import the resources (assets) published in BRMS
Assets can be edited in Eclipse and committed to BRMS (complete roundtrip)
Eclipse gives the capability to compare different version of the same asset
Requires JBoss Developer Studio 4.x or Eclipse 3.6.x + JBoss Tools
File --> Import --> Guvnor --> Resources from Guvnor
JBoss BRMS Eclipse integration
JBoss BRMS Rule Agent
How to use a BRMS package inside your application?
Create a Drools RuleAgent able to get (download) its KnowledgeBase from BRMS
Define a change-set.xml (simple xml file) file where the BRMS packages are listed
The KnowledgeBase is the entry point to fire rules, execute bpmn processes,...
JBoss BRMS Rule Agent
KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("MyAgent", kaconf);
kagent.applyChangeSet(ResourceFactory.newClassPathResource("change-set.xml"));KnowledgeBase
kbase = kagent.getKnowledgeBase();
change.set.xml
<?xml version="1.0" encoding="UTF-8"?><change-set xmlns="http://drools.org/drools-5.0/change-set"xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"xs:schemaLocation="http://drools.org/drools-5.0/change-set http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd" >
<add>
<resource source="http://localhost:8080/guvnor/org.drools.guvnor.Guvnor/package/JBUG/LATEST" type="PKG" basicAuthentication="enabled" username="uid" password="pwd"/>
</add>
</change-set>
JBoss BRMS Rule Agent
final StatefulKnowledgeSession ksession = kagent.getKnowledgeBase();
//insert fact instances in kbksession.insert(new Car("AudiA4",4)); ksession.startProcess("Process1");ksession.fireAllRules();ksession.dispose()
What to do with a KnowledgeBase?
start a process and insert some fact instances to be evaluated inside a process RuleTask
Resources
http://www.jboss.org/drools/lists
http://www.jboss.org/jbpm/lists
IRC server: irc.codehaus.org
Channels: #drools #guvnor #jbpm
THAT'S ALL FOLKS!THAT'S ALL FOLKS!
JBoss BRMS:
The enterprise platform for
Business Logic Integration
THANKS!gmarigi at redhat.com
Except where otherwise noted, content on this work is licensed under a Creative Commons Attribution 3.0 License.