Sorry, I'm getting a bit confused here. I get the impression we're
talking about orchestration like it's one big black box. So, in order
to try get some clarification, I doctored a picture I threw together
for something else.
It's a usecase along the lines Burr outlined earlier (Broadband
Provisioning in this case). My confusion with Burr's usecase however
is that we seem to be blurring together 2 different categories of
orchestration that are fundamentally different (at least in my head) -
Service Level Orchestration and Bus Level Orchestration (as we
mentioned a few days ago). I find it difficult to see how you solve
both of them in a unified way without first addressing each of them in
isolation. I think there are solutions there for the Service Level
Orchestration.
So, I thought we were now just talking about ESB Level Orch based on
jBPM, but I get the impression now that we're talking about a solution
that merges the 2 worlds (that I see anyway :-) ). If so, how will we
make sure we can still support situations where customers want/have a
Service Orchestration solution that isn't in our unified view of the
world?
Burr Sutter wrote:
I've had
similar debates in the past and the scenario below is a likely
candidate for how we'll go to market on the "platform" therefore better
integration at the "project" level makes great sense. The market wants
SOA to solve a governance, SLA performance, policy enforcement and most
importantly visibility issue (who has the ball, who dropped the ball,
why was it dropped, how to re-route around the broken connection, etc).
BPEL can actually solve this use case and we'll need to carefully think
it through since the market is moving in that direction. If you wrap
your task management code with Web Services then they can be
orchestrated into a BPEL process definition.
The crawl before we walk and walk before we run approach would be to
take what Esteban has done with basic jBPM JPDL integration and smooth
off the rough edges on jbpm configuration and the programming model and
get some users on board with the ideas (such as the one described
below). At the same priority level we'll need solid WS-* support and
BPEL.
Perhaps JPDL can outrun BPEL the way Hibernate outran EJB Entity Beans
or Spring outran Session Beans but I'm not so sure of that. jBPM has
to become much, much more user friendly for both service orchestration
and human task-management. It needs an eco-system of people writing
articles and books. It needs a series of demonstrations/examples that
illustrate its utility. We'll need to find a way to increase its mass
adoption. In theory, jBPM should be at least 30% as utilized as
Hibernate and Spring. With a well developed ESB approaching the same
utilization of J2EE application servers.
So the whole BPEL vs JPDL is whole new debate!
I think better integration between the ESB & jBPM is something we
have wanted for quite some time. Now we'll just need to hammer out the
details and get some feedback on the user experience related to the
basic integration that has already occurred. Concepts like Advanced
Splitter/Aggregator have been on the task list for a little while now
and they are likely candidates for jBPM since the "advanced" part is
related to long-running processes.
In any case, the original debate was related to replacement of the ESB
action framework with jBPM's JPDLs action framework. I'm not sure if
we've resolved that concern just yet.
Bill Burke wrote:
Yeah, Burr. This is exactly the overall
picture I envisioned. I don't see how BPEL could solve such a use case
where your overall flow involves both a messaging system(s) and various
web applications.
This is why I think it is crucial for ESB and jBPM to be built upon the
same component model and core engine. In your use case below, there
really is no clear separation between the ESB and your process flow.
You might want to do transformations between page flows, fork a
notification to a backend system, wait on a task to be performed by a
web application. Do you see how it all bleeds together and why it all
needs to be one integrated product?
Please, keep arguing. My initial push of having deeper integration
between ESB and jBPM was based on intuition. The more I dive into it,
the more I think my intuition was correct, but I am still not totally
sure.
Bill
Burr Sutter wrote:
Human-centric means there are some features
that are particularly important like management of swim-lanes, group
task queues, individual user task queues and a dynamically rendered
website that allows end-users (accountants, lawyers, clerks, etc) to
interact with process instances (with supervisor override capability).
The website/console alone requires about 30+% of the jBPM's teams
current resources.
With our current ESB+jBPM integration we should be able to orchestrate
a single "process" between multiple ESB-hosted services and humans.
Consider this scenario:
1- An order is received via FTP
2- Order is routed to a validator
3- Order is routed to a transformer
4- Order is over $500 and therefore must be sent to a group task queue
(the order processing team)
5- Simultaneously an async credit check request for the customer on the
order header is made
6- Process goes to sleep and awaits a response from the order
processing team and the credit check
7- Once the credit check returns the process is now only waiting on the
order processing team
8- Every 2 hours an alert is sent out to the order processing team to
let them know that this order is getting old
9- Sally (a member of the order processing team) picks up the order
from the group queue and moves it to her own queue
10- She visually inspects the order (nicely transformed by step 3) and
visually inspects the credit report. While the customers credit score
from Dun and Bradstreet is somewhat poor, the customer has excellent
payment history with our business therefore Sally makes this additional
note on the record and pushes it from her queue to her supervisors
(additional approval required).
11- Her supervisor is currently out on vacation
12- Her supervisor's supervisor is covering these tasks and logs into
to finish the order
13- Now that all approvals are secured the order is routed to the
approach fulfillment team
14-Parts of the order require service activation (e.g. this is an order
for a new cell phone hardware and services) so those line-items are
split off and routed to the appropriate team - that team's queue is
updated to reflect the needed work (e.g. some services require the
dispatch of field workers)
15-Parts of the order require multiple warehouses to be notified and
used (e.g. one line-item is for a phone from warehouse A, another
line-item is for an blue tooth earbud from warehouse B) both warehouses
respond with real shipping costs (note customer has already been quoted
so this is just to offset the real book keeping)
16-Various email alerts are collected and properly organized and sent
out to concerned parties (e.g. the person who initiated the order is
notified that it has shipped)
17- Once all parties report in that there part of the order has been
fulfilled then accounting is alerted, the executive dashboard is
updated, etc)
My ESB+jBPM should allow me to see this process laid out visually.
Allow me to make ad-hoc process changes to both process instances that
are "above" the current change (altering step 14 for all new process
instances and process instances living prior to step 14). Allow me to
have complete visibility into how "long" something is taking at any
given step (so I can fire my order processing team). Allow me to
understand who/what is perform optimally (number of orders processed,
complexity of orders, warehouse A team is rocking along, etc).
Assuming this end-to-end process involves various 3rd parties (e.g.
partners who fulfill parts of the process), legacy systems (e.g
mainframe customer history system) and you still want a robust, easily
reconfigurable solution - well that is the promise of SOA for the
enterprise.
Tom Fennelly wrote:
Excuse my ignorance, but why exactly do
they differentiate between the different types of orchestration (human,
service etc)? I'd have just imagined it all as being event-centric,
with whatever triggers (??) the event as being somewhat secondary.
Where does that fall down??
Burr Sutter wrote:
jBPM 4.0 isn't due until late Q1/early
Q2 2008. If we had specific requirements we might be able to get the
jBPM team focused on a deliverable between now and and then but the
challenge for jBPM is focus: human-centric BPM/workflow or
service-centric orchestration.
Bill Burke wrote:
Huh? I'm confused on exactly what
4.2 is. Mark told me that it should basically be in maintenance mode
and only one person was going to be maintaining it while the rest of
the team focused on 5.0.
Better integration, not a single repository.
Burr Sutter wrote:
What is your timeframe for this
concept?
I don't believe there are enough bodies to throw at jBPM 3.3/3.4 and
ESB 4.2 to get them both out the door by June 2007 to bring those
different worlds closely in-line. Are you proposing a single
repository/single codebase or simply looking for better integration?
Burr
Bill Burke wrote:
Bill Burke wrote:
Burr Sutter wrote:
The "cons" for jBPM-based
orchestration:
- Does require learning of jPDL and jBPM actions. This is not a
trivial undertaking.
This is a relevant issue, but I think we can refactor base jbpm to
handle the simple usecases.
- It requires lots of setup
& configuration for jBPM such as getting the database configured
correctly and Hibernate mapped correctly. This is not well documented
and involves some heavy lifting on the part of the user. It is
improving but does have a real learning curve.
I think this is an irrelevant issue. This can be fixed. ESB 4.0
release had the same problems.
Let me expand on this. Burr, we have to stop thinking of other JEMS
projects like black boxes.
a) Its all open source
b) We all work for the same company
c) jBPM team is under Mark anyways
We need to foster cross-contributors.
Bill
_______________________________________________
esb-dev mailing list
esb-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/esb-dev