Breaking the Kubernetes Kill Chain: Host Path Mount
Do and Don'ts of BPM - The Full Stack
1. Do & Don’ts of BPM
The Full Stack
13/03/2008
Joram Barrez - Dolmen
2. About
Software engineer at Dolmen Computer Applications
Using jBPM from Monday to Friday
• Before january ’08 business processes on a small scale
• Since january ’08, in a team of 3 people building a large
scale back-end using jBPM for process orchestration in a
departement of the Flemish governement
Other fields of interest:
• Agile development & (J)Ruby on Rails
12/10/12 ı 2
3. Goals
jBPM in some real-life action
Demonstration use case: PoC “jBPM orchestration”
• Revitalization of mainframe architecture
• PoC built to show feasability of project
• Using some “cool” technologies (jBPM, ESB, EJB3, …)
12/10/12 ı 3
6. Requirements
Every application talks directly to its dependent applications
• Mediation required to keep it manageable
Workflow logic is scattered across different applications
• Centralisation needed
Reporting functionality is a must
It must be “fast enough”
12/10/12 ı 6
7. Why jBPM?
Previous experience
Embeddable
• jBPM is “Yet Another Java Library”
• jBPM can be used in any application (web, desktop, enterprise, …)
on any database
Openness
• Extremely extensible, what often is needed in business processes
Convenient for developers
12/10/12 ı 7
9. jBPM Performance
We knew jBPM could tackle the workflow requirements
But is it “fast enough”?
• Simple measurement used (e.g. no dedicated server)
• 2500 runs of an automated jBPM process (jpdl 3.2.2)
• Timings are average between start en stop
time of the processes
• Intel Core Duo 2 Ghz
• 2 GB DDR2 RAM
• 5400 rpm SATA HD
• MySQL 5.0.45 Database
12/10/12 ı 9
10. Some performance numbers (sequential)
2 ms
2 ms 3 ms
Non-optimized Hibernate config: 16 ms! From 1.800.000 processes/hour 225 000 processes/hour
5-6 ms
12/10/12 ı 10
12. Realistic business process: Handling a hospital report
New Report created
3 ms
Check Report type
Some reports need
manual verification
Automatic checking
Complete & archive report
Remove report
12/10/12 ı 12
14. Proof of Concept (PoC)
Goal: build a small scale application that proofs the
feasibility of the project
• But easily can be mapped to a larger scale
Only one business process (“Handling a hospital report”)
Only two applications need communication
• Report generator
• Client application
12/10/12 ı 14
15. Application mediation
Problem: applications talk to each other directly, resulting
in a cobweb of dependent applications
• Enterprise Application Integration (EAI) problem
• Topic on its own
Solution (for this PoC)
• Enterprise Service Bus (ESB)
12/10/12 ı 15
16. What is an ESB? (without getting too technical)
Best comparison: mailbox Destination
“ROUTING”
Protocol?
Don’t care, as
Long as the message
Is delivered
12/10/12 ı 16
17. What is an ESB? (without getting too technical)
Destination
“ROUTING”
TCP/IP
Advantage: applications
only need to communicate with SOAP(Webservice)
the ESB. They don’t need to use the Protocol? JMS
‘language’ of the destination anymore
Products
- Mule ESB (customer pref)
- BEA Aqualogic Don’t care, as
- JBoss ESB* Long as the message
SOA platform (inc. jBPM) Is delivered
12/10/12 ı 17
* http://parleys.com/display/PARLEYS/JBoss+ESB by Johan Kumps
25. Business Intelligence (BI) /
Business Activity Monitoring (BAM)
BI ~ BAM
• BAM real-time monitoring/analysing metrics
• BI historical monitoring/analysing metrics
• e.g. stock trade buy/sell according to metrics
Extracting extra business information for taking
“business decisions”
• Simple example
• Car repair Availability of car history (malfunctions,…)
Better judgement when fixing the car
12/10/12 ı 25
26. Business Intelligence (BI) /
Business Activity Monitoring (BAM)
“What you can’t measure, you can’t manage”
BI/BAM is an “art”
• Tailoring to business is always needed
• Research field on its own (even academical)
• Data mining, OLAP, KPI, data warehousing,
slice/dice analysis, ETL, …
Managers BI/BAM
12/10/12 ı 26
27. BI/BAM & jBPM
BI/BAM often integrated in BPM products
jBPM does not offer such functionality
• Discussions about BI/BAM and jBPM can be tracked online, so
it will be only a matter of time (hopefully)
So, why should we choose jBPM if BI/BAM is missing?
• BI/BAM is extremely business-specific, so there will always be
need for custom implementations
• Openness of jBPM allows extremely business-specific BI/BAM,
which could be impossible with pre-made BI/BAM solutions
12/10/12 ı 27
28. PoC: BAM with SeeWhy*
Young & enthousiastic, UK based software company
Extremely well documented (hundreds of pages)
• 74 pages “SeeWhy with jBPM”
SeeWhy Community/Enterprise Edition
• Realtime metrics, real time alerts, real time actions
12/10/12 ı 28
* http://www.seewhy.com/
29. SeeWhy workings
Event Queue (JMS)
Event
Calculations/
Aggregations
e.g. Show the average number
Of reports processed the last hour
12/10/12 ı 29
30. Combining jBPM & SeeWhy
Send an event to the queue
on the SeeWhy server
12/10/12 ı 30
31. Business Intelligence with jBPM
All historical data is stored in the database by the jBPM engine
• So, BI is a matter of writing “the right queries”
PoC
• Simple BI app
(JRuby on Rails)
12/10/12 ı 31
34. Lessons learned
jBPM allows us to implement a wide range of business
processes, since we have the power of Java at disposal
Business analysts aren’t fond of jBPM at first encounter
• Building business processes is not a matter of drag-and-drop!
• Business processes can’t be built without programmatic logic!
• Transactions, performance, …
BI/BAM sells!
• Defining a basic BI/BAM framework for jBPM
12/10/12 ı 34
The goal of this presentation is demonstrating the use of jBPM in a real-life application. The application that is used, is a proof-of-concept which was developped for one of our customers. 10/12/12
This is an application architecture which is typically found in companies which have used ICT for quite some time time. In this example, there is a large mainframe machine on which both legacy programs (upper right) and more modern programs (left) are running. Some applications are implemented as terminal programs (the application runs entirely on the server, lower right) and some are outside the mainframe, but they are using some functionality offered by the applications running on the mainframe. Commons for this “organically grown” architectures is a cobweb of dependent applications. Also notice that most of the workflow management logic (WFM) is scattered accross different applications. 10/12/12
These are the requirements for the proof-of-concept 10/12/12
This slide explains why we chose jBPM to implement the workflow logic 10/12/12
Before we start building the proof-of-concept, we first had to make sure that jBPM was “fast enough” 10/12/12
For simple sequential actions, the performance of jBPM is very good. The actions don’t have any logic in them (so we only measure the jBPM overhead). Every action has a different handler class, so that no caching can happen between the nodes of the same process. For these setups, we see that jBPM is very fast, what is to be expected since only some Hibernate calls are necessary. 10/12/12
Parallel execution paths are more difficult, but as shown on the slide the average running time is in line of expectation (which is very good). 10/12/12
This business process is a real-life example. The measurement was done using a report generator thread and a users-mimicing thread so the measuring went automatic. There is an overhead of these threads, but the average running time of 3 ms shows that it is minimal. 10/12/12
The core functionality of an ESB is “routing’. In reality, an ESB also has other functionality (transformation, indexation …) Basically this is sending a message to a given destination, using a specific protocol. The application that sends the message however, does not know this protocol (altough it is possible). 10/12/12
Change the mailbox with an ESB and the destination with another server/application and the story remains the same. The link on the bottom of the slide is done by a collegue (he is a committer of Jboss ESB). 10/12/12
The next slides give a graphical overview of the proof-of-concept. This is important to understand what will be shown in the demo movie on the end. To start, we have an application which constantly generates XML reports 10/12/12
These XML reports are sent to a Mule ESB using the low-level TCP protocol. 10/12/12
On the ESB, the XML message is transformed using XSLT (the data that is not needed is thrown away). The XML report is now sent to a JMS queue which is running on a Jboss server 10/12/12
On the same Jboss server, an EJB 3 MDB (Message Driven Bean) is running. This MDB takes messages from the JMS queue, parses the XML report and calls operations on the BPM service according to the information that is contained in the XML. The BPM service is implemented using the EJB3 Stateless Session Beans technology. This service is in fact a wrapper around the jBPM process, provinding entry/exit methods for this process (=signal methods, data retrieval methods). 10/12/12
Graphical animation of the proof-of-concept 10/12/12
Since we used the EJB 3 technology, we can cluster (scaling/high availability/fault tolerance) some Jboss servers to cope with high loads/SLA’s 10/12/12
To use SeeWhy, we have to sent an event to the SeeWhy event queue. This is easiliy done by using a custom class and attaching it to a jBPM node. The logic in the class will construct the event and sent it to the event queue. 10/12/12