繁体   English   中英

是否有具有用户定义状态的 Ruby on Rails 工作流 gem?

[英]Are there Ruby on Rails workflow gems with user-defined states?

我开发了 Ruby on Rails 应用程序,现在正在寻找无需任何编程即可配置状态的工作流 gem。

我发现了一些宝石: rails_workflowstate_machineworkflow

但据我了解,这些 gem 假定状态将是硬编码的,例如工作流gem 状态:

class Article
  include Workflow
  workflow do
    state :new do
      event :submit, :transitions_to => :awaiting_review
    end
    state :awaiting_review do
      event :review, :transitions_to => :being_reviewed
    end
    state :being_reviewed do
      event :accept, :transitions_to => :accepted
      event :reject, :transitions_to => :rejected
    end
    state :accepted
    state :rejected
  end
end

我需要我的应用程序用户状态可以自己配置状态和转换条件,而无需开发人员。

Redmine已经有这个功能,但它是现成的系统,而不是我可以连接到我的应用程序的 gem

有没有具有这种特征的宝石?

我根据之前的评论设计了以下解决方案。 使用 gem state_machine ,然后您可以使用 ActiveRecord 定义状态机的转换,如下所示:

定义一个包含“to”、“from”和“on”列的转换模型。 它们都将string作为其数据类型。

状态定义如下:

Transition.create(:from => "parked", :to => "idling", :on => "ignite")

在此之后,您需要按如下方式修改您的转换方法:

def transitions
  transitions_data = []
  Transition.all.each do |transition|
    transitions_data << { transition.from.to_sym => transition.to.to_sym, :on => transition.on.to_sym }  
  end
  transitions_data
end

显然,如果你有不止一台机器,你可以有一些其他的列,比如“machine_name”,并将机器名称存储在那里,只获取那些行。

正如回答这个问题的原始人所说的“这只是一个例子,还可以进一步优化。我会把那部分留给你。希望这会给你一个好的开始。”

我希望这为您指明了正确的方向。

来源:

SOstate_machine Gem

rails_workflow gem 与状态无关:)

大多数状态转换引擎使用状态来模拟本质上是错误的过程配置。 如果某些应用程序有流程(意味着具有不同操作、用户操作、任务等的业务逻辑流程) - 那么它应该使用流程管理,并且大多数具有状态到状态转换的 gem 使用状态转换只是为了粗略地模拟工作流。

状态转换逻辑有很多缺点 - rails_workflow 与状态无关:) 它与过程配置、监视和控制有关。

您可以复制 redmine ,或使用此 gem 轻松构建自己的服务对象:

瀑布

这是一个全新的宝石,我本周在 RubyLille 遇到了他的作者。 这是一种优雅地链接类回调方法并获取由 rails 管理的错误的方法,您可以使用它构建一个健壮的状态机。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM