Ruby on rails 需要澄清Ruby状态机的用法吗

Ruby on rails 需要澄清Ruby状态机的用法吗,ruby-on-rails,ruby,acts-as-state-machine,Ruby On Rails,Ruby,Acts As State Machine,我的问题是,我有一个应用程序,它让用户能够定义工作流(状态、转换、事件等),并让我的应用程序知道它如何根据用户工作流做出反应(转换) 我已经研究了几个状态机gem,例如,我看到了如何使用gem来预定义状态机,但是如果状态机需要更改,看起来我必须修改代码并重新部署。我一直在和我的同事争论我们如何能/不能利用状态机gem来做我们想做的事情,但对我来说,它们似乎都定义了一个静态状态机,而对该状态机的更改需要代码更改 他的建议是动态修改Ruby类以匹配用户的工作流更改。我的想法是,状态、转换、事件、防护

我的问题是,我有一个应用程序,它让用户能够定义工作流(状态、转换、事件等),并让我的应用程序知道它如何根据用户工作流做出反应(转换)

我已经研究了几个状态机gem,例如,我看到了如何使用gem来预定义状态机,但是如果状态机需要更改,看起来我必须修改代码并重新部署。我一直在和我的同事争论我们如何能/不能利用状态机gem来做我们想做的事情,但对我来说,它们似乎都定义了一个静态状态机,而对该状态机的更改需要代码更改

他的建议是动态修改Ruby类以匹配用户的工作流更改。我的想法是,状态、转换、事件、防护等都是用户通过API修改的持久化对象。我们目前的思路似乎都无法在这些宝石之上进行重大修改


作为示例解决方案,我一直关注的是JIRA,以及如何为项目动态定义状态、转换和其他工作流属性。

在预定义业务逻辑时应使用状态机,否则应以不同的方式对其建模。如果您希望用户创建自己的工作流(例如,状态、转换、事件),那么为状态、转换和事件创建单独的模型并在代码中定义它们的关系是有意义的


然后你可以有,比如说,几种类型的转换和事件,它们有不同的结果。如果你能详细描述一下你需要什么样的动态工作流程,我可以告诉你更多-现在正在处理类似的项目,尽管我们还没有向工作流程引入事件和转换

状态机gem允许:


我简要介绍了AASM gem,它看起来像是将状态机规则存储在类中。难道不能在状态机规则每次更改时创建一个新类吗?即动态地。(对于额外的评论,很抱歉,由于某些原因,本网站不允许我编辑评论)这似乎是一个论点。我们创建一个定义状态机的配置文件或对象,并将其转换为可由AASM(或任何状态机)解释的动态Ruby类。参数的另一半是对状态机类进行建模,以便它们可以持久化,并使用这些对象驱动状态机。我们真的不知道最好的方法,但是所有的状态机gem似乎都希望静态定义状态机,并且只保留对象的当前状态。这个gem肯定接近我想要的,但是它的开发在很久以前就枯竭了。另一个引起我注意的是这颗宝石。我还没有实际使用过它,但它似乎最适合我的用例。