Concurrency

UML supports specification of the concurrency at the class level; standard UML distinguishes between sequential and active classes:

When you specify sequential or active concurrency, you actually specify if the class should run in its own OS task or not. In RTOS implementations, the RXF uses a message queue per OS task to send a UML event to an active class.

Sequential Classes

All sequential classes run in the so-called main task. If you add a class, by default it will be a sequential class. Any event which must be handled by this class is placed in a FIFO queue when sent. This single event queue is used by all sequential classes.

Active Classes

An active class has its dedicated OS task assigned with its own event queue. Active classes are not supported when using the OORTX; all classes run in a single task (Main task).

When you set a class to active using the OORTX, the Model checker will throw an error. It is good practice to isolate active classes from sequential classes when modeling, using packages. This allows you to enable or disable the code generation for active classes via the scope of a component in your model.

For an active class, you must verify or overload the following properties: