预警:还有一些类似于此的问题,但没有完全回答问题(包括:Windows Workflow Foundation的替代方案?,有人能推荐Workflow的.Net开源替代方案吗?)。
我们正在开发一个基于事件的状态机系统,目前我们正在研究windows工作流,我们的系统在响应来自多个源(xmpp、http、sms、电话、电子邮件等)的事件时需要低延迟,具有可扩展性和弹性,最重要的是可定制。出于各种原因(以及尽职调查),我正在寻找支持类似于Windows workflow Foundation的功能的开放式工作流引擎(如果可能的话)(但如果存在不支持某些功能的引擎,则无关紧要):
我不局限于平台或语言,我希望得到你们的一些帮助和建议,这样我就可以开始更仔细地调查引擎,以及你们对引擎的体验。
保罗。
发布于 2009-07-05 18:06:56
"Java侧“:
Apache (编排主任引擎)执行按照WS-BPEL标准编写的业务流程。它与web服务、发送和接收消息、处理数据操作和错误恢复进行对话,正如您的流程定义所描述的那样。它既支持长流程执行,也支持短流程执行,以编排作为应用程序一部分的所有服务。
http://ode.apache.org/
OSWorkflow可以被认为是一个“低级别”工作流实现。在其他工作流系统中,可能由图形图标表示的“循环”和“条件”等情况必须在OSWorkflow中“编码”。
http://www.opensymphony.com/osworkflow/
Shark是一个可扩展的工作流引擎框架,包括一个完全基于WfMC规范的标准实现,使用XPDL (没有任何专有扩展!)作为其本地工作流过程定义格式和用于服务器端执行系统活动的WfMC "ToolAgents“API。
http://www.enhydra.org/workflow/shark/index.html
Python:http://bika.sourceforge.net/ http://www.vivtek.com/wftk/ i这将帮助您:-)
发布于 2009-07-10 17:26:04
我邀请您进一步研究无国籍,正如对我的SO问题can-anyone-recommend-a-net-open-source-alternative-to-windows-workflow的回答所建议的那样。要实现长时间运行状态机的目标非常简单,因为您可以将状态的当前状态存储在数据库中,并在需要时重新同步状态机。请考虑来自无状态站点的以下代码:
无状态状态的设计考虑了ORM-ed域模型中的封装。一些ORM将需求放在可以存储映射数据的位置上。为此,StateMachine构造函数可以接受用于读写状态值的函数参数:
var stateMachine = new StateMachine<State, Trigger>(
() => myState.Value,
s => myState.Value = s);只需非常少的努力,您就可以持久化您的状态,然后轻松地在稍后检索该状态。
在动态更新工作流方面,如果您配置了状态机,如
var stateMachine = new StateMachine<string, int>();在XML中维护一个独立的状态和触发器文件,您可以在运行时通过遍历字符串int值对来执行配置。
发布于 2009-07-02 16:53:34
您可以考虑将流实现为实际的状态机。像状态机编译器和拉格尔这样的工具可以在这方面有所帮助。在许多情况下,状态机正是您实现异常复杂的行为所需要的,这些行为是可测试的,而且是可靠的。我并不自称是Windows工作流专家,但据我所见,我怀疑它比手工或使用工具编写自己的状态机的优越性。
https://stackoverflow.com/questions/1075481
复制相似问题