This pattern can be used whenever the use of some physical resource is allocated beforehand on an exclusive basis.
Examples: Restaurant, cars, rooms, media, travels, …
- Physical resource (car, seat, room, …) are allocated for finite intervals.
- Each reservations is scheduled for a given category (static partition) and a given period. Rental terms are set by resource categories.
- Resources are allocated independently, and their schedule derived from the reservation.
- Resource status are described by dynamic partitions.
- The symbolic description of the scheduler deals with the management of symbolic reservations and resources.
- Scheduling includes the actual monitoring of resources and the mapping of their status into their symbolic representations.
It may be noted that despite the fact that dispatching deals with actual events, nothing is said about their capture which, depending of technical architecture (to be defined), could be supported by actual (aka real-time) or symbolic interfaces. Things are different for scheduling which, being a symbolic activity, doesn’t entail constraints on boundaries and can therefore be directly be associated to a symbolic boundary.
Reservations are (partly) identified by customer’s accounts. Customers are described using the <Party> pattern which cover either physical persons or customary organizations. Sub-typing cannot be used at this stage since persons and organizations are identified by different mechanisms. Resources must be checked-out by named receivers whose identity is verified.
As far as architecture is concerned, it is necessary to define upfront if resources are fixed (e.g room, seats, …) or mobile (e.g cars, media, …). Assuming that a single identification mechanism can be used, mobile and fixed resources can be represented as subtypes of an abstract one.
Every resource must be assigned to one location at least; mobile resources may be assigned to (transient) multiple assignments: past, present, and future. Unicity constraint is guaranteed since assignments are identified by resource and schedule.
Collective resources can be taken into account with dedicated features (maximum and available capacity, waiting list) without affecting the core structure.
Depending on mobility and technical architecture, the monitoring of resources may be supported by locations, resources, or through human interfaces.There is three main options to monitor resources’ location and status.
- Actual event-driven: events are directly sent (pushed) to scheduling, which can deal with them instantly or otherwise.
- Symbolic event-driven: events are sent to scheduling only after being recorded.
- Activity-driven: changes are taken into account when scheduling look at resources.
Resources maintenance require the recording of historical events and states. Maintenance activities are performed in selected locations, in-situ for fixed resources.
Multiple (or combined) reservations call for explicit distinction between requests and reservations, and for status management (planned, ongoing, completed). If unit reservations are identified by unit requests they can be represented as a subset. Unit requests are identified by the multiple ones, the category and the schedule (optional).
UML models (Magic Draw)
Using UML stereotypes, it is possible to describe actual and symbolic objects and processes under a common modeling roof.
Along a domain perspective on will describe objects and agents together with the corresponding symbolic types. UML actors should be stereotyped either as roles or agents, both being also described by entities.