Post on 05-Dec-2014
description
Reglements auf der
Antragsstrecke
Regelgestützte
Validierung und Navigation mit JBoss
Drools
Agenda
• Kurzportrait
• Vorstellung des Projektes
• Unterschiedliche Lösungsszenarien
• Einführung Regelbasierte Systeme
• Architektur
• Live Debug
• Erfahrungen
Ihre Referenten
COINOR
Kernfakten
Aktiengesellschaft in
Mitarbeiterbeteiligung
Grundkapital: 1,275 Mio. €
Gründung: Juli 2007
Branchenfokus Finanzindustrie
Auszug Kundenliste
Commerzbank AG
DWS Investments GmbH
Xchanging
FIDUCIA IT AG
ING DiBa AG
Landesbank Berlin AG
Union Investment Gruppe
Standorte
Berlin
Karlsruhe
München
Frankfurt
Festangestellte
Umsatz in Mio. €
COINOR
COINOR unterstützt Deutschlands führende Finanzdienstleister bei der Verbesserung von
Geschäftsprozessen
Wir transportieren Strategien in Prozesse und implementieren diese Prozesse in der IT
Unser Erfolgskonzept ist dabei ganz besonders: Wir kombinieren hohe Fach- und
Technologiekompetenz mit den Methoden unseres Business Engineering Frameworks
Die einzigartige Bündelung dieser 3 Kompetenzen ermöglicht uns die effektive Entwicklung
von Konzepten, innovativen Architekturen und Technologien
Business Transformation
Prozess
Strategie
Implementierung
IT Trends
Business Trends
Open SourceSOACloud Computing…
KonsolidierungSpezialisierungGeschäftsmodelle…
Das Projekt
– Erstellung einer Web-basierten Anwendung zur
Beantragung von Krediten
– Einsatz als White-Label-Produkt
Vermittler 1 / Autokredit
Vermittler 2 / Barkredit
Basis
Anforderungen
Historisierte
Konfigurierbarkeit zur
Laufzeit
Stärkere Einbindung
des Fachbereiches
Flexible
Anpassbarkeit der
Logik
Time-To-Market
Mandantenfähigkeit
Online Krediterfassung
LösungsansatzProperty File
minKredit=2500
maxKredit=100000
minAlter=18
…
• Mandanten-
• fähigkeit
Historisierte
Konfigurierbarkeit zur
Laufzeit
Flexible
Anpassbarkeit
der Logik
Stärkere
Einbindung des
Fachbereichs?
BigDecimal minKredit = properties.get(“minKredit“, BigDecimal.class);
If (kreditbetrag < minKredit){
FacesMessages.instance().add(new FacesMessage(“Der Kreditbetrag
ist unter der minimalen Grenze von “ +minKredit));
}
LösungsansatzKonfiguration in Datenbank
• Mandanten-
• fähigkeit
Historisierte
Konfigurierbarkeit zur
Laufzeit
Flexible
Anpassbarkeit
der Logik
Stärkere
Einbindung des
Fachbereichs?
minKredit=2500
maxKredit=100000
minAlter=18
...
If (kreditbetrag < configEntity.getMinKredit()){
FacesMessages.instance().add(new FacesMessage(“Der Kreditbetrag
ist unter der minimalen Grenze von “ +
configEntity.getMinKredit()));
}
Wartbarkeit
LösungsansatzKonfiguration in Datenbank
if (kredit > 3000) {
assert nextPage = "Gehaltsnachweis"
}
else {
assert nextPage = "Angebot"
}
if(kredit < 2500){
Fehlermeldung = "Der Kreditbetrag ist unter der
minimalen Grenze von 2500€“}
• Mandanten-
• fähigkeit
Historisierte
Konfigurierbarkeit
zur Laufzeit
Flexible
Anpassbarkeit
der Logik
Stärkere
Einbindung des
Fachbereichs?
Wartbarkeit
LösungsansatzKonfiguration in Datenbank II
GroovyClassLoader gcl = new GroovyClassLoader();
Class clazz = gcl.parseClass(new File(fileName));
Object aScript = clazz.newInstance();
Validator validator = (Validator) aScript;
validator.validate(entity);
• Mandanten-
• fähigkeit
Historisierte
Konfigurierbarkeit
zur Laufzeit
Flexible
Anpassbarkeit
der Logik
Stärkere
Einbindung des
Fachbereichs?
Wartbarkeit
LösungsansatzVerwendung von Geschäftsregeln
• Mandanten-
• fähigkeit
Historisierte
Konfigurierbarkeit
zur Laufzeit
Flexible
Anpassbarkeit
der Logik
Stärkere
Einbindung des
Fachbereichs
when
Kredit > 3000
then
gehe zu Gehaltsnachweis
kredit.min=2500
kredit.max=100000
alter.min=18
...
when
Kredit <= 3000
then
gehe zu Angebot
Wartbarkeit
LösungsansatzVerwendung von Geschäftsregeln II
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newUrlResource( url ), ResourceType.DRL );
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( builder.getKnowledgePackages() );
StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();
ksession.insert( entity);
ksession.fireAllRules();
• Mandanten-
• fähigkeit
Historisierte
Konfigurierbarkeit
zur Laufzeit
Flexible
Anpassbarkeit
der Logik
Stärkere
Einbindung des
Fachbereichs
Regelbasierte Systeme
Überblick• Regelbasierte Systeme bestehen aus
– einer Datenbank von Fakten (Faktenbasis, bei uns Antragsdaten)
– (Geschäfts-)regeln (Regelbasis oder auch Rule-Repository)
– Kontrollsystem mit Regelinterpreter (Rule Engine)
• Regelbasierte Systeme arbeiten deklarativ
• Aufbau der Regeln: Wenn [Bedingung] dann [Aktion]
– Beispiel: Outlook
ArchitekturÜberblick
Anwendung 1Layout, Navigation
Rule Cache
Rule Validator
Rule Repository
Rule Engine
Rule Navigator
Rule Loader
Navigation Validation Logic
Anwendung 2Layout, Navigation
Rule Repository
Anwendung nLayout, Navigation
Rule Repository
Basis Applikation
Mandant 1
Mandant 2
Mandant 1
Mandant 3
Mandant 4
ArchitekturKlassenstruktur Regelintegration
Sequenzdiagramm Validierungslogik
Sequenzdiagramm Navigationslogik
Live Debug
Stammdaten Gehaltsnachweis
Angebot
Ablehnung
Unsere Erfahrungen
mit dem Einsatz von Geschäftsregeln
– Einfache Übersetzung Anforderungen
– Bessere Einbindung des Fachbereiches
– Gute Performance (Rete-Algorithmus)
– Höhere Flexibilität
– Unterschiedliche Lebenszyklen Regeln vs. Anwendung
– Erschwerung der Wartung
• Logik nicht an einer Stelle
• Debugging erschwert
– Zu Beginn „Berührungsängste“ Fachbereich
– Es besteht die Tendenz der „Überflexibilisierung“
– Einfache Übersetzung Anforderungen
– Bessere Einbindung des Fachbereiches
– Gute Performance (Rete-Algorithmus)
– Höhere Flexibilität
– Unterschiedliche Lebenszyklen Regeln vs. Anwendung
– Erschwerung der Wartung
• Logik nicht an einer Stelle
• Debugging erschwert
– Zu Beginn „Berührungsängste"
– Es besteht
Reglements auf der
Antragsstrecke
Regelgestützte
Validierung und Navigation mit JBoss
Drools
… und suchen ein paar der besten Arbeitnehmer!
COINOR bietet allen Mitarbeitern
Spannende Projekte
Individuelle Förderung
Die Möglichkeit, schnell Verantwortung zu übernehmen
Attraktive Vergütungsmodelle
Einen motivierenden Teamgeist
Wir gehören zu den 100 besten Arbeitgebern Deutschlands…