66 votes

Recommandé de FSM (Finite State Machine) Library for Java

Est-il un best-of-breed en mémoire FSM bibliothèque pour Java?

Je pense bibliothèque idéale serait relativement simple avec le soutien pour les événements, les actions, et les transitions. Il ne nécessite pas de configuration externe ou de précompilation. Il n'aurait pas à être simultanées capable ou multi-thread. Bien si c'était hiérarchique, mais pas nécessaires. Je pense que la Machine d'État inclus dans Qt (C++) est le niveau idéal de la complexité et de la fonctionnalité. En fait, il y a un nombre intéressant de FSM bibliothèques C/C++, mais j'ai été incapable de trouver quelque chose de semblable pour Java.

Je suis venu à travers la suite des bibliothèques Java jusqu'à présent:

  • Unimod FSM Cadre - l'air très bon, mais peut-être trop complexe.
  • Tungstène FSM Bibliothèque - N'est plus actif que d'une bibliothèque autonome. Pas de documentation que j'ai pu trouver.
  • Apache SCXML - Peut-être? J'ai lu qu'il a des problèmes, mais je n'ai pas encore utilisé moi-même.

Un certain nombre d'articles en ligne, de discuter des idées pour la mise en œuvre d'une coutume FSM en Java, et c'est peut-être le chemin à parcourir pour simple en mémoire FSM besoins. Au début, j'ai considéré en utilisant un moteur de BPM comme de l' Or, mais je pense que ces types de bibliothèques sont beaucoup trop lourds et plus orientés vers les processus de flux de travail.

Je suis à la recherche d'utiliser un FSM pour la gestion du niveau élevé de comportements d'un petit robot. Toutefois, je m'attends à un décent FSM bibliothèque de ce type serait également applicable pour l'interface utilisateur de gestion de l'état, l'écoulement de jeu, simple et de l'IA.

Toute bibliothèque recommandations, notes sur l'expérience avec les bibliothèques ci-dessus, ou des pointeurs vers récente et moderne FSM stratégies de mise en œuvre en Java serait appréciée.

46voto

kaliatech Points 8331

En réponse à ma question, il semble y avoir pas de facto FSM bibliothèques Java. La liste complète des options que j'ai rencontré en avril 2013:

À partir de l'original question:

Mises à jour:

Aussi:

8voto

FSM d’AKKA est également une option...

7voto

Basil Musa Points 730

Essayez cette merveilleuse bibliothèque de code.google.com:

Apatride4J

6voto

Jordão Points 29221

Dans le livre Agile Software Development , Uncle Bob discute des machines à états finis et du modèle d’ état (si je me souviens bien). Il a créé un compilateur FSM appelé SMC . Regarde.

6voto

Cette bibliothèque est très simple mais entièrement fonctionnel machine à l'état de mise en œuvre: http://sourceforge.net/projects/javafsm/ Il peut être utilisé pour les deux ensembles distincts de fins:

  1. Définir des flux de travail d'entreprise avec l'objectif de valider les transitions de l'état
  2. L'utiliser comme un théorique FSM pour la reconnaissance de la langue par la définition d'un alphabet à l'aide de la méthode accept() pour les chaînes sur cet alphabet.

Voici un exemple de comment construire une machine à état avec JavaFSM:

FSMBuilder<String> builder = FSM.newFSM();
FiniteStateMachine<String> machine =      
builder.setInitialState("A")
       .addFinalState("B")
       .addTransition("A", "A", '0')
       .addTransition("A", "B", '1')
       .addTransition("B", "A", '1')
       .addTransition("B", "B", '0')
       .build();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X