簡體   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