Un nouveau projet pour Spring : Statemachine

16/04/2015
logo spring

L’équipe de développement du stack de développement SPRING alternatif à JAVA EE annonce l’arrivée d’un nouveau venu dans le portefeuille des bibliothèques du projet : Statemachine 1.0.0.M1

L’équipe de Spring n’annonce pas cette fois une technologie à la pointe de l'innovante. Les machines à états sont des concepts bien connus qui vont et viennent dans le contexte du développement informatique et restent des fondamentaux dont la robustesse n’est plus à prouver.

Chaque programmeur a certainement utilisé le concept d’état dans ses applications. La simple utilisation d’un drapeau de type booléen représente déjà en quelque sorte l’utilisation d’un état quand une décision est prise dans l’application en fonction de ce drapeau. Souvent les programmeurs multiplient ces drapeaux, des énumérations ou un tas de structures conditionnelles qui ne posent aucun problème dans des cas d’utilisation simple.

Malheureusement, l’application des machines à état dans les logiques applicatives rend la complexité des tâches croissante en fonction du temps passé. Bien souvent la modification d’une partie du code crée des effets de bords sur d’autres parties du code.

Les fonctionnalités

Spring Statemachine est un framework pour les développeurs d’application utilisant le concept de  machines à état dans les applications Spring et fournit les fonctionnalités suivantes :

  • Machine à états de premier niveau faciles à utiliser pour des cas d’utilisations simples
  • Une structure de machine à états hiérarchique pour faciliter la configuration des états complexes
  • Des régions de machines à état pour faciliter la configuration des états les plus complexes
  • L’utilisation des événements déclencheurs, des transitions, des actions, des conditions garde
  • Des écouteurs d’événements dans les machines à état
  • L’intégration de Spring IOC pour associer des « Beans » avec les machine à états.

 

Le maintien propre des états est très important dans les applications quand des événements sont gérés de façon asynchrone. Cet aspect est particulièrement important dans les environnements de type cloud quand la concurrence peut créer des problèmes. Spring Statemachine est une autre possibilité de gérer les machines à état comme le projet Spring Cloud Cluster. Ce dernier a introduit des fonctionnalités comme les verrouillages distribués (distributed locks) et l’élection d’un meneur (leader election).

La page du projet contient un exemple simple pour illustrer comment Spring Statemachine fonctionne. Quelques exemples sont aussi détaillés dans la documentation de référence. Ces exemples sont empaquetés avec Spring Boot et utilisent Spring Shell pour interagir avec une machine à état grâce à une console sans besoin de compilation.

Source : http://spring.io

Solutions

comments powered by Disqus
top