我想知道你--所以读者--使用工作流引擎解决的具体问题,以及如果你不使用自己的工具,你使用了哪些库/框架。我还想知道什么时候工作流引擎不是最好的选择,以及是否/如何选择更简单的东西,比如使用状态机的TaskList/WorkList/Task-Management类型的应用程序。
问题:
我在找第一手的体验。
我查过的一些资源:
发布于 2010-03-03 02:17:43
我也有偏见,因为我是StonePath的主要作者。
我为美国国务院、日内瓦人道主义排雷中心、“财富”500强的几个客户以及最近的华盛顿特区公立学校系统开发了工作流应用程序。每当我看到一个“工作流引擎”试图成为业务流程的一个主引用时,我就会看到一个组织在努力地围绕这个工具工作。这可能是因为这些解决方案一直都是由供应商/产品驱动的,最终会有一个由“顾问”组成的战术团队不断地为应用程序提供信息。但正因为如此,当我听到基于过程的工具带来的好处时,我往往会做出负面反应,这些工具承诺“将工作流定义集中在一个地方,并使其可重复使用”。
我非常喜欢Ruote -我已经跟踪这个项目有一段时间了,如果我需要这样的解决方案,它将是我愿意尝试的下一个工具。StonePath和ruote有着截然不同的目的
ruote上的备注式开发已经停止)。坦率地说,我认为与外部的区别可能是微妙的--很多情况下,相同类型的业务流程可以用任何一种方式来表示--基于状态和任务的模型倾向于映射到我的心智模型。
让我描述一下基于状态的工作流的要点。
州
想象一下,一个工作流程围绕着诸如抵押贷款或护照更新之类的事情进行处理。当文件在“办公室周围”移动时,它会从一个州传到另一个州。
如果你对这份文件负责,而你的老板要求你进行状态更新,你可以这样说
这些是基于状态的工作流中的状态。我们通过转换从一种状态转移到另一种状态--比如“批准”、“应用”、“回扣”、“拒绝”等等。这些都是动作动词。像这样的东西在软件中一直被建模为状态机。
任务
基于状态/任务的工作流的下一部分是任务的创建。
任务是一种工作单位,通常带有到期日和处理指令,将工作项目(例如贷款申请或护照更新)与“方框”中的用户连接起来。
这种行为是可选的,是工作流定义的一部分。
兔子洞可以走得更远,我写了一篇文章,为PragPub的第4期,实用主义程序员的杂志。请查看上面的回购链接,以获得该文章的更新PDF。
在过去几个月使用StonePath时,我发现基于状态的模型映射非常好地映射到restful web体系结构,特别是任务和状态转换很好地映射为嵌套资源。希望将来能看到我在这个问题上的写作。
发布于 2010-03-03 00:12:40
我有偏见,我是鲁特的作者之一。
变体1)附在资源上的状态机(文件、订单、发票、书籍、家具)。
变体2)附加到名为任务的虚拟资源的状态机
变式3)工作流引擎解释工作流定义
现在,您的问题被标记为"BPM“,我们可以扩展为”业务流程管理“。在每个变体中,这种管理是如何发生的?
在变体1中,业务流程(或工作流)分散在应用程序中。附加到资源的状态机强制执行工作流的某些方面,但只执行那些与资源相关的方面。在相同的业务流程中,可能有其他资源使用自己的状态机。
在变体2中,工作流可以集中在任务资源上,并由围绕该资源的状态机表示。
在变体3中,工作流是通过解释称为工作流定义(或业务流程定义)的资源来实现的。
当业务流程发生变化时会发生什么?有一个业务流程是可管理资源的工作流引擎值得吗?
大多数状态机库都有一个集合状态+转换。工作流引擎大多是工作流定义解释器,它们允许多个不同的工作流一起运行。
更改工作流的成本是多少?
这些变体不是相互排斥的。我已经看到了许多例子,其中一个工作流引擎改变了多个资源的状态,其中一些由状态机保护。
对于人工任务,我也经常使用变体3+2:工作流引擎在运行流程实例时,会将任务(工作项)交给人工参与者(创建资源任务并将其放置在状态“就绪”中)。
您可以单独使用变体2(任务管理器变体)。
我们还可以提到变体0),其中没有状态机,没有工作流引擎,而且业务流程(Es)在应用程序中是分散的和/或硬编码的。
你可以问很多问题,但是如果你不花时间去阅读答案,不花时间去尝试和实验,你就不会走得太远,也不会在什么时候使用这个或那个工具时获得任何天赋。
发布于 2010-03-03 00:34:22
在我之前的一个项目中,我在医疗行业的一组政府表单中添加了一些工作流类型规则。
表单需要由最终用户填写,根据某些答案,其他表单计划在稍后的日期填写。还有一些外部事件会取消预定的表单或安排新的表单。
样本流:
入院病人->时间表初步评估FOrm ->按季评核表格->病人去世->取消审核->出院评核表格
许多其他的规则都是基于病人的年龄、住院的地方等。
这是一个ASP.NET应用程序,规则基本上是数据库中的一个表。我添加了脚本,因此脚本将在表单完成时运行,以确定下一步要做什么。这是一个可怕的设计,并将是完美的适当的工作流引擎。
https://stackoverflow.com/questions/2353564
复制相似问题