Pragmatic Software Design

Vijay Narayanan

Build an Abstraction API for BPM Interaction

user-pic
Vote 0 Votes

Introduce an abstraction API when integrating with a BPM solution. Why do I say that? Several reasons:

  • Good software design practice to bind to an interface as opposed to an implementation. So individual applications won't be directly coupled with an external vendor solution.
  • Provides you the flexibility to augment solution using multiple vendors. Related to above point, you can utilize one vendor for a subset of capabilities and another for a different set.
  • This API can be the ideal place to integrate your enterprise capabilities within the context of BPM solutions. Instead of making one-off or tactical modifications to a vendor solution that could be both expensive and proprietary, you can augment missing capabilities using the abstraction API. For example, if the BPM solution doesn't support authentication based on active directory, this abstraction API can provide that capability (most likely you already have this component in your enterprise). Additionally, this is also the place to integrate horizontal capabilities such as message routing, metrics, monitoring, and error handling. Do you want your BPM solutions to report exceptions differently than other applications? In the same vein, this API can integrate with services or libraries that encrypt/hide sensitive data attributes before returning process state to a calling application. This has the potential to reduce duplication of such logic across user interfaces that integrate with related business processes.
  • Can potentially simplify complexities associated with a native API. If the native API needs a set of steps for starting process instances or get task/work items for a particular user - this abstraction API can simplify those calls. This not only makes it easier for integration but reduces the opportunities for errors across development efforts. This API in essence can act as a façade.
  • The API standardizes access to BPM capabilities and reduces the possibility of competing integration mechanisms across development efforts. If one team uses the native API as-is and another builds a new one on top - you have two ways of accessing the BPM engine. This problem gets worse as additional teams start to use BPM.
  • This API could also make every business process support a core set of functions in addition to start/stop/suspend/resume calls. For instance, every business process can provide a getCurrentStatus() or reassignProcessInstance() that will make it easier for managing processes at runtime.

This API could be realized as a web service depending on the level of heterogeneity and performance requirements. This would essentially act as a service enabler for your business processes.

The above list isn't exhaustive - are there additional ones to add to this list?

No TrackBacks

TrackBack URL: http://www.ebizq.net/MT4/mt-tb.cgi/16296

Leave a comment

Vijay Narayanan blogs about software design from several perspectives - SOA,BPM, messaging, systematic reuse, agility, and architecture.

Vijay Narayanan

Vijay Narayanan is a software professional working on a variety of projects. Vijay has worked on several software initiatives ranging from single-user systems to large, distributed, multi-user service platforms with services. Most recently, Vijay has been involved in research dedicated to combining agile practices with service-orientation. He is a contributing author to the upcoming book Next Generation SOA as part of a chapter on modern SOA methodologies. Vijay maintains a blog dedicated to software reuse at http://www.artofsoftwarereuse.com.

Recently Commented On

Monthly Archives

Blogs

ADVERTISEMENT