awesome-repositories.com
Blog
awesome-repositories.com

Descubre los mejores repositorios open-source con nuestra búsqueda potenciada por IA.

ExplorarBúsquedas curadasAlternativas open-sourceSoftware autohospedableBlogMapa del sitio
ProyectoAcerca deCómo clasificamosPrensaServidor MCP
Aviso legalPrivacidadTérminos
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
aasm avatar

aasm/aasm

0
View on GitHub↗
5,219 estrellas·648 forks·Ruby·MIT·3 vistas

Aasm

Esta librería proporciona un framework para definir máquinas de estados finitos dentro de clases Ruby para gestionar ciclos de vida de objetos complejos. Funciona como un motor de flujo de trabajo declarativo, permitiendo a los desarrolladores modelar estados, eventos y transiciones de objetos a través de un lenguaje específico de dominio legible. Al integrarse directamente con las capas de persistencia de base de datos, el framework asegura que los cambios de estado se sincronicen con los registros de almacenamiento mientras mantiene la integridad de los datos mediante la gestión de transacciones y el bloqueo de filas.

La librería se distingue por imponer reglas de negocio estrictas a través de guardas de transición condicionales y prevenir la modificación directa del estado, asegurando que todos los cambios en el ciclo de vida ocurran exclusivamente a través de eventos definidos. Soporta múltiples máquinas de estados independientes dentro de una sola clase al mapearlas a campos de base de datos distintos, proporcionando un control de ciclo de vida aislado. Además, genera automáticamente métodos de instancia dinámicos para consultar estados y disparar eventos, junto con ámbitos de consulta de base de datos que simplifican el filtrado de objetos según su estado actual.

Más allá de la gestión central del ciclo de vida, el framework incluye utilidades para la localización de nombres de estado para soportar interfaces multilingües y proporciona hooks para ejecutar lógica personalizada antes o después de las transiciones. También ofrece matchers de prueba especializados para verificar configuraciones de máquinas de estados y lógica de transición dentro de suites de pruebas automatizadas. El proyecto incluye herramientas para compilar código fuente y configuraciones en documentación estructurada para ayudar con la referencia del sistema.

Features

  • State Machine Logic - Provides a framework for defining finite state machines within Ruby classes to manage object lifecycles.
  • Business Logic Extensions - Restricts object transitions to predefined paths to ensure business logic compliance throughout the lifecycle.
  • Active Record Mappers - Integrates state machine transitions directly with database records using Active Record patterns to ensure data consistency.
  • Database Integration Layers - Synchronizes state changes with database records using transactions and locking to maintain data integrity.
  • State Modification Restrictions - Prevents direct modification of state storage columns to ensure all lifecycle changes occur exclusively through defined events.
  • Declarative Workflow Engines - Models complex object workflows using a declarative domain-specific language to enforce transition rules.
  • Transition Guards - Enforces business rules by evaluating conditional predicates that must be satisfied before a state transition is permitted.
  • Application State Machines - Allows configuration of states, events, and transitions within a class to control object behavior.
  • State Machine Integrations - Integrates state machine logic with database persistence layers to ensure integrity during transitions.
  • State Transition Mapping - Maps trigger events to source and destination states to define and enforce consistent object lifecycle flows.
  • Conditional Transition Guards - Enforces business rules by evaluating conditional predicates before permitting state transitions.
  • Transactional State Persistence - Ensures data consistency by synchronizing state changes with database records using transactional persistence.
  • Query Scopes - Automatically generates reusable database query constraints for filtering objects based on their current lifecycle state.
  • State Querying - Automatically generates database query scopes for filtering objects based on their current lifecycle status.
  • Domain Specific Languages - Provides a declarative domain-specific language for defining complex state machine rules and transitions.
  • State Transition Lifecycle Hooks - Executes custom callback logic automatically during specific phases of state transitions.
  • State Machine Logic Verifications - Offers specialized testing matchers to verify state machine configurations and transition logic within automated test suites.
  • Multi-Machine Configurations - Supports hosting multiple independent state machines within a single class by mapping them to distinct database fields.
  • State Lifecycle Callbacks - Triggers custom logic automatically before or after state transitions to perform lifecycle side effects.
  • State Transition Validation - Provides utilities to inspect and retrieve valid events available for the current state to determine permissible next steps.
  • Lifecycle State Verifications - Provides dynamic methods to verify current states and check if specific lifecycle events are permitted.
  • Model Enhancements - State machine implementation for Ruby classes.
  • Ruby Frameworks and Tools - State machine library for Ruby.
  • State Machines - State machine implementation for Ruby and Rails.

Historial de estrellas

Gráfico del historial de estrellas de aasm/aasmGráfico del historial de estrellas de aasm/aasm

Búsqueda con IA

Explora más repositorios increíbles

Describe lo que necesitas en lenguaje sencillo: la IA clasifica miles de proyectos open-source curados por relevancia.

Start searching with AI

Alternativas open-source a Aasm

Proyectos open-source similares, clasificados según cuántas características comparten con Aasm.
  • dotnet-state-machine/statelessAvatar de dotnet-state-machine

    dotnet-state-machine/stateless

    6,191Ver en GitHub↗

    Stateless is a .NET state machine library used to manage complex object behaviors and lightweight workflows through C# code. It functions as an asynchronous workflow engine that executes state transitions, guards, and entry-exit actions using asynchronous tasks. The library implements a hierarchical state machine, allowing child states to inherit transitions and properties from parent superstates. It includes a state persistence framework that decouples state tracking from machine logic by reading and writing the current state to external properties or databases. Additionally, it features a g

    C#
    Ver en GitHub↗6,191
  • pytransitions/transitionsAvatar de pytransitions

    pytransitions/transitions

    6,548Ver en GitHub↗

    Transitions is an object-oriented finite state machine library for Python. It provides a framework for managing valid states and the logic for moving between them, including implementations for asynchronous state machines and thread-safe state managers. The library supports hierarchical state machines that allow states to be nested to organize complex subtasks and logical contexts. It includes tools for generating visual diagrams of states and transitions to document machine logic. The project covers state management primitives such as lifecycle callbacks, conditional transition guarding, an

    Python
    Ver en GitHub↗6,548
  • jakesgordon/javascript-state-machineAvatar de jakesgordon

    jakesgordon/javascript-state-machine

    8,751Ver en GitHub↗

    This library is a finite state machine framework for JavaScript designed to manage application states and valid transitions. It provides a system for executing state changes with lifecycle hooks, conditional guards, and transition cancellation. The project is distinguished by its ability to inject state machine logic and transition capabilities directly into existing JavaScript class instances or objects. It also includes a visualization tool that exports state configurations into Graphviz DOT language for auditing system logic. The framework covers asynchronous transition execution and paus

    JavaScript
    Ver en GitHub↗8,751
  • pluginaweek/state_machineAvatar de pluginaweek

    pluginaweek/state_machine

    3,722Ver en GitHub↗

    This project is a Ruby library for defining and managing object lifecycles through states, events, and transition rules. It functions as a declarative workflow engine that enforces business logic by restricting attribute changes to predefined, valid paths within Ruby classes. The library distinguishes itself through deep integration with database persistence layers, allowing it to automatically synchronize state changes with data models, validation frameworks, and transaction management. It supports dynamic configuration, enabling the construction of lifecycle rules at runtime from external d

    Ruby
    Ver en GitHub↗3,722
Ver las 30 alternativas a Aasm→

Preguntas frecuentes

¿Qué hace aasm/aasm?

Esta librería proporciona un framework para definir máquinas de estados finitos dentro de clases Ruby para gestionar ciclos de vida de objetos complejos. Funciona como un motor de flujo de trabajo declarativo, permitiendo a los desarrolladores modelar estados, eventos y transiciones de objetos a través de un lenguaje específico de dominio legible. Al integrarse directamente con las capas de persistencia de base de datos, el framework asegura que los cambios de estado se…

¿Cuáles son las características principales de aasm/aasm?

Las características principales de aasm/aasm son: State Machine Logic, Business Logic Extensions, Active Record Mappers, Database Integration Layers, State Modification Restrictions, Declarative Workflow Engines, Transition Guards, Application State Machines.

¿Qué alternativas de código abierto existen para aasm/aasm?

Las alternativas de código abierto para aasm/aasm incluyen: dotnet-state-machine/stateless — Stateless is a .NET state machine library used to manage complex object behaviors and lightweight workflows through C#… pytransitions/transitions — Transitions is an object-oriented finite state machine library for Python. It provides a framework for managing valid… jakesgordon/javascript-state-machine — This library is a finite state machine framework for JavaScript designed to manage application states and valid… pluginaweek/state_machine — This project is a Ruby library for defining and managing object lifecycles through states, events, and transition… day8/re-frame — re-frame is a functional framework for building single-page applications in ClojureScript. It provides a centralized,… gaarason/database-all — This project is a Java-based object-relational mapping framework that utilizes the active record pattern to simplify…