Skip to content

Known Limitations and Future Work

Nikolaos Pougounias edited this page Jul 29, 2014 · 2 revisions

Intrusiveness

With the current implementation, a client application needs quite a few changes in order to take advantage of the FSM Engine. In a future version, the API should be improved so that the FSM Engine becomes less intrusive and can be integrated into an existing application with the least changes possible in the client source code (e.g. by using Java annotations, aspect-oriented programming, meta-programming if integrating with other languages running on the JVM such as Groovy, etc.).

Branch Robustness

Branches are used as containers of Transitions and implement the same interface with Transitions (StateChanger) so that they can be used interchangeably and transparently to the client code. Normally, only one of the Transitions contained in a Branch should be actually executed each time and this is determined by the GuardConditions configured for those Transitions. Currently however, this behavior cannot be enforced programmatically and therefore it is up to the client code to ensure that only one Transition is executed each time by having only one GuardCondition evaluating to true. In a future version this should be improved by at least providing a proper warning to the client if not entirely prohibiting it (if it is decided that there is no point providing this kind of flexibility, that is), thus preventing nasty surprises and making the Branch model more robust.

Clone this wiki locally