SlideShare a Scribd company logo
1 of 69
Download to read offline
• Distinguished Engineer II
• Chief Architect
• Projects : Drools, jBPM and OptaPlanner
• Release per sprint
• 3 weeks per sprint
• Products : Red Hat PAM (BPMS) / DM (BRMS)
• Release per quarter
Mark Proctor
The Journey
2
• Drools (early 2000)
The Journey
<import>org.drools.examples.fibonacci.Fibonacci</import>
<rule name="Bootstrap 1" salience="20">
<parameter identifier="f">
<class>Fibonacci</class>
</parameter>
<java:condition>f.getSequence() == 1</java:condition>
<java:condition>f.getValue() == -1</java:condition>
<java:consequence>
f.setValue( 1 );
System.err.println( f.getSequence() + " == " + f.getValue() );
drools.modifyObject( f );
</java:consequence>
</rule>
Drools 2.x XML Syntax
The Journey
• Drools (early 2000)
• Drools 3 (2006)
• Joined JBoss 2005
• RHT acquired JBoss in 2006
import org.drools.examples.fibonacci.FibonacciExample.Fibonacci;
rule Bootstrap when
f : Fibonacci( sequence == 1 )
then
modify ( f ){ value = 1 };
System.out.println( f.sequence + " == " + f.value );
end
Drools 3.x - 7.x Syntax
The Journey
• Drools (early 2000)
• Drools 3 (2006)
• Drools 4 (2007)
• Increased expressiveness
• Better Performance
• Basic Drools Flow
• Basic BRMS
The Journey
• Drools (early 2000)
• Drools 3 (2006)
• Drools 4 (2007)
• Drools 5 (2009)
• BRMS improvements
• CEP
• Drools-Flow full workflow with BPMN
• Drools (early 2000)
• Drools 3 (2006)
• Drools 4 (2007)
• Drools 5 (2009)
• jBPM 5 (2011)
• incorporated from drools-flow
The Journey
The Journey
• Drools (early 2000)
• Drools 3 (2006)
• Drools 4 (2007)
• Drools 5 (2009)
• jBPM 5 (2011)
• Polymita acquisition (2012)
The Journey
• Drools (early 2000)
• Drools 3 (2006)
• Drools 4 (2007)
• Drools 5 (2009)
• jBPM 5 (2011)
• Polymita acquisition (2012)
• Drools & jBPM 6.0 (2013)
• Cloud runnable
• Modular Workbench
• Lazy rule algorithm
• Methodology based:
• Author, build, deploy, utilise
• Declarative
• OptaPlanner
The Journey
• Drools (early 2000)
• Drools 3 (2006)
• Drools 4 (2007)
• Drools 5 (2009)
• jBPM 5 (2011)
• Polymita acquisition (2012)
• Drools & jBPM 6.0 (2013)
• Drools & jBPM 7.0 (2018)
• Cloud enabled
• Improved UXD around a core set of functionality
• Targeting the Business Practitioner.
• Case Management
The Journey
• Drools (early 2000)
• Drools 3 (2006)
• Drools 4 (2007)
• Drools 5 (2009)
• jBPM 5 (2011)
• Polymita acquisition (2012)
• Drools & jBPM 6.0 (2013)
• Drools & jBPM 7.0 (2018)
• Submarine (2019)
The Journey
• Drools (early 2000)
• Drools 3 (2006)
• Drools 4 (2007)
• Drools 5 (2009)
• jBPM 5 (2011)
• Polymita acquisition (2012)
• Drools & jBPM 6.0 (2013)
• Drools & jBPM 7.0 (2018)
• Submarine (2019)
• Since 2011 quadrupled engineering
team size (2019)
• with dedicated QE (2.5 QE to 1 Eng) 

and UXD.
• Drools (early 2000)
• Drools 3 (2006)
• Drools 4 (2007)
• Drools 5 (2009)
• jBPM 5 (2011)
• Polymita acquisition (2012)
• Drools & jBPM 6.0 (2013)
• Drools & jBPM 7.0 (2018)
• Submarine (2019)
• Since 2011 quadrupled engineering team size (2019)
• Super Stars
The Journey
And Then This Happened
14
RHT Cloud
17
● Multi Cloud
● Using multiple public clouds.
● Avoid vendor lock-in.
● Lower costs, via competition
Multi Cloud
● Hybrid Cloud.
● Combination of 1 or more public and private clouds.
● With a degree of portability.
Hybrid Cloud
● Virtual Machines (Early Cloud).
● Virtualises the hardware.
● Slow startup.
● Inefficient use of resources (uses all memory).
● Containerisation (Modern Cloud) aka Kubernetes.
● Virtualises the Operating System.
● Instead of providing virtual hardware to a VM, you provide a virtual OS to your
application.
● Run large number of applications, with fast startup and efficient resource
utilisation.
● Higher Density.
Virtual Machines vs Containerisation
● Kubernetes is the project.
● OpenShift is the RHT Product based on Kubernetes.
● OpenShift has:
● Stricter security policies.
● Integrated CI/CD with Jenkins.
● Image Streams for image management.
● Single image with managed virtual tags (dev/stage/prod)
● Automated redeployment on new versions
● Automate build chains

OpenShift vs Kubernets
KNative
Kubernetes-based platform to build, deploy, and manage modern serverless workloads.
● KNative Build
○ Configurable and flexible approach to building source code into containers
● KNative Serving
○ Rapid deployment of serverless containers, with automatic scale-to-zero support.
○ Revisions mark point-in-time snapshots of deployed code and configurations.
● KNative Eventing
○ Universal subscription, delivery, and management of events
○ Scalable from just a few events to live streams
● Stateless (with Ephemeral Storage)
● Push caching and scaling to OCP K8
● Fast creation of pods on demand
● Push state external
● Sticky Sessions
● Templates and Operators
● Istio (Service Mesh)
● KNative / Serverless
Cloud Native Application
Quarkus (GraalVM)
24
● A polyglot VM with cross-language JIT supporting:
○ Java Bytecode and JVM languages
○ Interop with different languages
○ Dynamic languages through Truffle API
● Cross-language interop out of the box
○ Simple AST-based interpreter
○ JIT across language boundaries
● Support for native binary compilation (SubstrateVM)
○ faster boot-up
○ lower memory footprint
AOT Compilation
● Static Analysis
● Closed World Assumption
● Dead Code elimination
Faster Process
Start Time
Lower Memory
Footprint
Smaller Size
On Disk
● A Kubernetes Native Java stack tailored for GraalVM & OpenJDK
HotSpot
Eclipse Vert.x Hibernate RESTEasy Apache Camel Eclipse MicroProfile Netty
Kubernetes OpenShift Jaeger Prometheus Apache Kafka Infinispan
A cohesive platform for optimized developer joy:
! Based on standards, but not limited
! Unified configuration
! Zero config, live reload in the blink of an eye
! Streamlined code for the 80% common usages,
flexible for the 20%
! No hassle native executable generation
Developer Joy
Memory (RSS) in Megabytes
Quarkus + GraalVM
13 MB
Quarkus + OpenJDK
74 MB
Traditional Cloud Native Stack
140 MB
REST
Supersonic Subatomic Java
Memory (RSS) in Megabytes
REST +
CRUD
Quarkus + GraalVM
35 MB
Quarkus + OpenJDK
130 MB
Traditional Cloud Native Stack
218 MB
Supersonic Subatomic Java
Boot + First Response Time (in seconds)
Quarkus + GraalVM 0.014 Seconds
REST
REST +
CRUD
Quarkus + OpenJDK 0.75 Seconds
Quarkus + GraalVM 0.055 Seconds
Quarkus + OpenJDK 2.5 Seconds
Traditional Cloud Native Stack 9.5 Seconds
Traditional Cloud Native Stack 4.3 Seconds
Time to first response
Supersonic Subatomic Java
Submarine
32
○ Community, Skunk Works, effort exploring a number of directions
○ Cloud native (Kubernetes) architecture
■ First class environment for development of applications on OCP.
○ GraalVM / Quarkus
○ Domain-specific REST process service
○ OmniChannel tooling with VSCode/Che
■ With consistent Business Practitioner version (e.g. electron.js)
○ Goal - provide services* attractive to OpenShift application developers for:
■ Decisions (rules)
■ Process (workflow)
■ Events
■ Optimizations
Submarine
● A pure Java DSL for rules and process authoring
● A pure Java canonical representation of a rule base
● Automatically generated by Maven plugin or Quarkus extension
● Can be embedded in jar
● Faster boot
● Allow for faster prototyping and experimentation of new features, without
worrying about language design
● Prerequisite to make Drools and jBPM natively compilable on GraalVM
Canonical Executable Model : What
● Do not parse BPMN, DRL, DMN etc at runtime.
○ Generate code from parsers at build time.
○ Executable means java rules and workflow fluent DSLs.
● Removed
○ Reflection
○ Bytecode Generation
● Move all “determinism” to the language layer
○ Indexes, property reactivity
Canonical Executable Model : How
Canonical Executable Model : Rules
Canonical Executable Model : Processes
Canonical Executable Model : drools.js
const Person = Java.type('org.submarine.examples.polyglot.Person');
const markV = declarationOf( Person.class );
const olderV = declarationOf( Person.class );
const r = Rule("X is older than Mark").build(
Pattern(markV).expr(p => p.getName() === "Mark"),
Pattern(olderV)
.expr(p => p.getName() !== "Mark")
.expr(markV, (p1, p2) => p1.getAge() > p2.getAge()),
on(olderV, markV).execute((p1, p2) =>
console.log( p1.getName() + " is older than " + p2.getName())));
const m = Model(r);
const s = Session(m);
console.log("start")
s.insert(new Person("Mark", 37));
s.insert(new Person("Edson", 35));
s.insert(new Person("Mario", 40));
s.fireAllRules();
console.log("end")
Canonical Executable Model : jbpm.js
const ProcessRuntime = Java.type("org.kie.api.process.ProcessRuntime")
const RuleFlowProcessFactory = Java.type('org.jbpm.ruleflow.core.RuleFlowProcessFactory');
const factory = RuleFlowProcessFactory.createProcess("org.kie.api2.MyProcessUnit");
factory
// Header
.name("HelloWorldProcess").version("1.0").packageName("org.jbpm")
// Nodes
.startNode(1).name("Start").done()
.actionNode(2).name("Action")
.action(ctx => {
console.log("this is an actionprotean");
}).done()
.endNode(3).name("End").done()
// Connections
.connection(1, 2)
.connection(2, 3);
p = factory.validate().getProcess();
Onboarding
Service
Payroll
Service
HR
Service
https://github.com/mswiderski/onboarding-sample
Domain-specific Service: Onboarding application
OmniChannel Architecture
Architecture
Drools Challenges
47
OPS
48
(p mb17
(goal ^status active ^type on ^object <o>)
(object ^name <o> ^at <p>)
(monkey ^at <p> ^holds nil)
-->
(write (crlf) "climb onto" <o>)
(modify 3 ^on <o>)
(modify 1 ^status satisfied))
OPS
•Official Production System.
•pre OPS5 linear Search.
•Conflict Resolution 

McDermott, Charles L (Charles Lanny) Forgy. 

“Production System Conflict 

Resolution Strategies,” 1976, 23.
OPS5 1981
•Language
•Rete
•LEX/MEA Working
Memory
Rules
Inference Engine
Pattern
Matching
Agenda
Jess
49
(deftemplate employee (slot salary) (slot name))
(defrule count-highly-paid-employees
?c <- (accumulate (bind ?count 0) ;; initializer
(bind ?count (+ ?count 1)) ;; action
?count ;; result
(employee (salary ?s&:(> ?s 100000)))) ;; CE
=>
(printout t ?c " employees make more than $100000/year." crlf))
Jess
•Java implementation of Clips syntax
Jess7 2006
•Accumulate
•Slot Specific
•Backward Chaining (ish)
Working
Memory
Modules
Inference Engine
Pattern
Matching
Agenda
Drools
50
Drools
•Clips/Jess derivative with Java-like language
Drools 7.x
•Accumulate
•Temporal Operators
•Property Reactive
•Prolog(ish) Backward Chaining
•OOPath
Working
Memory
Modules
Inference Engine
Pattern
Matching
Agenda
Still Here
51
Working MemoryModules
Inference Engine
Pattern Matching
Agenda
Still Here
52
Working
MemoryModules
Inference Engine
Pattern
Matching
Agenda
“Today, I want to make clear that the future prospects for production
rule technology are diminishing..…

production rule technology is inadequate ” 

(Paul Haley 2013)

http://haleyai.com/wordpress/2013/06/22/confessions-of-a-production-rule-vendor-part-1/
Still Here
53
Working
MemoryModules
Inference Engine
Pattern
Matching
Agenda
“Today, I want to make clear that the future prospects for production
rule technology are diminishing..…

production rule technology is inadequate” 

(Paul Haley 2013)

http://haleyai.com/wordpress/2013/06/22/confessions-of-a-production-rule-vendor-part-1/
Active DataBases
•Validation enforcement, triggers.
•Simpler semantics, no forward chaining.
•Without 2 phase. Does not allow mutation of selected tables.
•Scoped deterministic execution within the transaction
Decisioning
•DMN
CEP
•Power of production system LHS, with additional temporal reasoning
•No inference, rules are isolated
Reactive Programming with Pattern Matching
•Light Weight, simple facet of a production system
•No Reactive Joins, but can do passive joins
•Built into native language
Offshoots
54
Reactive Programming / Pattern Matching
55
public static class Customer {
int String name;
int discount = 0;
}
public static class GoldCustomer extends Customer { }
public static class SilverCustomer extends Customer { }
public static class BronzeCustomer extends Customer { }
public static void main( String[] args ) {
observable.subscribe( customer -> {
switch (customer) {
case GoldCustomer g: {
CriteriaQuery<Double> cr = cb.createQuery(Double.class);
Root<ShoppingCart> root = cr.from(ShoppingCart.class);
cr.select(cb.sum(root.get("items.value"))).where("customer = " + g.name);
Query<Double> query = session.createQuery(cr);
double total = query.getResultList().get(0);
g.discount = total > 100 ? 20 : 15;
break;
}
case SilverCustomer s: s.discount = 10; ………… break;
case BronzeCustomer b: b.discount = 5; ………… break;
default: customer.discount = 0;
}
} );
}
Blended Languages - LinQ / Reactive LinQ
56
var result=
(
from data in myData
join inData in incomingData
on data.ID equals inData.ID
select new
{
data.ID,
inData.LOCATION,
data.COUNT
}
).ToList();
Still Here
57
Working
MemoryModules
Inference Engine
Pattern
Matching
Agenda
“It’s time to trade rule technology dating back to the 80’s for state of
the art AI…


Artificial intelligence (AI) and natural language processing (NLP)
have improved dramatically.
Logical reasoning technology has advanced while production rule
technology remains stagnant” (Paul Haley 2018)


• http://haleyai.com/wordpress/2018/04/02/confessions-of-a-production-rule-vendor-part-2/
Still Here
58
Working MemoryModules
Inference Engine
Pattern Matching
Agenda
Still Here
59
Drools areas of
Improvements
60
•Pluggable Knowledge Types
•Canonical Model
•Separation of rules from data
•Improved, declarative, rule execution control (Instead of push/pop stacks)
•Common “unit of execution” for runtimes (rules, workflow, bpm).
•Improved APIs and programming model
•Pluggable Belief Systems
Areas of Improvements
61
Simple TMS
62
•A rule “logically” inserts an object
•When the rule is no longer true, the object is retracted.
rule "IsChild"
when
$p : Person( age < 16 )
then
logicalInsert( new IsChild( $p ) )
end
rule "IsAdult"
when
$p : Person( age >= 16 )
then
logicalInsert( new IsAdult( $p ) )
end
rule "Issue Child Bus Pass"
when
$p : Person( )
IsChild( person =$p )
then
logicalInsert(new ChildBusPass( $p ) );
end
rule "Issue Adult Bus Pass"
when
$p : Person()
IsAdult( person =$p )
then
logicalInsert(new AdultBusPass( $p ) );
end
Defeasible
63
rule "All Birds Fly" @Defeasible
when
$b : Bird( )
then
logicalInsert(new Fly( $b ) );
end
rule "Penguins With Rockets Fly”
@Defeasible @Defeats(“Penguins Don't Fly”)
when
$b : Penguin( )
Rocket($b;)
then
logicalInsert(new Fly( $b ) );
end
rule "Penguins Don't Fly"
@Defeasible @Defeater
when
$b : Bird( )
Penguin($b;)
then
logicalInsert(new Fly( $b ), “neg” );
end
Bayesian Network
64
Bayesian Network
65
KnowledgeBuilder kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kBuilder.add( ResourceFactory.newClassPathResource(“rules.drl”), ResourceType.DRL );
kBuilder.add( ResourceFactory.newClassPathResource(“Garden.xmlbif"), ResourceType.BAYES );
KnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase();
kBase.addKnowledgePackages( kBuilder.getKnowledgePackages() );
Pluggable Beliefs - Bayesian Network
66
BayesInstance<Garden> instance = bayesRuntime.createInstance(Garden.class);
BayesVariable var = ( BayesVariable ) instance.getFieldNames().get( “WetGrass” );
bayesInstance.setDecided(var, true);
bayesInstance.setLikelyhood( var, [1.0,0.0] );


Garden garden = instance.marginalize();;
FactHandle fh = ksession.insert( garden );
ksession.insert( new Cloud() );
ksession.fireAllRules();
rule "I see clouds" when
g : Garden(decided == false)
exists Cloud()
then
insertLogical( bayesVar(g, 'Cloudy'),
evidenceFactory.create( new double[] {1.0,0.0} ) );
end
rule "It probably rained" when
Garden(decided == true, rain == true)
then
System.out.println( "Rain" );
end
Explainable AI (XAI)
67
DARPA : Explainable AI (XAI)
Explainability / Trustworthiness / Compliance
Drools, jBPM OptaPlanner presentation

More Related Content

What's hot

Drools and BRMS 6.0 (Dublin Aug 2013)
Drools and BRMS 6.0 (Dublin Aug 2013)Drools and BRMS 6.0 (Dublin Aug 2013)
Drools and BRMS 6.0 (Dublin Aug 2013)Mark Proctor
 
Drools New York City workshop 2011
Drools New York City workshop 2011Drools New York City workshop 2011
Drools New York City workshop 2011Geoffrey De Smet
 
JBoss Drools - Open-Source Business Logic Platform
JBoss Drools - Open-Source Business Logic PlatformJBoss Drools - Open-Source Business Logic Platform
JBoss Drools - Open-Source Business Logic Platformelliando dias
 
Kogito: cloud native business automation
Kogito: cloud native business automationKogito: cloud native business automation
Kogito: cloud native business automationMario Fusco
 
2012 02-04 fosdem 2012 - drools planner
2012 02-04 fosdem 2012 - drools planner2012 02-04 fosdem 2012 - drools planner
2012 02-04 fosdem 2012 - drools plannerGeoffrey De Smet
 
What's new in Drools 6 - London JBUG 2013
What's new in Drools 6 - London JBUG 2013What's new in Drools 6 - London JBUG 2013
What's new in Drools 6 - London JBUG 2013Mark Proctor
 
Cassandra Summit EU 2014 - Testing Cassandra Applications
Cassandra Summit EU 2014 - Testing Cassandra ApplicationsCassandra Summit EU 2014 - Testing Cassandra Applications
Cassandra Summit EU 2014 - Testing Cassandra ApplicationsChristopher Batey
 
Cassandra is great but how do I test my application?
Cassandra is great but how do I test my application?Cassandra is great but how do I test my application?
Cassandra is great but how do I test my application?Christopher Batey
 
Fault tolerant microservices - LJC Skills Matter 4thNov2014
Fault tolerant microservices - LJC Skills Matter 4thNov2014Fault tolerant microservices - LJC Skills Matter 4thNov2014
Fault tolerant microservices - LJC Skills Matter 4thNov2014Christopher Batey
 
LJC Conference 2014 Cassandra for Java Developers
LJC Conference 2014 Cassandra for Java DevelopersLJC Conference 2014 Cassandra for Java Developers
LJC Conference 2014 Cassandra for Java DevelopersChristopher Batey
 
Biz Talk Demo slideshare
Biz Talk Demo slideshareBiz Talk Demo slideshare
Biz Talk Demo slideshareerios
 
Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Ben Lesh
 
Testing and validating spark programs - Strata SJ 2016
Testing and validating spark programs - Strata SJ 2016Testing and validating spark programs - Strata SJ 2016
Testing and validating spark programs - Strata SJ 2016Holden Karau
 
Docker and jvm. A good idea?
Docker and jvm. A good idea?Docker and jvm. A good idea?
Docker and jvm. A good idea?Christopher Batey
 
DataStax: Making Cassandra Fail (for effective testing)
DataStax: Making Cassandra Fail (for effective testing)DataStax: Making Cassandra Fail (for effective testing)
DataStax: Making Cassandra Fail (for effective testing)DataStax Academy
 
Effective testing for spark programs scala bay preview (pre-strata ny 2015)
Effective testing for spark programs scala bay preview (pre-strata ny 2015)Effective testing for spark programs scala bay preview (pre-strata ny 2015)
Effective testing for spark programs scala bay preview (pre-strata ny 2015)Holden Karau
 
Cassandra Summit EU 2014 Lightning talk - Paging (no animation)
Cassandra Summit EU 2014 Lightning talk - Paging (no animation)Cassandra Summit EU 2014 Lightning talk - Paging (no animation)
Cassandra Summit EU 2014 Lightning talk - Paging (no animation)Christopher Batey
 

What's hot (20)

Drools and BRMS 6.0 (Dublin Aug 2013)
Drools and BRMS 6.0 (Dublin Aug 2013)Drools and BRMS 6.0 (Dublin Aug 2013)
Drools and BRMS 6.0 (Dublin Aug 2013)
 
Drools & jBPM Workshop London 2013
Drools & jBPM Workshop London 2013Drools & jBPM Workshop London 2013
Drools & jBPM Workshop London 2013
 
Drools New York City workshop 2011
Drools New York City workshop 2011Drools New York City workshop 2011
Drools New York City workshop 2011
 
JBoss Drools - Open-Source Business Logic Platform
JBoss Drools - Open-Source Business Logic PlatformJBoss Drools - Open-Source Business Logic Platform
JBoss Drools - Open-Source Business Logic Platform
 
Kogito: cloud native business automation
Kogito: cloud native business automationKogito: cloud native business automation
Kogito: cloud native business automation
 
Drools rule Concepts
Drools rule ConceptsDrools rule Concepts
Drools rule Concepts
 
2012 02-04 fosdem 2012 - drools planner
2012 02-04 fosdem 2012 - drools planner2012 02-04 fosdem 2012 - drools planner
2012 02-04 fosdem 2012 - drools planner
 
What's new in Drools 6 - London JBUG 2013
What's new in Drools 6 - London JBUG 2013What's new in Drools 6 - London JBUG 2013
What's new in Drools 6 - London JBUG 2013
 
Cassandra Summit EU 2014 - Testing Cassandra Applications
Cassandra Summit EU 2014 - Testing Cassandra ApplicationsCassandra Summit EU 2014 - Testing Cassandra Applications
Cassandra Summit EU 2014 - Testing Cassandra Applications
 
Cassandra is great but how do I test my application?
Cassandra is great but how do I test my application?Cassandra is great but how do I test my application?
Cassandra is great but how do I test my application?
 
Fault tolerant microservices - LJC Skills Matter 4thNov2014
Fault tolerant microservices - LJC Skills Matter 4thNov2014Fault tolerant microservices - LJC Skills Matter 4thNov2014
Fault tolerant microservices - LJC Skills Matter 4thNov2014
 
LJC Conference 2014 Cassandra for Java Developers
LJC Conference 2014 Cassandra for Java DevelopersLJC Conference 2014 Cassandra for Java Developers
LJC Conference 2014 Cassandra for Java Developers
 
Biz Talk Demo slideshare
Biz Talk Demo slideshareBiz Talk Demo slideshare
Biz Talk Demo slideshare
 
Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016
 
Drools & jBPM Workshop Barcelona 2013
Drools & jBPM Workshop  Barcelona 2013Drools & jBPM Workshop  Barcelona 2013
Drools & jBPM Workshop Barcelona 2013
 
Testing and validating spark programs - Strata SJ 2016
Testing and validating spark programs - Strata SJ 2016Testing and validating spark programs - Strata SJ 2016
Testing and validating spark programs - Strata SJ 2016
 
Docker and jvm. A good idea?
Docker and jvm. A good idea?Docker and jvm. A good idea?
Docker and jvm. A good idea?
 
DataStax: Making Cassandra Fail (for effective testing)
DataStax: Making Cassandra Fail (for effective testing)DataStax: Making Cassandra Fail (for effective testing)
DataStax: Making Cassandra Fail (for effective testing)
 
Effective testing for spark programs scala bay preview (pre-strata ny 2015)
Effective testing for spark programs scala bay preview (pre-strata ny 2015)Effective testing for spark programs scala bay preview (pre-strata ny 2015)
Effective testing for spark programs scala bay preview (pre-strata ny 2015)
 
Cassandra Summit EU 2014 Lightning talk - Paging (no animation)
Cassandra Summit EU 2014 Lightning talk - Paging (no animation)Cassandra Summit EU 2014 Lightning talk - Paging (no animation)
Cassandra Summit EU 2014 Lightning talk - Paging (no animation)
 

Similar to Drools, jBPM OptaPlanner presentation

Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Jakarta_EE
 
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019The Eclipse Foundation
 
[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1Rubens Dos Santos Filho
 
DCSF19 Docker Containers & Java: What I Wish I Had Been Told
DCSF19 Docker Containers & Java: What I Wish I Had Been ToldDCSF19 Docker Containers & Java: What I Wish I Had Been Told
DCSF19 Docker Containers & Java: What I Wish I Had Been ToldDocker, Inc.
 
Quarkus Denmark 2019
Quarkus Denmark 2019Quarkus Denmark 2019
Quarkus Denmark 2019Max Andersen
 
Commit to excellence - Java in containers
Commit to excellence - Java in containersCommit to excellence - Java in containers
Commit to excellence - Java in containersRed Hat Developers
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Ryan Cuprak
 
Docker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline ExecutionDocker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline ExecutionBrennan Saeta
 
Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVMSylvain Wallez
 
Groovy In the Cloud
Groovy In the CloudGroovy In the Cloud
Groovy In the CloudJim Driscoll
 
Quarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java frameworkQuarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java frameworkSVDevOps
 
Reactive Amsterdam - Maxim Burgerhout - Quarkus Intro
Reactive Amsterdam - Maxim Burgerhout - Quarkus IntroReactive Amsterdam - Maxim Burgerhout - Quarkus Intro
Reactive Amsterdam - Maxim Burgerhout - Quarkus IntroFabio Tiriticco
 
Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019graemerocher
 
Lagergren jvmls-2014-final
Lagergren jvmls-2014-finalLagergren jvmls-2014-final
Lagergren jvmls-2014-finalMarcus Lagergren
 
Top 10 Kubernetes Native Java Quarkus Features
Top 10 Kubernetes Native Java Quarkus FeaturesTop 10 Kubernetes Native Java Quarkus Features
Top 10 Kubernetes Native Java Quarkus Featuresjclingan
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned RightScale
 
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkSpring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkRed Hat Developers
 
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"Daniel Bryant
 
GraalVM - MadridJUG 2019-10-22
GraalVM - MadridJUG 2019-10-22GraalVM - MadridJUG 2019-10-22
GraalVM - MadridJUG 2019-10-22Jorge Hidalgo
 

Similar to Drools, jBPM OptaPlanner presentation (20)

Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
 
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
 
[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1
 
DCSF19 Docker Containers & Java: What I Wish I Had Been Told
DCSF19 Docker Containers & Java: What I Wish I Had Been ToldDCSF19 Docker Containers & Java: What I Wish I Had Been Told
DCSF19 Docker Containers & Java: What I Wish I Had Been Told
 
Quarkus Denmark 2019
Quarkus Denmark 2019Quarkus Denmark 2019
Quarkus Denmark 2019
 
Commit to excellence - Java in containers
Commit to excellence - Java in containersCommit to excellence - Java in containers
Commit to excellence - Java in containers
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
Peru JUG Micronaut & GraalVM
Peru JUG Micronaut & GraalVMPeru JUG Micronaut & GraalVM
Peru JUG Micronaut & GraalVM
 
Docker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline ExecutionDocker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline Execution
 
Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVM
 
Groovy In the Cloud
Groovy In the CloudGroovy In the Cloud
Groovy In the Cloud
 
Quarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java frameworkQuarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java framework
 
Reactive Amsterdam - Maxim Burgerhout - Quarkus Intro
Reactive Amsterdam - Maxim Burgerhout - Quarkus IntroReactive Amsterdam - Maxim Burgerhout - Quarkus Intro
Reactive Amsterdam - Maxim Burgerhout - Quarkus Intro
 
Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019
 
Lagergren jvmls-2014-final
Lagergren jvmls-2014-finalLagergren jvmls-2014-final
Lagergren jvmls-2014-final
 
Top 10 Kubernetes Native Java Quarkus Features
Top 10 Kubernetes Native Java Quarkus FeaturesTop 10 Kubernetes Native Java Quarkus Features
Top 10 Kubernetes Native Java Quarkus Features
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned
 
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkSpring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
 
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
 
GraalVM - MadridJUG 2019-10-22
GraalVM - MadridJUG 2019-10-22GraalVM - MadridJUG 2019-10-22
GraalVM - MadridJUG 2019-10-22
 

More from Mark Proctor

Rule Modularity and Execution Control
Rule Modularity and Execution ControlRule Modularity and Execution Control
Rule Modularity and Execution ControlMark Proctor
 
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...Mark Proctor
 
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)Mark Proctor
 
Learning Rule Based Programming using Games @DecisionCamp 2016
Learning Rule Based Programming using Games @DecisionCamp 2016Learning Rule Based Programming using Games @DecisionCamp 2016
Learning Rule Based Programming using Games @DecisionCamp 2016Mark Proctor
 
Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Mark Proctor
 
RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning Mark Proctor
 
Red Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
Red Hat Summit 2015 : Drools, jBPM and UberFire RoadmapsRed Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
Red Hat Summit 2015 : Drools, jBPM and UberFire RoadmapsMark Proctor
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyMark Proctor
 
Classic Games Development with Drools
Classic Games Development with DroolsClassic Games Development with Drools
Classic Games Development with DroolsMark Proctor
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 OverviewMark Proctor
 
UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)Mark Proctor
 
Property Reactive RuleML 2013
Property Reactive RuleML 2013Property Reactive RuleML 2013
Property Reactive RuleML 2013Mark Proctor
 
Reactive Transitive Closures with Drools (Backward Chaining)
Reactive Transitive Closures with Drools (Backward Chaining)Reactive Transitive Closures with Drools (Backward Chaining)
Reactive Transitive Closures with Drools (Backward Chaining)Mark Proctor
 
Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)Mark Proctor
 
Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)Mark Proctor
 
UberFire Quick Intro and Overview (early beta Jul 2013)
UberFire Quick Intro and Overview (early beta Jul 2013)UberFire Quick Intro and Overview (early beta Jul 2013)
UberFire Quick Intro and Overview (early beta Jul 2013)Mark Proctor
 
UberFire (JudCon 2013)
UberFire (JudCon 2013)UberFire (JudCon 2013)
UberFire (JudCon 2013)Mark Proctor
 
Drools 6.0 (Red Hat Summit 2013)
Drools 6.0 (Red Hat Summit 2013)Drools 6.0 (Red Hat Summit 2013)
Drools 6.0 (Red Hat Summit 2013)Mark Proctor
 
Games development with the Drools rule engine
Games development with the Drools rule engineGames development with the Drools rule engine
Games development with the Drools rule engineMark Proctor
 
Drools & jBPM future roadmap talk
Drools & jBPM future roadmap talkDrools & jBPM future roadmap talk
Drools & jBPM future roadmap talkMark Proctor
 

More from Mark Proctor (20)

Rule Modularity and Execution Control
Rule Modularity and Execution ControlRule Modularity and Execution Control
Rule Modularity and Execution Control
 
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
 
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
 
Learning Rule Based Programming using Games @DecisionCamp 2016
Learning Rule Based Programming using Games @DecisionCamp 2016Learning Rule Based Programming using Games @DecisionCamp 2016
Learning Rule Based Programming using Games @DecisionCamp 2016
 
Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016
 
RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning
 
Red Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
Red Hat Summit 2015 : Drools, jBPM and UberFire RoadmapsRed Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
Red Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
 
Classic Games Development with Drools
Classic Games Development with DroolsClassic Games Development with Drools
Classic Games Development with Drools
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 Overview
 
UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)
 
Property Reactive RuleML 2013
Property Reactive RuleML 2013Property Reactive RuleML 2013
Property Reactive RuleML 2013
 
Reactive Transitive Closures with Drools (Backward Chaining)
Reactive Transitive Closures with Drools (Backward Chaining)Reactive Transitive Closures with Drools (Backward Chaining)
Reactive Transitive Closures with Drools (Backward Chaining)
 
Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)
 
Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)
 
UberFire Quick Intro and Overview (early beta Jul 2013)
UberFire Quick Intro and Overview (early beta Jul 2013)UberFire Quick Intro and Overview (early beta Jul 2013)
UberFire Quick Intro and Overview (early beta Jul 2013)
 
UberFire (JudCon 2013)
UberFire (JudCon 2013)UberFire (JudCon 2013)
UberFire (JudCon 2013)
 
Drools 6.0 (Red Hat Summit 2013)
Drools 6.0 (Red Hat Summit 2013)Drools 6.0 (Red Hat Summit 2013)
Drools 6.0 (Red Hat Summit 2013)
 
Games development with the Drools rule engine
Games development with the Drools rule engineGames development with the Drools rule engine
Games development with the Drools rule engine
 
Drools & jBPM future roadmap talk
Drools & jBPM future roadmap talkDrools & jBPM future roadmap talk
Drools & jBPM future roadmap talk
 

Recently uploaded

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 

Recently uploaded (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

Drools, jBPM OptaPlanner presentation

  • 1. • Distinguished Engineer II • Chief Architect • Projects : Drools, jBPM and OptaPlanner • Release per sprint • 3 weeks per sprint • Products : Red Hat PAM (BPMS) / DM (BRMS) • Release per quarter Mark Proctor
  • 3. • Drools (early 2000) The Journey <import>org.drools.examples.fibonacci.Fibonacci</import> <rule name="Bootstrap 1" salience="20"> <parameter identifier="f"> <class>Fibonacci</class> </parameter> <java:condition>f.getSequence() == 1</java:condition> <java:condition>f.getValue() == -1</java:condition> <java:consequence> f.setValue( 1 ); System.err.println( f.getSequence() + " == " + f.getValue() ); drools.modifyObject( f ); </java:consequence> </rule> Drools 2.x XML Syntax
  • 4. The Journey • Drools (early 2000) • Drools 3 (2006) • Joined JBoss 2005 • RHT acquired JBoss in 2006 import org.drools.examples.fibonacci.FibonacciExample.Fibonacci; rule Bootstrap when f : Fibonacci( sequence == 1 ) then modify ( f ){ value = 1 }; System.out.println( f.sequence + " == " + f.value ); end Drools 3.x - 7.x Syntax
  • 5. The Journey • Drools (early 2000) • Drools 3 (2006) • Drools 4 (2007) • Increased expressiveness • Better Performance • Basic Drools Flow • Basic BRMS
  • 6. The Journey • Drools (early 2000) • Drools 3 (2006) • Drools 4 (2007) • Drools 5 (2009) • BRMS improvements • CEP • Drools-Flow full workflow with BPMN
  • 7. • Drools (early 2000) • Drools 3 (2006) • Drools 4 (2007) • Drools 5 (2009) • jBPM 5 (2011) • incorporated from drools-flow The Journey
  • 8. The Journey • Drools (early 2000) • Drools 3 (2006) • Drools 4 (2007) • Drools 5 (2009) • jBPM 5 (2011) • Polymita acquisition (2012)
  • 9. The Journey • Drools (early 2000) • Drools 3 (2006) • Drools 4 (2007) • Drools 5 (2009) • jBPM 5 (2011) • Polymita acquisition (2012) • Drools & jBPM 6.0 (2013) • Cloud runnable • Modular Workbench • Lazy rule algorithm • Methodology based: • Author, build, deploy, utilise • Declarative • OptaPlanner
  • 10. The Journey • Drools (early 2000) • Drools 3 (2006) • Drools 4 (2007) • Drools 5 (2009) • jBPM 5 (2011) • Polymita acquisition (2012) • Drools & jBPM 6.0 (2013) • Drools & jBPM 7.0 (2018) • Cloud enabled • Improved UXD around a core set of functionality • Targeting the Business Practitioner. • Case Management
  • 11. The Journey • Drools (early 2000) • Drools 3 (2006) • Drools 4 (2007) • Drools 5 (2009) • jBPM 5 (2011) • Polymita acquisition (2012) • Drools & jBPM 6.0 (2013) • Drools & jBPM 7.0 (2018) • Submarine (2019)
  • 12. The Journey • Drools (early 2000) • Drools 3 (2006) • Drools 4 (2007) • Drools 5 (2009) • jBPM 5 (2011) • Polymita acquisition (2012) • Drools & jBPM 6.0 (2013) • Drools & jBPM 7.0 (2018) • Submarine (2019) • Since 2011 quadrupled engineering team size (2019) • with dedicated QE (2.5 QE to 1 Eng) 
 and UXD.
  • 13. • Drools (early 2000) • Drools 3 (2006) • Drools 4 (2007) • Drools 5 (2009) • jBPM 5 (2011) • Polymita acquisition (2012) • Drools & jBPM 6.0 (2013) • Drools & jBPM 7.0 (2018) • Submarine (2019) • Since 2011 quadrupled engineering team size (2019) • Super Stars The Journey
  • 14. And Then This Happened 14
  • 15.
  • 16.
  • 18. ● Multi Cloud ● Using multiple public clouds. ● Avoid vendor lock-in. ● Lower costs, via competition Multi Cloud
  • 19. ● Hybrid Cloud. ● Combination of 1 or more public and private clouds. ● With a degree of portability. Hybrid Cloud
  • 20. ● Virtual Machines (Early Cloud). ● Virtualises the hardware. ● Slow startup. ● Inefficient use of resources (uses all memory). ● Containerisation (Modern Cloud) aka Kubernetes. ● Virtualises the Operating System. ● Instead of providing virtual hardware to a VM, you provide a virtual OS to your application. ● Run large number of applications, with fast startup and efficient resource utilisation. ● Higher Density. Virtual Machines vs Containerisation
  • 21. ● Kubernetes is the project. ● OpenShift is the RHT Product based on Kubernetes. ● OpenShift has: ● Stricter security policies. ● Integrated CI/CD with Jenkins. ● Image Streams for image management. ● Single image with managed virtual tags (dev/stage/prod) ● Automated redeployment on new versions ● Automate build chains
 OpenShift vs Kubernets
  • 22. KNative Kubernetes-based platform to build, deploy, and manage modern serverless workloads. ● KNative Build ○ Configurable and flexible approach to building source code into containers ● KNative Serving ○ Rapid deployment of serverless containers, with automatic scale-to-zero support. ○ Revisions mark point-in-time snapshots of deployed code and configurations. ● KNative Eventing ○ Universal subscription, delivery, and management of events ○ Scalable from just a few events to live streams
  • 23. ● Stateless (with Ephemeral Storage) ● Push caching and scaling to OCP K8 ● Fast creation of pods on demand ● Push state external ● Sticky Sessions ● Templates and Operators ● Istio (Service Mesh) ● KNative / Serverless Cloud Native Application
  • 25. ● A polyglot VM with cross-language JIT supporting: ○ Java Bytecode and JVM languages ○ Interop with different languages ○ Dynamic languages through Truffle API ● Cross-language interop out of the box ○ Simple AST-based interpreter ○ JIT across language boundaries ● Support for native binary compilation (SubstrateVM) ○ faster boot-up ○ lower memory footprint
  • 26. AOT Compilation ● Static Analysis ● Closed World Assumption ● Dead Code elimination Faster Process Start Time Lower Memory Footprint Smaller Size On Disk
  • 27. ● A Kubernetes Native Java stack tailored for GraalVM & OpenJDK HotSpot Eclipse Vert.x Hibernate RESTEasy Apache Camel Eclipse MicroProfile Netty Kubernetes OpenShift Jaeger Prometheus Apache Kafka Infinispan
  • 28. A cohesive platform for optimized developer joy: ! Based on standards, but not limited ! Unified configuration ! Zero config, live reload in the blink of an eye ! Streamlined code for the 80% common usages, flexible for the 20% ! No hassle native executable generation Developer Joy
  • 29. Memory (RSS) in Megabytes Quarkus + GraalVM 13 MB Quarkus + OpenJDK 74 MB Traditional Cloud Native Stack 140 MB REST Supersonic Subatomic Java
  • 30. Memory (RSS) in Megabytes REST + CRUD Quarkus + GraalVM 35 MB Quarkus + OpenJDK 130 MB Traditional Cloud Native Stack 218 MB Supersonic Subatomic Java
  • 31. Boot + First Response Time (in seconds) Quarkus + GraalVM 0.014 Seconds REST REST + CRUD Quarkus + OpenJDK 0.75 Seconds Quarkus + GraalVM 0.055 Seconds Quarkus + OpenJDK 2.5 Seconds Traditional Cloud Native Stack 9.5 Seconds Traditional Cloud Native Stack 4.3 Seconds Time to first response Supersonic Subatomic Java
  • 33. ○ Community, Skunk Works, effort exploring a number of directions ○ Cloud native (Kubernetes) architecture ■ First class environment for development of applications on OCP. ○ GraalVM / Quarkus ○ Domain-specific REST process service ○ OmniChannel tooling with VSCode/Che ■ With consistent Business Practitioner version (e.g. electron.js) ○ Goal - provide services* attractive to OpenShift application developers for: ■ Decisions (rules) ■ Process (workflow) ■ Events ■ Optimizations Submarine
  • 34. ● A pure Java DSL for rules and process authoring ● A pure Java canonical representation of a rule base ● Automatically generated by Maven plugin or Quarkus extension ● Can be embedded in jar ● Faster boot ● Allow for faster prototyping and experimentation of new features, without worrying about language design ● Prerequisite to make Drools and jBPM natively compilable on GraalVM Canonical Executable Model : What
  • 35. ● Do not parse BPMN, DRL, DMN etc at runtime. ○ Generate code from parsers at build time. ○ Executable means java rules and workflow fluent DSLs. ● Removed ○ Reflection ○ Bytecode Generation ● Move all “determinism” to the language layer ○ Indexes, property reactivity Canonical Executable Model : How
  • 38. Canonical Executable Model : drools.js const Person = Java.type('org.submarine.examples.polyglot.Person'); const markV = declarationOf( Person.class ); const olderV = declarationOf( Person.class ); const r = Rule("X is older than Mark").build( Pattern(markV).expr(p => p.getName() === "Mark"), Pattern(olderV) .expr(p => p.getName() !== "Mark") .expr(markV, (p1, p2) => p1.getAge() > p2.getAge()), on(olderV, markV).execute((p1, p2) => console.log( p1.getName() + " is older than " + p2.getName()))); const m = Model(r); const s = Session(m); console.log("start") s.insert(new Person("Mark", 37)); s.insert(new Person("Edson", 35)); s.insert(new Person("Mario", 40)); s.fireAllRules(); console.log("end")
  • 39. Canonical Executable Model : jbpm.js const ProcessRuntime = Java.type("org.kie.api.process.ProcessRuntime") const RuleFlowProcessFactory = Java.type('org.jbpm.ruleflow.core.RuleFlowProcessFactory'); const factory = RuleFlowProcessFactory.createProcess("org.kie.api2.MyProcessUnit"); factory // Header .name("HelloWorldProcess").version("1.0").packageName("org.jbpm") // Nodes .startNode(1).name("Start").done() .actionNode(2).name("Action") .action(ctx => { console.log("this is an actionprotean"); }).done() .endNode(3).name("End").done() // Connections .connection(1, 2) .connection(2, 3); p = factory.validate().getProcess();
  • 41.
  • 42.
  • 45.
  • 46.
  • 48. OPS 48 (p mb17 (goal ^status active ^type on ^object <o>) (object ^name <o> ^at <p>) (monkey ^at <p> ^holds nil) --> (write (crlf) "climb onto" <o>) (modify 3 ^on <o>) (modify 1 ^status satisfied)) OPS •Official Production System. •pre OPS5 linear Search. •Conflict Resolution 
 McDermott, Charles L (Charles Lanny) Forgy. 
 “Production System Conflict 
 Resolution Strategies,” 1976, 23. OPS5 1981 •Language •Rete •LEX/MEA Working Memory Rules Inference Engine Pattern Matching Agenda
  • 49. Jess 49 (deftemplate employee (slot salary) (slot name)) (defrule count-highly-paid-employees ?c <- (accumulate (bind ?count 0) ;; initializer (bind ?count (+ ?count 1)) ;; action ?count ;; result (employee (salary ?s&:(> ?s 100000)))) ;; CE => (printout t ?c " employees make more than $100000/year." crlf)) Jess •Java implementation of Clips syntax Jess7 2006 •Accumulate •Slot Specific •Backward Chaining (ish) Working Memory Modules Inference Engine Pattern Matching Agenda
  • 50. Drools 50 Drools •Clips/Jess derivative with Java-like language Drools 7.x •Accumulate •Temporal Operators •Property Reactive •Prolog(ish) Backward Chaining •OOPath Working Memory Modules Inference Engine Pattern Matching Agenda
  • 51. Still Here 51 Working MemoryModules Inference Engine Pattern Matching Agenda
  • 52. Still Here 52 Working MemoryModules Inference Engine Pattern Matching Agenda “Today, I want to make clear that the future prospects for production rule technology are diminishing..…
 production rule technology is inadequate ” 
 (Paul Haley 2013)
 http://haleyai.com/wordpress/2013/06/22/confessions-of-a-production-rule-vendor-part-1/
  • 53. Still Here 53 Working MemoryModules Inference Engine Pattern Matching Agenda “Today, I want to make clear that the future prospects for production rule technology are diminishing..…
 production rule technology is inadequate” 
 (Paul Haley 2013)
 http://haleyai.com/wordpress/2013/06/22/confessions-of-a-production-rule-vendor-part-1/
  • 54. Active DataBases •Validation enforcement, triggers. •Simpler semantics, no forward chaining. •Without 2 phase. Does not allow mutation of selected tables. •Scoped deterministic execution within the transaction Decisioning •DMN CEP •Power of production system LHS, with additional temporal reasoning •No inference, rules are isolated Reactive Programming with Pattern Matching •Light Weight, simple facet of a production system •No Reactive Joins, but can do passive joins •Built into native language Offshoots 54
  • 55. Reactive Programming / Pattern Matching 55 public static class Customer { int String name; int discount = 0; } public static class GoldCustomer extends Customer { } public static class SilverCustomer extends Customer { } public static class BronzeCustomer extends Customer { } public static void main( String[] args ) { observable.subscribe( customer -> { switch (customer) { case GoldCustomer g: { CriteriaQuery<Double> cr = cb.createQuery(Double.class); Root<ShoppingCart> root = cr.from(ShoppingCart.class); cr.select(cb.sum(root.get("items.value"))).where("customer = " + g.name); Query<Double> query = session.createQuery(cr); double total = query.getResultList().get(0); g.discount = total > 100 ? 20 : 15; break; } case SilverCustomer s: s.discount = 10; ………… break; case BronzeCustomer b: b.discount = 5; ………… break; default: customer.discount = 0; } } ); }
  • 56. Blended Languages - LinQ / Reactive LinQ 56 var result= ( from data in myData join inData in incomingData on data.ID equals inData.ID select new { data.ID, inData.LOCATION, data.COUNT } ).ToList();
  • 57. Still Here 57 Working MemoryModules Inference Engine Pattern Matching Agenda “It’s time to trade rule technology dating back to the 80’s for state of the art AI… 
 Artificial intelligence (AI) and natural language processing (NLP) have improved dramatically. Logical reasoning technology has advanced while production rule technology remains stagnant” (Paul Haley 2018) 
 • http://haleyai.com/wordpress/2018/04/02/confessions-of-a-production-rule-vendor-part-2/
  • 58. Still Here 58 Working MemoryModules Inference Engine Pattern Matching Agenda
  • 61. •Pluggable Knowledge Types •Canonical Model •Separation of rules from data •Improved, declarative, rule execution control (Instead of push/pop stacks) •Common “unit of execution” for runtimes (rules, workflow, bpm). •Improved APIs and programming model •Pluggable Belief Systems Areas of Improvements 61
  • 62. Simple TMS 62 •A rule “logically” inserts an object •When the rule is no longer true, the object is retracted. rule "IsChild" when $p : Person( age < 16 ) then logicalInsert( new IsChild( $p ) ) end rule "IsAdult" when $p : Person( age >= 16 ) then logicalInsert( new IsAdult( $p ) ) end rule "Issue Child Bus Pass" when $p : Person( ) IsChild( person =$p ) then logicalInsert(new ChildBusPass( $p ) ); end rule "Issue Adult Bus Pass" when $p : Person() IsAdult( person =$p ) then logicalInsert(new AdultBusPass( $p ) ); end
  • 63. Defeasible 63 rule "All Birds Fly" @Defeasible when $b : Bird( ) then logicalInsert(new Fly( $b ) ); end rule "Penguins With Rockets Fly” @Defeasible @Defeats(“Penguins Don't Fly”) when $b : Penguin( ) Rocket($b;) then logicalInsert(new Fly( $b ) ); end rule "Penguins Don't Fly" @Defeasible @Defeater when $b : Bird( ) Penguin($b;) then logicalInsert(new Fly( $b ), “neg” ); end
  • 65. Bayesian Network 65 KnowledgeBuilder kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kBuilder.add( ResourceFactory.newClassPathResource(“rules.drl”), ResourceType.DRL ); kBuilder.add( ResourceFactory.newClassPathResource(“Garden.xmlbif"), ResourceType.BAYES ); KnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(); kBase.addKnowledgePackages( kBuilder.getKnowledgePackages() );
  • 66. Pluggable Beliefs - Bayesian Network 66 BayesInstance<Garden> instance = bayesRuntime.createInstance(Garden.class); BayesVariable var = ( BayesVariable ) instance.getFieldNames().get( “WetGrass” ); bayesInstance.setDecided(var, true); bayesInstance.setLikelyhood( var, [1.0,0.0] ); 
 Garden garden = instance.marginalize();; FactHandle fh = ksession.insert( garden ); ksession.insert( new Cloud() ); ksession.fireAllRules(); rule "I see clouds" when g : Garden(decided == false) exists Cloud() then insertLogical( bayesVar(g, 'Cloudy'), evidenceFactory.create( new double[] {1.0,0.0} ) ); end rule "It probably rained" when Garden(decided == true, rain == true) then System.out.println( "Rain" ); end
  • 68. DARPA : Explainable AI (XAI) Explainability / Trustworthiness / Compliance