Delegation Pattern
(Top)
If part of the work that is required to transform a stimulus into a response is delegated to a server, then the original event must be mapped into the three events that constitute the delegate work event pattern. The events in this pattern are:
| Event: Client Requests Our Service | |
| Message Stimulus: | Receive Our Service Request from Client |
| Update Response: | Create waiting on server entry. |
| Message Response: | Send Their Service Request to Server |
| Event: Server Delivers Their Service | |
| Message Stimulus: | Receive Their Service from Server |
| Update Response: | Delete waiting on server entry. |
| Message Response: | Send Our Service to Client |
| Event: Server Fails to Delever Their Service | |
| Temporal Stimulus: | A waiting on server entry is past the time when we expected their service to be delivered. |
| Message Response: | ????? |
One variation on this pattern is to delegate the entire job of producing the response to the server. In that situation, the second event would no longer send our service to the client.
The essential requirements may already contain a number of these patterns because it may be essential to delegate work to servers who are outside of our system. But, when we decide to separate our system into a manual partition and an automated partition, we introduce new client/server relationships that often lead to new delegation event patterns. In addition, if we separate the automated partition into client/server tiers, we will introduce additional automated delegation patterns.
Automation Boundary
(Top)
If our choice for the automation boundary splits an essential event, it will be necessary to map the essential event into two practical events. One of these events will have the perspective of the manual partition and the other will have the perspective of the automated partition.
For example, consider the (partly) practical event:
| Event: Customer Places Order by Phone | |
| Message Stimulus: | Receive Phone Order from Customer |
| Update Response: | Enter order into system state. |
| Message Response: | Acknowlege order to customer. |
| Message Response: | Send order to shipping department. |
Now, suppose that we make the following design choices:
These choices require that the event to be split because the stimulus must be detected by manual methods but the state must be updated and the response must be sent using automated methods. Now, suppose we make the following additional design choices:
In essense, the manual partition must delegate the work of updating the state to the automated partition. This leads to the following events:
| Event: Customer Places Order by Phone | |
| Message Stimulus: | Receive Phone Order from Customer |
| Message Response: | Enter order into Automated System. |
| Event: Automated System Completes Entry | |
| Message Stimulus: | Receive Order Entered Notice from Automated Partition. |
| Message Response: | Inform Customer Order was entered. |
| Event: Automation Partition Fails to Complete Entry | |
| Temporal Stimulus: | Order Enter Notice is not received within two minutes. |
| Message Response: | ????? |
| Event: Clerk Enters Order | |
| Message Stimulus: | Receive Order Entry Screen from Clerk |
| Update Response: | Enter order into system with toShip state. |
| Message Response: | Send order to Shipping Department. |
| Message Response: | Send Order Entered Notice to Clerk. |
| Event: Shipping Department Acknowledges Order | |
| Message Stimulus: | Receive Order Acknowledge from Shipping Department. |
| Update Response: | Modify order to atShip state. |
| Event: Shipping Department Fails to Acknowledge Order | |
| Temporal Stimulus: | It is two minutes since the order was sent to Shipping. |
| Message Response: | ????? |
Note that because the clerk should be able to hold the delegation status in its own local temporary state for the two minutes that it takes to detect failure, it is not necessary to explicitly record the delegation in the manual partition state.
Figure 1 shows the typical sequence of events assuming that no failures occur.
|
User Interface
(Top)
The previous example will require us to create a user interface which the clerk will use to enter the order. A user interface is much like a use case because the interface is based on a sequence of events that are initiated by the user.
Prepared by David L. March -- Last Revised on April 13, 2003
COPYRIGHT © 1999-2003 BY DAVID L. MARCH