home contact us March 18th, 2010
about us [templated item]what we do[templated item]clients[templated item]partners[templated item]join our team[templated item]news[templated item]Blog
 
   
Categories
SSG Happenings
Industry Updates
Business Process Management
Business Intelligence
Service Oriented Architecture

6/2/2009 12:00:00 AM

BPM Summary



Over the last 8 blog postings, I have discussed how implementing a Process Oriented Architecture (POA) for Business Process Management (BPM) initiatives provides organizations with the agility needed to incrementally build out business processes. Companies can make improvements over time as the business is able to digest change. Yet the organization can leverage every process automation investment because the architectural structure binds them together to work as a whole. In this last entry in the series, I will summarize how BPM – using POA – can yield excellent savings for companies in any industry. Implementing BPM without POA strategy can save companies money by improving operational efficiencies within the organization. Using POA, companies attain further savings by the way BPM is implemented.  
 
POA allows businesses to realize immediate gains from BPM while putting the company in a position to evolve and expand these processes consistently and continuously within and across an organization. Businesses look to IT to increase productivity through automated systems and also expect IT to find ways to reduce the cost to implement these systems. Implementing a POA for BPM saves companies money by reusing common process designs for different departments.
 
POA can be an enabler for many BPM implementations. The basic process is the same, but can be customized to the specific needs of departments and individuals while providing the means to scale BPM across the organization inexpensively. Without the right architecture, an organization would have BPM in silos; separate, vertical divisions with no connection, in which case BPM may prove to be cost-prohibitive.
 
BPM often starts within a department – such as Procurement or Legal where human error can cause critical delays. As organizations dive into any single process to automate it, they find that it spans across departments or communities. Automated tasks such as order entry and document approval cut across most industries. However, these applications only improve productivity for “local” or single-department business problems. The productivity for the given task was greatly improved, but it didn't solve company-wide business problems such as: Did the order make it to fulfillment? Did the offer letter get processed properly by HR? Did the final report get assembled and submitted on time with proper management oversight and control? 
 
Gaining real productivity improvements and cost savings comes from having local processes working efficiently, and having a connection between each of the local processes. BPM and POA connect all of the vertical departments together, giving C-level executives the ability to review the entire organization to see where the bottlenecks are, where inefficiencies exist and what the cost drivers might be.
 
A key to saving money is how the BPM system itself is planned and architected. Decoupling the views and back-end systems from the business process itself utilizes reusability. In BPM system architecture, reusability means that the basic process can be customized for different communities or departments in an organization. 
 
POA organizes the process, views and the calls to the back-end systems by tightly or loosely coupling these objects as it make sense for the business. Once these components are organized in this way, current and future needs of top-level management, individual contributors and communities of users can be accounted for. The design or implementation of this POA will yield the most optimally efficient system possible because it anticipates business change. By finding commonality where it makes sense and structuring the design logically, POA can achieve what has been done for business applications (using SOA) in the realm of BPM.
 

Mark J. Peterson


5/27/2009 12:00:00 AM

Business Process Integration



 

In our example from last week, POA implements the requirements for a call center handling new orders and product issues. The process itself may be common for both work item type or it may inherit characteristics from a parent business process. In order to take advantage of this architecture, the business process needs to interact with back-end systems in a more abstract fashion. For example, let's say the process needs to perform some back-end system hand-off operation or synchronization after the call center is finished with the work item. Regardless of whether the work item is an issue or new order, the common process can utilize an abstract way of dealing with work items to perform the hand-off. The back-end systems may simply be a database or it can involve SOA concepts such as web services, service bus or JMS or all 3 at once. Interfacing with the back-end using an abstract interface would help the common process deal with the handoff or back-end synchronization for the different types of work items.
 
Not all back-end interfaces should be abstracted for commonality. When it makes sense from a system design standpoint, the underlying functionality can be tightly coupled in order to be handled in the same way by the common process. Conversely, the back-end systems may be loosely coupled by performing the operation in the child process where specific order or issue tasks can be performed. The tightly coupled designs would put them behind common back-end integration points. The loosely coupled design would leave them separate. Choosing the best approach can only be done by understanding how the business process and back-end systems need to work.
 
Tightly coupled designs provide a better way to extend and reuse functionality across an organization, which is preferred. Implementing use cases such as training, management oversight or breaking apart functionality for communities of process users are more easily implemented when processes and back-end systems are tightly coupled. POA will leveraged tightly couple back-end interfaces to implement requirements and aspects such as training and management oversight different users and communities effectively and with efficiency.
 
Let's consider three common aspects of back-end systems; Databases, EJBs and SOA using web services. We will consider how message-driven beans, JMS and service bus technologies play as well. We will start with simple examples and then show how more complex use cases can be handled.
 
Modifying Altering, Changing or Deleting (MACD) work item objects are handled best by the common process. Since we have designed the work item object such that things pertaining to the common business process are located in the root work item, MACD for orders or product issues is as easy as just handling the root object. If there are specific changes to the underlying work item, these changes should have been made by the view controllers, so we may not have to worry about them in the process. But if that is not the case, we can always abstract these operations behind a common back-end operation (or Data Aspect Object) or using helper methods within the process. Another approach would be to subclass the process and handle the differences there.
 
Figure 1 shows a data model using EJB concepts. The roles of Clerk and Biller are different and separate. The Clerk is working on a particular order, and the Biller is processing an invoice. The order and invoice work items share information, but the information is "sliced" (or partitioned and segmented as building blocks that are reconstructed as a new object, such as an invoice or order) differently as required to satisfy the two roles. Work item objects are pulled up using Data Access Objects (DAOs), which contain logic as to how to put the work item objects together. The DAO may use simple information like object identifier and object type, but they may also use role information, which is especially important if the objects being collected require policies involving Access Control List (ACLs).
 

POA DATA MODEL CONSIDERATIONS (click here to see a larger view of this diagram)

 
 
Depending on the work item type, work item ID and role, the DAOs build the work item by pulling information from the database, repositories and/or services. In Figure 1, database objects are retrieved using container managed EJBs. Information stored in repositories can be obtained by the DAO through a web service or Bean Managed Persistence. In our example Bean Managed Persistence objects handle MACD of Documentum repository information.
 
 
In an enterprise, obtaining real-time information is important. Since the underlying technology leverages EJBs, POA can build on these technologies to create a fully integrated solution. Processes for particular communities and process across the organization or enterprise can share common information. POA properly quantifies and slices this information into the particular views seamlessly. The clerk updating an order, the agent billing a customer, and the manager overseeing the operation all share and look at the same information, but it is processed and viewed to best suit each role.
 
The underlying work item is an abstraction, which is the goal for our back-end implementation as desired for a POA. The back-end design didn't depart from best practices, either. Instead, POA ensured the back-end is constructed with basic building blocks that can be extended and reused not only by our business processes, but by other systems in the enterprise. POA simply leverages the back-end by requesting a work item for a particular role with the work item identifier, or primary key. The work item is construction by the DAO while persistence and object life-cycle is managed by EJBs.
 
DAOs and EJBs are not the only way to implement back-end services. We could have just as easily used web services, JMS, Message Driven Beans and/or a service bus in the same way. The important thing here is to decouple back-end systems from the process by abstracting and reusing them in various parts of the enterprise. Depending upon the technologies used by the organization before the BPM initiative began, POA can leverage these technologies in the best way.
 
Figure 2 contains another example of how back-end objects can be abstracted and reused by POA. Instead of DAOs, we're using a Service Bus to interface and coordinate back-end systems. If building a new order requires persistence to a database, calling a web services and using EJBs, the Service Bus can be used to manage this function. BPM can now coordinate human workflow with back-end service orchestration using other enterprise strategies.
 
 
 
POA organizes the process, views and the calls to the back-end systems by tightly or loosely coupling these objects as it make sense for the business. Once these components are organized in this way, current and future needs of top-level management, individual contributors and communities of users can be accounted for. The design or implementation of this POA will yield the most optimally efficient system possible because it anticipates business change. By finding commonality where it makes sense and structuring the design to make use of concepts such as OOD and Aspect Oriented Programming, POA can achieve what has been done for business applications (using SOA) in the realm of BPM.
 
 
The next blog entry will be the final of this series: a summary of BPM. Be on the lookout for my white paper entitled "How Process Oriented Architecture (POA) Reduces the Cost of Oracle BPM Implementation" coming in June.
 
 

Mark J. Peterson


5/13/2009 12:00:00 AM

POA Views



 
 A recurring theme of this series is how partitioning systems reduces costs of a POA. Here we discuss this in more detail. Today I’ll elaborate as to how information and views should be organized and why.
 
Consider this scenario where we show the role of the process vs. the view dispatcher:
 
User Taking a New Order
  • The Process calls the View Dispatcher to render a New Order work item view
  • Dispatcher renders the View (Work Item Object) for taking an order
  • The user edits the screen by customizing the order details
  • Some of the edits need to be “known” by the Process but some only need to be “known” by the View.
  • Each system performs its own job
 
Let’s look at this screen view (below) for a work item. It’s a form used to enter order data. This form is a view rendered by the view dispatcher. In this single view, there are items that need to be known and used by the process and those that the process does not need to know.
 
 
 
 
The process may need to know certain things about the work item like Key Performance Indicators (KPIs), work item states, status or actions taken by the user. In our example, both order and issue items are sub-classed from a common parent. Information needed by the process about the work item, like order amount and order number (work item identifier), should be placed in the common work item object.
 
 
The process may also need to tell the view what actions to expect when the user is finished with the view, such as what actions are allowable to the user; i.e. accept, deny, save, delete, escalate, (or as in our example Save Changes, Cancel Complete) Information about the view, such as the style, type (external app or simple html form) or technology used to render the view are not important to the process and are left to the View Dispatcher to resolve.
 
The role of the View Dispatcher is to put together the specific view needed by the user. The need to create an order versus fulfill an order requires different views, but are part of the same end-to-end process. These views are resolved or put together by a view dispatcher according to information from the process. Partitioning the system in this way allows the view dispatcher and technologies used to implement the view to utilize very modular and re-usable components that make up the view. And virtually all UI technologies are compatible with this architecture. Technologies like Eclipse RCP, Struts or Spring M/V/C and tiles technologies jump to mind. I will not elaborate too much on it here except to say that some technologies are easier to integrate then others.
 
Further partitioning of the system, the data model in a POA also needs to be properly designed. This doesn’t impose requirements on the system any more than using an M/V/C architecture imposes particular design constraints on web applications. The data model just needs to consider how the system will use the data. So an example data model for POA could contain three regions: Business process data, functional data and content.
This can be shown as a domain diagram with overlapping regions:
 

 
  • The region concerning the business process consists purely of process related data like work item action (accept, approve, deny), KPIs and employee assignments.
  • Functional data refers to specific work item details concerning the order or issue like customer name, billing info and issue description.
  • Content domain represents blocks of data that are referenced by or useful to the process or view like product info, help menus, MS Word documents or spreadsheets.
 
Business process data may be placed in the common parent work item object and/or be included in with process instance information. Functional information can be in the parent or sub-classed work items. Content may be referred to by the process or views, but should be on a file server, document repository or database.
 
This data model will be developed further in a later blog entry. Various design considerations like façades, Data Aspect Objects (DAOs) and applicable technologies like Hibernate, Spring, EJBs, database and document repositories will be considered. For now, we will use this general data model so we can look at how views work in our POA.
 
After the view is dispatched, the controller used to render the view, (e.g. Struts Controller) may need to call back into BPM or use EJBs to get information for the view, persist changes, create objects, etc. The common process may just pass the object type, object identifiers and a list of action buttons for the view. With object identifiers, the view controller loads information into a form-backing object from the data in the work item and renders the view. Some actions available to the view may be save, cancel, accept or deny the order. The controller will persist changes if the person clicks on save changes or completed. It would then return whatever action (save, cancel, completed) back to the process so the process would know what action was taken by the user. If the process needs information from data collected from the work item, it can load the data from the persisted work item via EJBs or directly from the database. This way process stays synchronized with related information like KPIs, deadline information or assignments if the data was changed through the user interface.
 
While I’ve added some technical details to illustrate these scenarios, the main take-aways are that POA partitions the systems so that each part performs its own jobs so that process, view components and data components can be leveraged and re-used for profound cost-saving benefits.
 
 

Next week: Business Process Integration

 

Mark Peterson


 
   
All entries
 

What Our Clients Say



"SSG's Solutions Experts are very professional, competent, and experts in their field. They came up with a great architectural solution to our business need. ... I enjoyed working with SSG and would recommend them highly."
Don Tierney
Director of Applications
US West
 
"The SSG team's knowledge of Portal Infranet's product is excellent. They were very effective at identifying alternatives within our architecture to meet or exceed our business objectives. SSG was an important part of helping us get to market quickly."
Lori Crew
Senior Developer
Boingo Wireless
 


©2008 SSG, Limited. All rights reserved. Website Design by The MOD Studio