This document discusses the history and evolution of production rule systems from the 1970s to present. It covers early systems like OPS5 and CLIPS and how they introduced concepts like the Rete algorithm, modules, and object-oriented features. It then summarizes more recent systems like Drools and Jess. The document also proposes approaches for improving rule modularity and execution control, such as using rule units and life cycle annotations to better orchestrate rule firing. Overall it presents the continuing development of production rule technologies and opportunities for further modernization.
This presentation was presented on DrupalForum 2012 in Zaporozhye (Ukraine). It is about module Rules for Drupal 7. It describe what is the goal of the module, some examples of use. Feature of the example you can find on drupal.org; http://drupal.org/sandbox/BerdArt/1434760
As the popularity of PostgreSQL continues to soar, many companies are exploring ways of migrating their application database over. At Redgate Software, we recently added PostgreSQL as an optional data store for SQL Monitor, our flagship monitoring application, after nearly 18 years of being backed exclusively by SQL Server. Knowing that others will be taking this journey in the near future, we'd like to discuss what we learned. In this training, we'll discuss the planning that needs to take place before a migration begins, including datatype changes, PostgreSQL configuration modifications, and query differences. This will be a mix of slides and demo from our own learnings, as well as those of some clients we've helped along the way.
Grails has great performance characteristics but as with all full stack frameworks, attention must be paid to optimize performance. In this talk Lari will discuss common missteps that can easily be avoided and share tips and tricks which help profile and tune Grails applications.
Building a Complex, Real-Time Data Management ApplicationJonathan Katz
Congratulations: you've been selected to build an application that will manage whether or not the rooms for PGConf.EU are being occupied by a session!
On the surface, this sounds simple, but we will be managing the rooms of PGConf.EU, so we know that a lot of people will be accessing the system. Therefore, we need to ensure that the system can handle all of the eager users that will be flooding the PGConf.EU website checking to see what availability each of the PGConf.EU rooms has.
To do this, we will explore the following PGConf.EU features:
* Data types and their functionality, such as:
* Data/Time types
* Ranges
Indexes such as:
* GiST
* SP-Gist
* Common Table Expressions and Recursion
* Set generating functions and LATERAL queries
* Functions and the PL/PGSQL
* Triggers
* Logical decoding and streaming
We will be writing our application primary with SQL, though we will sneak in a little bit of Python and using Kafka to demonstrate the power of logical decoding.
At the end of the presentation, we will have a working application, and you will be happy knowing that you provided a wonderful user experience for all PGConf.EU attendees made possible by the innovation of PGConf.EU!
You’re finally doing TDD, but your past mistakes are catching up with you. No matter what you do, you can’t get rid of the gaping black holes caused by your legacy code.
In this presentation, we learn about the causes of legacy code and the reasons it is so difficult to work with. Then we discuss various techniques to test untestable code, revive and simplify incomprehensible code, redesign stable yet untested code, and repair that rift we created in the time-space continuum.
Principles and patterns for test driven developmentStephen Fuqua
Developed to help introduce key topics in Test Driven Development, for new and veteran developers alike. Some examples are language-specific (C# / MSTest / Moq), but the principles apply to any object oriented language.
Learn from the author of SQLTXPLAIN the fundamentals of SQL Tuning: 1) Diagnostics Collection; 2) Root Cause Analysis (RCA); and 3) Remediation.
SQL Tuning is a complex and intimidating area of knowledge, and it requires years of frequent practice to master it. Nevertheless, there are some concepts and practices that are fundamental to succeed. From basic understanding of the Cost-based Optimizer (CBO) and the Execution Plans, to more advance topics such as Plan Stability and the caveats of using SQL Profiles and SQL Plan Baselines, this session is full of advice and experience sharing. Learn what works and what doesn't when it comes to SQL Tuning.
Participants of this session will also learn about several free tools (besides SQLTXPLAIN) that can be used to diagnose a SQL statement performing poorly, and some others to improve Execution Plan Stability.
Either if your are a novice DBA, or an experienced DBA or Developer, there will be something new for you on this session. And if this is your first encounter with SQL Tuning, at least you will learn the basic concepts and steps to succeed in your endeavor.
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...Mark Proctor
Presentation given at ODBase 2018 to support the submitted conference paper. It covers the enhancements to the Rete algorithm to provide lazy rule evaluation through rule linking, the solution is implemented and benchmarked in the Drools rule engine.
This presentation was presented on DrupalForum 2012 in Zaporozhye (Ukraine). It is about module Rules for Drupal 7. It describe what is the goal of the module, some examples of use. Feature of the example you can find on drupal.org; http://drupal.org/sandbox/BerdArt/1434760
As the popularity of PostgreSQL continues to soar, many companies are exploring ways of migrating their application database over. At Redgate Software, we recently added PostgreSQL as an optional data store for SQL Monitor, our flagship monitoring application, after nearly 18 years of being backed exclusively by SQL Server. Knowing that others will be taking this journey in the near future, we'd like to discuss what we learned. In this training, we'll discuss the planning that needs to take place before a migration begins, including datatype changes, PostgreSQL configuration modifications, and query differences. This will be a mix of slides and demo from our own learnings, as well as those of some clients we've helped along the way.
Grails has great performance characteristics but as with all full stack frameworks, attention must be paid to optimize performance. In this talk Lari will discuss common missteps that can easily be avoided and share tips and tricks which help profile and tune Grails applications.
Building a Complex, Real-Time Data Management ApplicationJonathan Katz
Congratulations: you've been selected to build an application that will manage whether or not the rooms for PGConf.EU are being occupied by a session!
On the surface, this sounds simple, but we will be managing the rooms of PGConf.EU, so we know that a lot of people will be accessing the system. Therefore, we need to ensure that the system can handle all of the eager users that will be flooding the PGConf.EU website checking to see what availability each of the PGConf.EU rooms has.
To do this, we will explore the following PGConf.EU features:
* Data types and their functionality, such as:
* Data/Time types
* Ranges
Indexes such as:
* GiST
* SP-Gist
* Common Table Expressions and Recursion
* Set generating functions and LATERAL queries
* Functions and the PL/PGSQL
* Triggers
* Logical decoding and streaming
We will be writing our application primary with SQL, though we will sneak in a little bit of Python and using Kafka to demonstrate the power of logical decoding.
At the end of the presentation, we will have a working application, and you will be happy knowing that you provided a wonderful user experience for all PGConf.EU attendees made possible by the innovation of PGConf.EU!
You’re finally doing TDD, but your past mistakes are catching up with you. No matter what you do, you can’t get rid of the gaping black holes caused by your legacy code.
In this presentation, we learn about the causes of legacy code and the reasons it is so difficult to work with. Then we discuss various techniques to test untestable code, revive and simplify incomprehensible code, redesign stable yet untested code, and repair that rift we created in the time-space continuum.
Principles and patterns for test driven developmentStephen Fuqua
Developed to help introduce key topics in Test Driven Development, for new and veteran developers alike. Some examples are language-specific (C# / MSTest / Moq), but the principles apply to any object oriented language.
Learn from the author of SQLTXPLAIN the fundamentals of SQL Tuning: 1) Diagnostics Collection; 2) Root Cause Analysis (RCA); and 3) Remediation.
SQL Tuning is a complex and intimidating area of knowledge, and it requires years of frequent practice to master it. Nevertheless, there are some concepts and practices that are fundamental to succeed. From basic understanding of the Cost-based Optimizer (CBO) and the Execution Plans, to more advance topics such as Plan Stability and the caveats of using SQL Profiles and SQL Plan Baselines, this session is full of advice and experience sharing. Learn what works and what doesn't when it comes to SQL Tuning.
Participants of this session will also learn about several free tools (besides SQLTXPLAIN) that can be used to diagnose a SQL statement performing poorly, and some others to improve Execution Plan Stability.
Either if your are a novice DBA, or an experienced DBA or Developer, there will be something new for you on this session. And if this is your first encounter with SQL Tuning, at least you will learn the basic concepts and steps to succeed in your endeavor.
Similar to Rule Modularity and Execution Control (20)
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...Mark Proctor
Presentation given at ODBase 2018 to support the submitted conference paper. It covers the enhancements to the Rete algorithm to provide lazy rule evaluation through rule linking, the solution is implemented and benchmarked in the Drools rule engine.
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)Mark Proctor
A Keynote presentation given at two community days, once in NYC the other DC. It covers the history of how the projects grew over time, the agile practices used by those teams and also the project and product differences. It also highlights some key 7.x aspects, that were not shown in the later conference talks.
Learning Rule Based Programming using Games @DecisionCamp 2016Mark Proctor
Short talk, given at DecisionCamp 2016, on using games to learn rule based programming. Covers Number Guess, Wumpus World, Text Adventure and Invaders. Videos are embedded and linked from Youtube.
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyMark Proctor
This is an overview video that shows the scope of work and technology used within the Red Hat JBoss BRMS and BPMS platforms.
The technology presented builds with GWT, Errai and UberFire as the foundation. Over 2015 we'll be working to make it for end users to consume the bits they need, paying for only what they use, so others can make power web platforms like BRMS and BPMS.
Games Development with Drools. Covers text adventure games, pong, wumpus and invaders. As well as a general rules introduction
Those games were also covered separately in other videos
Invaders : http://tinyurl.com/jwml42m
Wumpus : http://tinyurl.com/na376bu
Pong : http://tinyurl.com/pkgub9b
Text Adventure : http://tinyurl.com/mfggm8n
What's new in Drools 6 - London JBUG 2013Mark Proctor
Presentation around the time of Beta3 for "What's new in Drools 6.0". Note some aspects have already changed, especially around the spring integration.
Reactive Transitive Closures with Drools (Backward Chaining)Mark Proctor
Slides to go with the video here:
http://www.youtube.com/watch?v=fCjIRVSRFvA
This video shows backward chaining with Drools. It also demonstrates the concepts of reactive transitive closures.
UberFire is a tool to help rapidly build workbench or console applications. It's still in early beta stage, but this presentation gives a quick overview of what it provides, and how it woks. It shows a small video of the BRMS project being built with UberFire, as well as finishing with a simple web based IDE, that was built as an example application with UberFire
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
Communications Mining Series - Zero to Hero - Session 1
Rule Modularity and Execution Control
1. Mark Proctor
Distinguished Engineer II
Chief Architect - Rules, BPM and Optimisation
Red Hat
Modernising Production Rule Systems
Rule Modularity and Execution Control
9. Still Here Working
Memory
Modules
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/
10. Still Here Working
Memory
Modules
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/
11. Still Here Working
Memory
Modules
Inference Engine
Pattern
Matching
Agenda
“It’s time to trade rule technology dating back to the 80’s for
state of the art AI.”
(Paul Haley 2018)
• http://haleyai.com/wordpress/2018/04/02/confessions-of-a-production-rule-vendor-part-2/
15. • Production system conflict resolution strategies (McDermott, Forgy 1976)
• Conflict Resolution + Control Token (Signals, GOTO)
• Mixes Control and Domain Logic in single rule
• This Pollution may be undesirable for readability and maintainability
• Does not guarantee rules for one token have fired before processing another token
• OPS MEA (Forgy 1981)
• Compares recency for the first pattern to find the dominant rule.
• Typically matches against a fact called a Context, Phase or Goal.
• Allows for goal-directed controlling of production systems which also introduces a
type of rule subroutine.
• Compares recency for the remaining elements
• LEX falls back on specificity and arbitrary.
Stylistic
16. • ROSIE (D. A. Waterman, 1979)
• Multiple data sets and rule sets.
• Only one ruleset and one data set can be active at a time.
• Eclips (NASA, 1991) PIE (NASA, 1988)
• Goal directed.
• Each goal has a context.
• Subroutine like.
• Clips Modules (NASA 1993)
• Push/Pop Stack
• No Context
• External Orchestration
• Rule Flow
Syntactic
18. • Rules and data are decoupled.
• Venus full hybrid C++ language.
• Single Root Module.
• Guard does not directly invoke Rule.
Instead it makes it legible for evaluation.
• Current consequence finishes,
before potential next module is entered.
• Module may have 1..n Support. Will
continue to evaluate, while it has support.
• If support is removed, module continues until it reaches fixed point (then it’s removed).
• Is single threaded a fair deterministic policy is used to help with selection,
which is controlled by the priority of the rule against its peers.
• Submitted module is identified by the combination of module name plus the passed
arguments.
Venus Rule Language
21. • ENTRY-BLOCK
• C-callable entry block
• Can have their own rules
• Implicitly activate
• May activate one or more rule Rule-Blocks
• RULE-BLOCK
• Allow for rules to be shared across ENTRY-BLOCKs
• May not call other ENTRY-BLOCKs or RULE-BLOCKs.
• External Orchestration
Rule Works
22. • ON-ENTRY: Before the match step of the first recognize- act cycle. This can be used for
tasks like data initialisation.
• ON-EVERY: After the act step of every cycle except the last one. This can be used for
tasks like printing out the rule count.
• ON-EMPTY: After the select step when the conflict set is empty. This can be used to
detect state and return error information.
• ON-EXIT: After the act step of the last cycle. This can be used for things like cleanup
actions.
Rule Works
23. Rule Works Life Cycles
ON-ENTRY ON-EVERY
Match Act
Select ON-EMPTY
ON-EXIT
Call to Entry
Block
Operating
System
Caller of Entry
Block
24. • Neither Venus or RuleWorks made it into industrial or academic mainstream.
• Business Rules have simple requirements.
• Often spreadsheet driven.
• Variations Rule Flow suffices.
• Academia is funding driven, interests change over time.
Recency and Relevance of Works
26. Units
package org.mypackage.myunit
public class AdultUnit implements RuleUnit {
private int adultAge;
private DataSource<Person> persons;
public AdultUnit( ) { }
public AdultUnit( DataSource<Person> persons, int age
) {
this.persons = persons;
this.age = age;
}
}
27. Units
package org.mypackage.myunit
public class AdultUnit implements RuleUnit {
private int adultAge;
private DataSource<Person> persons;
public AdultUnit( ) { }
public AdultUnit( DataSource<Person> persons, int age ) {
this.persons = persons;
this.age = age;
}
}
package org.mypackage.myunit
unit AdultUnit
rule Adult when
$p : /persons[age >= adultAge]
then
System.out.println($p.getName() +
" is adult and greater than " +
adultAge);
end
28. Units package org.mypackage.myunit
unit AdultUnit
rule Adult when
$p : /persons[age >= adultAge]
then
System.out.println($p.getName() +
" is adult and greater than " +
adultAge);
end
package org.mypackage.myunit
public class AdultUnit implements RuleUnit {
private int adultAge;
private DataSource<Person> persons;
public AdultUnit( ) { }
public AdultUnit( DataSource<Person> persons, int age ) {
this.persons = persons;
this.age = age;
}
@Override
public boolean onStart(RuleUnitInstance instance) {
System.out.println(getName() + " started.”);
return true;
}
@Override
public boolean onEnd(RuleUnitInstance instance) {
return true;
}
}
32. • PENDING: The unit is instantiated, but has not yet been started.
• RUNNING: The unit is evaluating and executing rules.
• DORMANT: The unit has either reached a fixed point and has no more work to
evaluate, or it has been requested
to stop further evaluation.
• YIELDED: The current executing unit has yielded (while
still having more work to do) to another unit that has
earlier scheduling.
States
33. Unit Life Cycles
RUNNINGDORMANT YIELDED
start
true
resume
true
yield
true
onSuspend
suspend
true
onResume
onStart
onEnd
onYield
onResume
PENDING
FINISHED
RuleUnitInstance
Created
CANCELLED
start
false
resume
true
resume
false
suspend
false
yeld
false
resume
false
resume
request
resume
request
suspend
request
yield
request
start
request
ON-ENTRY ON-EVERY
Match Act
Select ON-EMPTY
ON-EXIT
Call to Entry
Block
Operating
System
Caller of Entry
Block
35. • Depth first LIFO.
• Where the two guards exist for the same unit, the one that comes earlier in the rule
order has priority.
• Where the two guards are not from the same unit, but the path of one subsumes the
path of the other, the deepest unit has priority.
• Where the two guards are not from the same unit and one path does not subsume the
other, it will iterate the parent chain until it reaches the unit that is shared by both
Fairness
36. • Units as generic abstractions for runtimes
• Execution guards
• On every
• Inheritance
• Alternative orchestrations
• Refinements in rule execution
• @DataDriven / @Existence Driven
• @Incremental(<boolean>)
• @Sequential
Future Works
38. Mark Proctor
Distinguished Engineer II
Chief Architect - Rules, BPM and Optimisation
Red Hat
Modernising Production Rule Systems
Rule Modularity and Execution Control