The end in mind ...
I often get asked the questions: where is this whole Business Process
Modeling (BPM) thing going? what is it good for? why people think it should be
based on open technologies? Here is my one page answer. as usual comments
and feedback welcome.
11/27/02 A
related article from Scott Hebner
The infrastructure battle
The software industry has been at war since its very early days with players
that wanted to dominate infrastructure (Hardware, Operating systems, Distributed computing
models, ...). I am too young to remember when it all started (though I "touched" my
first computer -an IBM/360- when I was 5 years old in 1969 in Casablanca as my
dad let me in the machine room of his company, and still remember it as if it was yesterday) but it started a long
long time ago. This business was also a cash cow: a friend of mine
told me that his grand-father retired on the money he made after he bought some
stock in the streets of a quiet Massachusetts town -Maynard- from a guy talking
about a new thing -computers-, he happened to be the founder of Digital... So
the game and what is at stake has not really changed for the past 50 years. It
is probably "softer" today, that's all.
The past 15 years or so has seen new major players emerging as well old one
disappear due to new infrastructure component types or flavors. IONA and BEA
come to mind, and Microsoft or Oracle before them. Nowadays, infrastructure software
include operating systems, databases, application servers, web servers, EAI and
B2B infrastructures, ... oops I almost forgot web services, and many others like
MOMs, LDAP repositories, ...
What we see is that people who build modern web-based applications (mission critical apps or
solutions) need almost all of the pieces of this infrastructure. And if you
develop applications it is hard to be successful if your infrastructure look like a
mosaic of components provided by different vendors. Within a year or two because
of the inherent complexity of the required infrastructure, one will be confronted to
either choosing a semi-open infrastructure (built on open standards but with
some proprietary fixes) or to spend a lot of effort integrating so-called open
components that just not quite work together or do not perform as well as an
integrated infrastructure platform. For instance, a unified security model comes
to mind as something really hard to deal with a mosaic of components.. So let's
face it there will be probably 3 infrastructure players left within a couple of
years: IBM, Oracle (only if they care to be more than a database vendor) and Microsoft. Sounds familiar? when we
cannot have the butter, the butter's money and the farmer's wife as we say in
French, so we might as well have the right infrastructure.
BPM is a technology that helps writing complex applications, it is part of
the application model as Intalio put it when it founded BPMI, it is a component
that enables corporations to run and manage the process-oriented business logic
of the their applications at a common level as opposed to the current situation
where this type of business logic is buried in code in all applications.
The future of "the" application model
Every generation of developers and
architects have dealt with the issue of "the"
application model. What are the best ways to write applications? It started by
finding the best language and development tools (I remember my dad telling me
how he entered each instruction in its computer, one by one by flipping a few
switches), then by separating the data management from the application itself
and by introducing libraries, then the client/server model, the n-tier model,
... I am again too young and not really interested to give you an historical
perspective on this. However, as an application developer, this is something
that cannot be taken lightly.
More recently a new trend has appeared in the software development community:
metadata. More and more applications and modules are metadata driven. This trend
has been officialized by the OMG with the MDA: the Model Driven
Architecture.
This is a new approach to code reuse which is not based on reusing code per say
as library in the past, but rather write some code which can be
"configured" by metadata to work in a given context. This code is
based on a metamodel which is often described via UML or XML schema. Of course
the OMG goes further and is thinking to go directly from the metamodel to
component deployment in different technologies (J2EE, CORBA, WebServices,...).
The reason of course why infrastructure is so important today is that one can
no longer write an application from scratch, right on top of the operating
system and a few libraries (remember POSIX?).
We need to rely on a large number of services common to all applications
(security, transaction, connection pooling, messaging ... to name a few). Productivity can
be greatly enhanced by using the right pieces of infrastructure. We also need to
point out that the risks of using pieces that you have no control over is that functionality and performance of these pieces may
not match the requirements of your application. This risk is usually mitigated by
selecting pieces that comply to an open standard. In this case you can at least
expect that one vendor would match the performance (Anybody who is using XALAN
XPath engine would understand what I mean) and implement more than 90% of the
open standard specification. Only then your application has a chance to operate
properly in production far from you developers desktop.
So how does this application model look like today? how BPM is positioned in the
application model? Historically I think that no one will argue that the MVC
pattern (Model-View-Controller) has been the most influential in shaping the way
we develop user-based applications.
The current forces when designing new applications are two fold: a) every
application must be able to evolve rapidly -this is not so new-, b) most applications cannot be
developed in isolation, they must integrate readily with their environment
(typically other applications) -this is rather new, as the cost of ownership and
the value of the application both strongly depend on how well they integrate
with their environment.
Well, at this point, if you have not clicked away you would probably tell me
that Enterprise Application Integration has been around for almost a decade, again as an infrastructure
component. It has seen its winners: NEON, Mercator and more recently WebMethods
(as Active) and CrossWorlds. But the pressure is higher today to integrate applications not
only at the data level, but also at the process
level. This is identified by the buzzword "Process Federation". In
other words what application users, managers, developers want today is to be
able to define business processes which span applications like the web client
model has allowed us to build web-based user interfaces that spans multiple
application seamlessly.
So BPM is right there at the convergence of metadata driven components and
solving new EAI requirements actually killing two birds with one stone: A) your
applications are more maintainable because the "process" is not hard
coded but described by an XML definition, B) if most applications comply to the
same business process metamodel, one has a greater chance to be able to compose
and recompose these processes across applications, provided that their
respective process engines interoperate.In addition some BPM specification are also addressing another aspect of application
development which is the "coding" of long running units of work.
Historically, OLTP systems have provided a synchronous and therefore
instantaneous link between the consumer of the data and the data. As
applications are more and more integrated with their environment, one cannot
expect to have the whole world synchronously (and transactionaly) connected to your application.
Hence, more and more, you find code snippets in various applications which are little state
machines that manage these asynchronous collaborations between your application
and other applications. This code is typically harder to write, error prone and
harder to debug. Some of the BPM specs have consciously or unconsciously
provides a way to write this code as metadata. However, I don't feel that this is truly BPM, it is at best a
glorified UML activity diagram. These units of work are, however, part of a
business process and constitute the "work-flow" of the business
process.
If we go back to the MVC pattern, BPM technologies are designed to implement
metadata driven controllers. We are yet to see a complete separation from the
process-oriented business logic and the model-oriented business logic but we are
clearly on the way. There is probably a big market for tool vendors to look at
this new application model and provide tools that complete the vision of a
"business process managed" enterprise because the application model
itself (and once complete) is only going to get us half-way there.
A less visible battle is happening in parallel at the level of user
"tasks". The process-oriented logic can be divided in two broad
categories: a) tasks, which represent the interactions between a user and a
given unit of work and b) business processes, which represent the compositions
of tasks, systems interactions and B2B transactions. Several standards are
playing in this field, XForm of course, the next generation of HTML forms, and
the OASIS specification WSIA currently being developed after two efforts have
merged (WSUI and some work done by IBM). Except for IBM the big guys are
completely absent of this field, which is probably as much important as the BPM
field: the paradox of automating your processes if that you need user
intervention to handle and resolve exceptions. It is also important to move this
piece from code to the metadata level as more and more complex "tasks"
are being defined within applications.
Now, where do web services fit in the picture? well web services are the
edges of the business processes, they provide a homogeneous and loosely coupled
invocation mechanism to the
"units of work" implemented by applications (and traditionally exposed
via a proprietary API) enabling them to be composed within the various
business processes. One could also turn this picture upside down and view a
BPM as defined by BPML or BPEL as nothing less than a web service
"broker" providing various system and business level services for web
services composition. I like the first picture better though.
Is B2B part of the story?
Well, yes, B2B is definitely part of any BPM story: how many business
processes within any corporation does not have touch points with a customer,
supplier or channel partner? Is B2B seriously considered by the Web Services,
BPEL and BPML gurus, it is unlikely. They will try to convince you that you can
do B2B with web services, you might even have to spend a lot of money to realize
that you are dealing with a low level technology (one level on top of HTTP),
which cannot support large interoperable business communities. So yes, the
authors of these specs can
talk as much as they want about travel agents and airlines and despites a few
press releases, the Fords and
Boeings are not betting their business on web services in the current state of
the specifications. If you still think you should bet your business, you will quickly realize that you'd be better off faxing your XML documents
to your business partners, you would get non-repudiation, guaranteed delivery,
and sender/receiver authentication for the price of a phone call. The most
expensive web service infrastructure cannot deliver to these simple business
requirements while ensuring worldwide interoperability. B2B infrastructure is
going to remain the realm of specialists like Sterling Commerce, Seeburger or
CycloneCommerce, to mention a few, simply because there is already an existing
infrastructure in place (EDI) and an inherent
complexity that do not need to percolate through "the" application model we outlined above. When Microsoft starts
looking at it this way, it could end up buying one of these companies to
bring B2B expertise in its product line and offer something else than RPC calls.
Incidentally, anybody which looks at how the web services architecture of
specification is managed (i.e. everyone feels free to add its own spec) and the
ratio of B2B semantics over RPC semantics exhibited by the various specs, one
can easily extrapolate and derive that most of the web services spec are geared
towards the next generation infrastructure and the new application model that
will come out of it. The authors of these specs are on a mission (for their
struggling company) and if you compare the amount of money that will be made
selling this new infrastructure as a next generation distributed computing
platform, compared to a B2B infrastructure, then you understand where these guys
are heading.
So where did Microsoft and IBM want us to go today?
Well, clearly we are still far from the promised land of "business
processes" and "real-time" business process re-engineering. It is
going to be a while until you convert your IT staff into business analysts which
spend their time monitoring or re-engineering your processes with point &
click tools. Everything that you see or can buy today is still at the
infrastructure and application model level. This is going to remain like this
for a while. For how long? We will remain here until a) infrastructure vendor
stabilize their "business process management system" offering b) most
applications are rewritten to take advantage of this new application model and
completely isolate the process-oriented logic from the model-oriented logic, c)
tool vendors emerge with business process suite which provide the hooks to
manage this infrastructure and metadata at the "business process
level". Vendors like MEGA
have been clear
precursors of this approach, they might have been a few years too early though.
The immediate benefits are for your developers. They will become familiar
with BPEL4WS and start using it to write and manage the process-oriented
business logic.
Phil Wainewright (Looselycoupled.com) added some comments
to the article.