Business Process Management
A business process is a real-world activity consisting of a set of logically related tasks that, when performed in the appropriate sequence and according to the correct business rules, produce a business outcome, such as order-to-cash, purchase order fulfillment, or insurance claim processing.
Business process management (BPM) is the name for a set of software systems, tools, and methodologies that addresses how organizations identify, model, develop, deploy, and manage such business processes. A business process may include IT systems and human interaction or, when completely automated, simply the IT systems. Various BPM solutions have been in use for a long time, starting with early workflow systems and progressing up to modern Web services orchestration.
BPM techniques can exploit the foundation and the architectural work provided by an SOA to better automate business processes. This is among the important reasons for investing in a Web services-based SOA because Web services help achieve the goals of BPM more quickly and easily.
BPM systems are designed to help align business processes with desirable business outcomes and ensure that the IT systems support those business processes. BPM systems let business users model their business processes graphically, for example, in a way that the IT department can implement. All IT systems support and implement business processes in one form or another. What makes BPM unique is the explicit separation of business process logic from other application code (this contrasts with other forms of system development where the process logic is deeply embedded in the application code).
Separating business process logic from other application code helps increase productivity, reduce operational costs, and improve agility. When implemented correctly (for example, using BPM as a consumer of an SOA with Web services), organizations can more quickly respond to changing market conditions and seize opportunities for gaining a competitive advantage. Further efficiencies are gained when the graphical depiction of a business process can be used to generate an executable specification of the process.
Business Operational Changes
Most businesses have special operational characteristics derived from the reasons they got into business in the first place. One example is a pizza shop with a 30-minute delivery guarantee. To really make this happen without losing money, all kinds of operational characteristics have to be taken into account, such as pizza baking time, order-taking time, and delivery time within a defined area. Obviously, this is not the kind of operation that can be completely automated because it relies upon human drivers, but certainly many parts of the process could be automated, such as ordering from the Web, automatically triggering the delivery of new supplies to the restaurant, and using robots to prepare and cook the pizzas. Ideally, you'd like to be able to introduce as many operational efficiencies as possible with minimal cost to the IT systems involved. An SOA-based infrastructure can help.
BPM simplifies the problem of how to combine the execution of multiple Web services to solve a particular business problem. If we think about a service as the alignment of an IT system with a business function such as processing a purchase order, we can think about the BPM layer as something that ties multiple services together into a process flow of execution to complete the function, such as validating the order, performing a credit history check on the customer, calculating inventory to determine the ability to fill the order, and finally shipping the order and sending the customer an invoice. By taking the process flow out of the application-level code, the business process can be more easily changed and updated for new application features and functions such as a change in suppliers, inventory management, or the shipping process.
Figure 1-11 illustrates the kind of graph that a business analyst might produce for automating the flow of purchase order processing. The flow starts with the input of a purchase order document. The first processing step is responsible for accepting the document, checking security credentials and providing acknowledgment so that the sender knows the document was received.
Figure 1-11 Example business process flow for a purchase order.
A typical process engine persists the input document so that the subsequent steps in the graph can access it. After the document is validated, a reference to the document's location in the database or file system is passed to the next step so that it can check whether on-hand inventory is sufficient to fill the required item quantities. If sufficient quantity is on hand, the next step in the flow acknowledges receipt of the purchase order and lets the purchaser know that the company can fill it. This acknowledgment can be sent using email or a Web service message.
At this point, the customer may have an opportunity to reconfirm the order, given the quoted price and delivery schedule. If the customer does not reconfirm, the process is cancelled and moves to the cancellation step (which basically erases the work of steps in the business process to that point, perhaps including one or more compensating transactions to release inventory that had been reserved for this customer and to remove the order from scheduled deliveries). If the customer reconfirms, the next step is activated to prepare the order for shipment. After the shipment confirmation has been received, the process moves to the final step, which sends an invoice to the customer.
Process flows are typically broken into individual tasks that call a Web service. Flows typically include tests that branch the flow based on the results of exectuting a task. Branches of the flow can handle errors. For example, when an item is out of stock from one supplier, the flow might branch to a task that invokes a Web service request to another supplier to find out whether that supplier has the item. Sometimes no one has the item, in which case, the flow might raise an error to the operator or submitter so they can decide what to do.
With a common services-based solution available to IT managers, architects, and developers, productivity increases will be much easier to achieve, and business systems will support the kind of flexibility demanded by the constant market and regulatory changes that are a fact of business and government life. In particular, laying an SOA foundation for business process management allows enterprises to concentrate on higher-level issues such as implementing the best business processes, rather than worrying about the technical details of application implementations.