我有兴趣创建一个系统,用户可以在其中定义工作流程中的步骤。 有没有宝石可以处理这个?我想到了一个状态机宝石,但它们似乎都是预先定义的状态。我一直在想也许我可以将状态机用于各个步骤类型......电子邮件步骤可能有几个状态[新建,已分配,已完成],工作流程可能只是这些有状态步骤的列表。还有其他解决方案吗?
答案 0 :(得分:2)
试试Ruote。它是一个基于Ruby构建的完整工作流引擎。
文档:
答案 1 :(得分:2)
对于状态机,让我建议另一个:workflow
所有宝石使用“预定义”状态的原因是因为通常会有一些与状态相关的ruby代码:你会说“当从这种状态转换到这种状态时,执行此代码”或“之前”从这里过渡到那里,检查这个红宝石警卫“。如果状态不是“硬编码”,则无法实现这种功能。
如果您只需要一个文本字段,而不执行任何代码,您可以使用一个简单的“状态”模型,其中包含:
假设您为模型使用user_id和字符串,那么电子邮件的状态下拉列表将填充如下:
@states = State.find(:conditions => {
:user_id => current_user.id,
:model_name => 'State',
:parent_id => 4 #so you get the possible states that follow "New"
})
如果 需要在某些转换/保护时执行某些代码,则需要使用预定义状态。这也是可能的,但您必须稍微改变一下您的要求:不要让用户定义他们自己的状态,而是让他们从列表中“激活”其中一些状态。然后,“用户已激活此状态”将只是您的州系统中的另一个“守卫”。
编辑:添加了parent_id和acts_as_tree参考
答案 2 :(得分:0)
你在寻找像有限状态机这样的东西吗?