Logically, the Rational Rhapsody execution model is event‑driven. Therefore, there is no need to use multitasking to provide the wanted system services because the underlying framework handles the dispatching of events. Task allocation results from the consideration of time constraints and handling of external outputs by polling or interrupt handlers.
To handle concurrency, Rational Rhapsody provides two categories of objects: