State Machines en .NET
Charlin Agramonte
Rendy Del Rosario
Charlin Agramonte y Rendy Del Rosario
charlin@crossgeeks.com
@chard003
xamgirl.com
rendy@crossgeeks.com
@rdelrosario
xamboy.com
IMPORTANTE
¿QUE ES UNA MAQUINA DE ESTADO?
“Una máquina de estados es un paradigma conocido para el
desarrollo de programas, en el cual proporciona un
estilo de flujo de trabajo de una manera orientada a
eventos.”
INSIRA A TECNOLOGIA MICROSOFT
AQUI
XUber
https://github.com/CrossGeeks/xUber
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Initial SearchingOrigin SearchingDestination ChoosingRide ConfirmingPickUp
INSIRA A TECNOLOGIA MICROSOFT
AQUI
ShowingXUberPass ShowingHealthyMeasures AssigningDriver TripInProgress TripCompleted
INSIRA A TECNOLOGIA MICROSOFT
AQUI
INSIRA A TECNOLOGIA MICROSOFT
AQUI
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Empecemos con lo básico
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Triggers vs States
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Triggers vs States
¿Cómo trabajar con máquinas de
estados en.NET?
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Stateless
https://github.com/dotnet-state-machine/stateless
1. Instalar la librería
2. Crear la máquina de estado
Enum Estado Enum Trigger Estado Inicial
INSIRA A TECNOLOGIA MICROSOFT
AQUI
3. Configurar cada estado
Estado que se quiere configurar
Configure
INSIRA A TECNOLOGIA MICROSOFT
AQUI
SearchingOrigin
SearchingDestination
CalculatingRoute
ChoosingRide
ConfirmingPickUp
ShowingXUberPass
WaitingForDriver
Configure
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Acción que se ejecuta al entrar al estado
OnEntry
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Acción asíncrona que se ejecuta al entrar al estado
OnEntryFromAsync
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Acción que se ejecuta al salir del estado
OnExit
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Acción que se ejecuta al activar explicitamente el estado
OnActivate
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Define cuales Triggers están permitidos para el estado actual y
qué estados nuevos se pueden establecer.
Permit
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Define cuales Triggers están permitidos para el estado actual y
qué estados nuevos se pueden establecer + Permite agregar
condiciones externas.
PermitIf
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Permite regresar al mismo estado.
PermitReentry
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Permite realizar transiciones internas
InternalTransition
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Manejo de parámetros
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Ignorar transiciones
Ignora una transición específica.
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Manejo de cambios transiciones
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Exportación de Graph Dots
INSIRA A TECNOLOGIA MICROSOFT
AQUI
4. Activar la máquina de estado
INSIRA A TECNOLOGIA MICROSOFT
AQUI
5. Cambiar de estado
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Resultado
¿Cómo integrarlo en mi Xamarin
Forms app?
INSIRA A TECNOLOGIA MICROSOFT
AQUI
View
INSIRA A TECNOLOGIA MICROSOFT
AQUI
ViewModel
INSIRA A TECNOLOGIA MICROSOFT
AQUI
View/ViewModel
Ventajas de utilizar máquinas de
estados
INSIRA A TECNOLOGIA MICROSOFT
AQUI
La máquina de estado evita operaciones fuera de
orden.
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Elimina las condiciones en el código ya que
abstrae toda la lógica con respecto a los estados y
las transiciones.
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Las máquinas de estado pueden ser muy fáciles
de mantener, ya que la acción realizada durante
cada transición es independiente entre sí.
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Es fácil rastrear qué transición / datos / evento
causó la condición actual de una solicitud.
Otros ejemplos de maquinas de
estados
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Creando una Orden
INSIRA A TECNOLOGIA MICROSOFT
AQUI
ATM
INSIRA A TECNOLOGIA MICROSOFT
AQUI
Media Player
https://www.xamboy.com/2021/08/17/using-state-machine-in-xamarin-forms-part-1/
charlin@crossgeeks.com
@chard003
xamgirl.com
rendy@crossgeeks.com
@rdelrosario
xamboy.com

State machine in .NET