I’m now going to modify and expand the Decomposition Matrix to more fully reflect the story in Web Services and Service-Oriented Architectures, The Savvy Manager’s Guide.
First, the input of travel dates and locations is changed to travel dates and customers. In the story, C. R. chooses the dates and customers, not locations. Locations for customers come from the external CRM service used by C. R.’s company. Inputs and outputs for the CRM service are added.
Second, a traveler identification input is added. This identification is used to obtain the traveler’s profile.
Third, requests to customers’ calendaring services for meeting availability are added. These follow the same pattern as airline, car, and hotel services. There is a request for meeting availability that is followed by a meeting reservation request. The meeting availability requests are sent once it is known that there are available flights, hotel rooms, and rental cars. Also, receipt of one or more meeting confirmations in meeting reservation responses is needed before making either a flight reservation or an air/car/hotel reservation. This is because such reservations may have restrictions in order to get the best rate.
Fourth, the output of GPS destinations is added for the rental car service. This appears after all of the reservations since all driving destinations are provided at the same time to the rental car service. Also, this raises the issue of granularity for the first time in this example. Because of the possible volume for a car rental service, that service might ask that GPS destinations be bundled in one service request. It is potentially more efficient to handle one larger request than many smaller requests. So, this example is set up to create single larger requests that provide GPS destinations for the rental car service.
Fifth, a correction is made to the matrix that goes back to Part 1 of this example. In that matrix, the input and output entries for driving directions were incomplete because the driving directions were not provided to the traveler. The revised matrix below has an additional output of traveler’s driving directions (number 16) that occurs concurrently with the “Driving directions response” input and after the inputs for the various reservations responses. The type of modification is likely to occur as you develop a matrix. It is possible to overlook a relationship or to leave out an input or an output. Nevertheless, what often happens is that as you study the matrix and the generated diagram, these errors or omissions come to light. In this case, I noticed the error when I was adding the output for GPS destinations.
Finally, a number of informational outputs are added to update C. R.’s calendar (C. R. is the Traveler in the matrix), C. R.’s spouse’s calendar, and C. R.’s manager’s calendar. Also, the travel plans are saved for possible future reference.
This matrix generates the following diagram. (You can click on this — or any of the other images — for a larger size.)
Starting at the left, further decomposition of the first process, “Obtain travel information,” is shown below. This further decomposition results from adding the inputs and outputs for CRM customer information and the traveler’s profile. (For simplicity, I am not showing the intermediate sub-matrix for each further decomposition shown in this part of the example. Setting up the sub-matrix was described in Part 2.)
The next process, “Check travel availability,” is similar to the process in Part 2 with the same name. Further decomposition of this process is shown below. The difference between this diagram and the one in Part 2 is that the task “Receive travel dates and customers,” in Part 2 was moved to the first process above and renamed “Receive travel information.” Again, this change was necessitated by the addition of the inputs and outputs for CRM customer information and the traveler’s profile.
The further decomposition of the next two processes is a bit confusing. They appear to break up the various aspects of making reservations. The “Reserve flight and/or pkg” process is shown below. The Decomposition Matrix specifies that only flight information is needed before the generation of the “Manager’s trip summary.” This results in this further decomposition.
Therefore, the remaining reservations are in the “Reserve car and hotel” process. That further decomposition is shown below.
This confusing decomposition is an example of why I often describe the use of the Decomposition Matrix as similar to a working with another designer at a whiteboard. You, the designer, might have to make a decision as to what you think is best. For example, you might decide this decomposition is fine because it generates output at the earliest possible point. In this case, when the “Manager’s trip summary” is generated. On the other hand, you might decide you prefer to consolidate the reservation tasks in one process so that it looks like the further decomposition shown below. This merges the “Reserve flight and/or pkg” and “Reserve car and hotel” processes in the first business process diagram in this posting. The remainder of that diagram remains the same.
To force the Decomposition Matrix to generate this diagram, three check marks would need to be added: Input 5 for Outputs 19 and 20, and Input 7 for Output 20.
Previous: Business Process Decomposition, Part 2