Finitomata

El boilerplate de màquines d'estats basat en callbacks

Active ElixirOTPGenServerFSM 130 89031
Finitomata

ofereix un boilerplate per implementar màquines d'estats finits, permetent centrar-se en la lògica de negoci en lloc de la gestió de processos i la consistència de les transicions. Llegeix la descripció de la màquina des d'una cadena en sintaxi PlantUML ( :state_diagram ) o Mermaid ( :flowchart ), valida que sigui consistent (un únic estat inicial, un o més estats finals, sense estats orfes) i genera un GenServer que es pot fer servir de manera independent o dins d'un arbre de supervisió.

La màquina generada només necessita un callback obligatori, on_transition/4 ; on_failure/3 , on_enter/2 , on_exit/2 , on_terminate/1 i on_timer/2 són opcionals amb implementacions per defecte raonables. Diverses opcions n'ajusten el comportament: timer: per a callbacks recurrents, auto_terminate: per transicionar automàticament a l'estat final, ensure_entry: per reintentar una transició fins que tingui èxit, hibernate: , cache_state: i persistència connectable (adaptadors ETS i DETS inclosos).

Infinitomata , inclòs al mateix paquet, és una implementació distribuïda autònoma basada en :pg per executar les mateixes màquines en un clúster. Finitomata.ExUnit ofereix un arnès de proves sense dependències externes amb assert_transition/3 , assercions de fallada i generació d'esdeveniments basada en propietats.