[英]Are there Ruby on Rails workflow gems with user-defined states?
我開發了 Ruby on Rails 應用程序,現在正在尋找無需任何編程即可配置狀態的工作流 gem。
我發現了一些寶石: rails_workflow 、 state_machine 、 workflow 。
但據我了解,這些 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”,並將機器名稱存儲在那里,只獲取那些行。
正如回答這個問題的原始人所說的“這只是一個例子,還可以進一步優化。我會把那部分留給你。希望這會給你一個好的開始。”
我希望這為您指明了正確的方向。
來源:
rails_workflow gem 與狀態無關:)
大多數狀態轉換引擎使用狀態來模擬本質上是錯誤的過程配置。 如果某些應用程序有流程(意味着具有不同操作、用戶操作、任務等的業務邏輯流程) - 那么它應該使用流程管理,並且大多數具有狀態到狀態轉換的 gem 使用狀態轉換只是為了粗略地模擬工作流。
狀態轉換邏輯有很多缺點 - rails_workflow 與狀態無關:) 它與過程配置、監視和控制有關。
您可以復制 redmine ,或使用此 gem 輕松構建自己的服務對象:
這是一個全新的寶石,我本周在 RubyLille 遇到了他的作者。 這是一種優雅地鏈接類回調方法並獲取由 rails 管理的錯誤的方法,您可以使用它構建一個健壯的狀態機。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.