Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
Agenda
• ESB Background
• JBoss Fuse ESB
• JBoss BPM Suite(BPM + BRMS)
• Pergola Approval Request Scenario
Agenda
• ESB Background
• JBoss Fuse ESB
• JBoss BPM Suite(BPM + BRMS)
• Pergola Approval Request Scenario
SOA
Service Oriented Architecture
The ESB Approach
Enterprise Integration Patterns
What Are Enterprise Integration Patterns?
Enterprise Integration Patterns is a book by Gregor Hohpeand Bobby Woolf and describes 65 design patterns for the use of enterprise application integration and message-oriented middleware in the form of a pattern language.
Enterprise Integration Patterns
This patterns are organized into the following categories:
• Integration Styles• Messaging Systems• Messaging Channels• Message Construction• Message Routing• Message Transformation• Messaging Endpoints• System Management
Enterprise Integration Patterns
Agenda
• ESB Background
• JBoss Fuse ESB
• JBoss BPM Suite
• Pergola Approval Request Scenario
This is a monster but it is a light one
Red Hat JBoss Fuse
Red Hat JBoss Fuse
Lightweight, flexible integration platform that enables rapid integration across the extended enterprise on-premise or in the cloud.
JBoss Fuse includes modular integration capabilities, a new style enterprise service bus (ESB)
Red Hat JBoss Fuse
• Apache ActiveMQ (Messaging)• Apache CXF (Web Services/REST)• Apache Karaf (OSGI)• Apache Camel (Routing, EIP)• SwitchYard (SCA*)• Fuse Fabric (Clustering Management)
* Service Component Architecture (SCA) is a set of specifications which describe a model for building applications
and systems using a Service-Oriented Architecture (SOA)
Apache - ActiveMQ
Apache - ActiveMQ
Apache ActiveMQ ™ is the most popular and powerful open source messaging andIntegration Patterns server.
Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features
Language ClientsJMS, ActionScript 3, Ajax, C, C++, C# and .Net, Delphi, Erlang, Flash/ActionScript, Haskell, JavaScript - Ajax or WebSocketsPerl, PHP, Pike, Python, Ruby and Rails support via ActiveMessaging, Smalltalk, WebSockets
Protocols SupportedOpenWire, REST, Stomp, WS Notification, XMPP, AMQPand more
Apache - CXF
Apache CXF is an open source services framework.
CXF helps you build and develop services using frontend programming APIs, like JAX-WS and JAX-RS.
These services can speak a variety of protocols such as SOAP, XML/HTTP, RESTful HTTP, or CORBA and work over a variety of transports such as HTTP, JMS or JBI.
Apache - Karaf
Apache Karaf is a small OSGI based runtime which provides a
lightweight container onto which various components and
applications can be deployed.
features supported by the Karaf:
Dynamic configurationLogging SystemProvisioningNative OS integrationExtensible Shell consoleRemote accessSecurity framework based on JAASManaging instances
Based on Apache Felix Framework
Apache Camel
Apache - Camel
Apache Camel is a versatile open-source integration framework based on known Enterprise Integration Patterns.
Camel empowers you to define routing and mediation rules in a variety of domain-specific languages, including a Java-based Fluent API, Spring or Blueprint XML Configuration files, and a Scala DSL. This means you get smart completion of routing rules in your IDE, whether in a Java, Scala or XML editor.
Uses URIs to work directly with any kind of Transport or messaging model such as HTTP, ActiveMQ, JMS, JBI, SCA, MINA or CXF, as well as pluggable Components and Data Format options.
Apache Camel lets you work with the same API regardless which kind of Transport is used.
Apache - Camel
from
A
message
To
B
Apache
ActiveMQWebSphereMQ
Apache - Camel
from
A
from(A).filter(isBlueCar).to(B);
To
B
Apache
ActiveMQWebSphereMQ
Endpoint A = endpoint("activemq:queue:quote");
Endpoint B = endpoint("mq:quote");
Apache - Camel
<camelContext>
<route>
<from uri="activemq:NewOrders"/>
<choice>
<when>
<xpath>/order/product = 'widget'</xpath>
<to uri="activemq:Orders.Widgets"/>
</when>
<otherwise>
<to uri="activemq:Orders.Gadgets"/>
</otherwise>
</choice>
</route>
</camelContext>
Content Based Router - XML DSL
from("file:inbox/orders")
Endpoints as URIs
Apache - CamelStandard JVM object marshalling
Serialization
String
Standard JVM object marshalling
Object marshalling
Avro
JSON
Protobuf
Object/XML marshalling
Castor
JAXB
XmlBeans
XStream
JiBX
Object/XML/Webservice
marshalling
SOAP
Direct JSON / XML marshalling
XmlJson
Flat data structure marshalling
BeanIO
Bindy
CSV
EDI
Flatpack DataFormat
Domain specific marshalling
HL7 DataFormat
Compression
GZip data format
Zip DataFormat
Zip File DataFormat
Security
Crypto
PGP
XMLSecurity DataFormat
Misc.
Base64
Custom DataFormat - to use your own custom implementation
RSS
TidyMarkup
SysLog
ICal
Apache - Camel
X
Error Handling
Apache - Camel
Apache - Camel
Apache - Camel
Apache - CamelExpression Languages
The following languages are supported out of the box:
Bean Language for using Java for expressions
Constant
the unified EL from JSP and JSF
Header
JSonPath
JXPath
Mvel
OGNL
Ref Language
Property
Scripting Languages such as :
BeanShell
JavaScript
Groovy
Python
PHP
Ruby
Simple
File Language
Spring Expression Language
SQL
Tokenizer
XPath
XQuery
VTD-XML
Apache - CamelEnterprise Integration Patterns
Apache - Camel
Apache - Camel
SwitchYard is a component-baseddevelopment framework focused on building structured, maintainable services and applications using the concepts and best practices of SOA.
A uniform application model augments Apache Camel, joining Java EE, BPM, rules, orchestration, and routing into a cohesive development model and runtime.
Switchyard
Composite can contain
Internal logic + exposed + consumed services
Switchyard
Fuse Fabric
Fuse Fabric technology enable distributed
management of large clusters of ESBs.
Fuse has a Management Console from which you can manage the installation of your software across a cluster.
Agenda
• ESB Background
• JBoss Fuse ESB
• JBoss BPM Suite(BPM + BRMS)
• Pergola Approval Request Scenario
Redhat BPM Suite
Redhat BPM Suite
BRMS - business rules management system
Redhat BPM Suite
BPM - Business process management
BRMS - business rules management system
• A combination of modeling, automation, execution, control, measurement and optimization of business activity flows.
• Modeling - Identify, define, and make a representation of the complete process
• Automation - The work that is done to assure the smooth execution of the process instances
• Execution - Instances of a process are performed
• Control, Measurement - Making sure that the process follows the designed course and determine how well the process is working
• Optimization - discipline of BPM is an ongoing activity that builds over time to steadily improve the measures of the process.
BPM - Business Process Management
Redhat BPM Suite
What is BPM?
Business Process Management
Redhat BPM Suite
A business process - process that describes the order in which a series
of steps need to be executed, using a flow chart.
Extend palette with domain-specific, declarative service nodes
Domain-specific Processes
Redhat BPM Suite
Timer
Redhat BPM Suite
BAM / Reporting – Process
Redhat BPM Suite - Reporting
Redhat BRMS
When
The bank account move is more then 50k
and
The account has more then 5 moves in the past 30 days
Then
Send alert to reports log
Redhat BRMS
ExtractConvert
Data Model
Facts
JVM
GIT
Knowledge base
Rule Engine
Raw Data
Results
Agenda
• ESB Background
• JBoss Fuse ESB
• JBoss BPM Suite(BPM + BRMS)
• Pergola Approval Request Scenario
Pergola Approval Request Scenario
בקשה להיתר
בניית פרגולה
WEBמערכת מייצרת קובץ בקשה
תיקיית קבצי בקשה
pergola-approval-request.xml
,מפעיל חוקים לבדיקת הפנייהBPMה
פונה לוועדה מקומית לאישור הבקשה
ESBומחזיר תשובה ל
פונה לוועדה מקומית לאישור הבקשה
בודק באמצעות חוקים את נתוני הבקשהREST
גודל הפרגולה•
גג/גודל החצר•
עיר•
רחוב•
•...
<PergolaApprovalRequest>
<HomeAddress>
<City>Tel Aviv</City>
<Street>Hyarden 5</Stree
<ApartmentNumber>10</ApartmentNumber>
</HomeAddress>
<IsOnYard>true</IsOnYard> - האם בחצר
<IsOnRoof>false</IsOnRoof> - האם בגג
<PergolaSize>25</PergolaSize>
<YardOrRoofSize>160</YardOrRoofSize> - גודל הגג או החצר
</PergolaApprovalRequest>
<PergolaApprovalRequest>
<HomeAddress>
<City>Tel Aviv</City>
<Street>Hyarden 5</Street>
<ApartmentNumber>10</ApartmentNumber>
</HomeAddress>
<IsOnYard>true</IsOnYard> - האם בחצר
<IsOnRoof>false</IsOnRoof> - האם בגג
<PergolaSize>25</PergolaSize> - גודל הפרגולה המבוקש
<YardOrRoofSize>160</YardOrRoofSize> - גודל הגג או החצר
</PergolaApprovalRequest>
Pergola Approval Request Scenario