Summary: | Reactive systems that provide services to an environment typically interact with numerous users or other components. Session multiplicity enables a component to keep track of these interactions by handling each of them as separate conversations. Session reflection is the ability to look into the state and properties of these conversations at run time, and use that for deciding the actions to be taken when certain events occur. This thesis addresses how to support session multiplicity and reflection during code generation of executable state machines and a runtime support system that can execute them. Using code generation, certain UML composite structures and state machines can be transformed to deployable, executable components automatically. To support these features, an interface for using them is offered to the components that comprise an application and some internal mechanisms have been added to a runtime support system. The interface includes methods for sending messages, creating new sessions and session state machines and retrieving information about run time state machine instances. The internal mechanisms include keeping track of components and sessions, giving intra-component messages priority, creating new session state machine instances and changing the addressing scheme and routing mechanisms to include session state machines. To put the thesis' results into context and to some extent prove that they are good, a proof of concept, multi-player rock-paper-scissors game has been implemented.
|