需要澄清Ruby状态机的使用情况

时间:2015-01-04 19:18:36

标签: ruby-on-rails ruby acts-as-state-machine

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

我查看了几个状态机宝石,例如AASM,我看到如何使用gem预先定义状态机但是如果状态机需要改变,看起来我将不得不修改代码并重新部署。我一直在与我的同事争论我们如何能够/不能利用状态机gem来做我们想要的事情,但对我来说,他们似乎都定义了静态状态机,并且对状态机的更改需要更改代码。

他的建议是动态修改Ruby类以匹配用户工作流程更改。我的想法是状态,转换,事件,警卫等是用户通过我们的API修改的可持久对象。我们目前的思路似乎都不适用于current Ruby state machines而没有对这些宝石进行一些重大修改。

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

2 个答案:

答案 0 :(得分:0)

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

然后,您可以拥有几种具有不同结果的过渡和事件。如果你能够详细描述你需要什么样的动态工作流程,我可以告诉你更多 - 现在正在开展类似的项目,尽管我们还没有向工作流程引入事件和过渡

答案 1 :(得分:0)