Main Menu
Home
About Me
Blog
Articles
FAQs
Contact Me
Search
Syndicate
feed image
 
   
Home arrow Blog arrow When to deploy a process in runtime?
When to deploy a process in runtime? PDF Print E-mail
Written by Chintan Rajyaguru   
Saturday, 22 September 2007

Let's quickly cover some basics so the blog makes more sense.  

In a classic academic SOA scenario, your organization is made up of bunch of services. When you orchestrate them, you define their invocation sequence along with some other information in an xml file, which follows WS-BPEL specifications. You then deploy the process in a compliant process server. The server invokes the services turn by turn applying other rules and logic (e.g. stop the process if outcome of a service invocation is xyz) defined in the process.

In a top down scenario, you model your business process as a WS-BPEL compliant process, you define services that implement the tasks defined in the process, and you deploy the process in a compliant process server, which invokes the services to execute the tasks. 

This sounds simple on the surface but many architects don't realize that there is a performance overhead involved in having a process call different services - the overhead gets worse if the process is too fine grained.

 

when_to_deploy_process_in_runtime_1

 As can be seen from the figure above, the more 'boxes' you have, the more the invocations from the process server to the services and the more the overhead.

When I work with clients on SOA/BPM projects, I always encourage them to first identify the business need to deploy something as a process. The high level questions I ask are:

o    Do you want to collect runtime data on the process? If yes, what kind of data?

·         Time take by the process or a task to complete

·         Revenue generated by a particular activity

·         Number of times a particular task was performed

·         Revenue generated out of a task or frequency of revenue generated compared to the number of times a task was performed

o    Do you need business flexibility when you can switch tasks around?

o    Do you already have existing IT systems but you just need a central coordinator?

Sometimes, there are situations when there is a technical need to deploy something as a process. If an organization has correctly implemented SOA, it would have services that behave like black boxes, in which case you need a coordinator that will do all the plumbing work. It may be a good idea in that case to orchestrate services and deploy a process in a runtime. Some examples of technical need are:

o    You need to massage (map/transform) data between service invocations

o    You need to implement some logic to invoke different services based on different situations

It may be possible to use an ESB to satisfy some of the technical needs but that's another topic.

When you do decide to deploy something as a process, an interesting exercise it to determine the granularity of the process. Should you deploy every business task as a task in the process or should you combine some tasks making the process more granular? I will address this with an example some time in the future.

Write your comment here (support html tag):

Random Code
Random Code Verification
 
Last Updated ( Saturday, 22 September 2007 )
 
< Prev   Next >
BlogSidebar
 
 

Copyright Chintan Rajyaguru
Contact me if you have any questions or comments.