预警:还有一些类似的问题,但没有完全回答这些问题(包括:Alternatives to Windows Workflow Foundation?,Can anyone recommend a .Net open source alternative to Windows Workflow?)
我们正在开发一个基于事件的状态机系统,目前我们正在调查Windows工作流程,我们的系统需要在响应来自众多来源的事件时的低延迟(xmpp,http,sms,电话,电子邮件等进入系统,可扩展和弹性,最重要的是可定制。由于各种原因(以及尽职调查),我正在寻找支持类似于Windows Workflow Foundation(以及更多 - 如果可能的话)的功能的开放式工作流引擎,主要是(但如果有引擎没有那么多并不重要)支持一些功能):
我并不局限于平台或语言,我希望得到你们的一些帮助和提示,这样我就可以开始更密切地研究引擎以及你对引擎的任何经验。
保罗。
答案 0 :(得分:20)
我邀请您进一步检查Stateless,正如我的问题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值对在运行时执行配置。
答案 1 :(得分:9)
Apache ODE(Orchestration Director Engine)执行遵循WS-BPEL标准编写的业务流程。它与Web服务,发送和接收消息,处理数据操作和错误恢复进行对话,如流程定义所述。它支持长期和短期生活流程执行,以协调您应用程序中的所有服务。
OSWorkflow可被视为“低级”工作流实施。必须在OSWorkflow中“编码”可能由其他工作流系统中的图形图标表示的“循环”和“条件”等情况。
鲨鱼是包括作为工作流处理定义格式完全基于使用XPDL WfMC规范(没有任何专有扩展!)的标准实现和工作流管理联盟“ToolAgents” API用于系统应用工作的的服务器端执行的可延伸的工作流引擎框架p>
Python方面: http://bika.sourceforge.net/ http://www.vivtek.com/wftk/ 我会帮助你: - )
答案 2 :(得分:7)
您可以考虑将您的流实现为实际的状态机。 State Machine Compiler和Ragel等工具可以为您提供帮助。在许多情况下,状态机正是您实现可测试且坚如磐石的疯狂复杂行为所需要的。我并不认为自己是Windows工作流程专家,但从我所看到的情况来看,我质疑其优于编码自己的状态机,无论是手工还是使用工具。
答案 3 :(得分:5)
您可能需要查看Simple State Machine。
如果您希望对事物拥有更多控制权并想要自己动手,那么查看像NServiceBus和MassTransit这样的项目使用的Saga支持可能会有所帮助。 Sagas看起来与WF工作流非常相似,但是POCO对象,我相信这两个项目都只使用NHibernate来实现Saga持久性。
答案 4 :(得分:3)
尝试使用Drools for JAVA,我个人从来没有尝试过,但我知道有几个商业应用是基于drools。
您还可以升级到.NET 4.0,新框架中的工作流程有了重大改进。我知道如果我正在编写一个新的工作流应用程序,我会跳到4.0。
祝你好运
答案 5 :(得分:3)
我建议你花几个小时看一下这本书Open-Source ESBs in Action。 “协调”和“编排”是处理“企业服务总线”时的关键流行语。用于.NET的系统非常昂贵(BizTalk在一辆体面的汽车的价格范围内,Tibco的价格在一个像样的房子的价格范围内)。
其他链接:
Comparison of OpenESB and ServiceMix(两者都是上面“行动”一书的主题。
答案 6 :(得分:2)
答案 7 :(得分:0)
考虑Workflow Engine,一个轻量级的一体化组件,使您能够将任何复杂的自定义可执行工作流添加到任何.NET或Java软件,无论是您自己的创建还是第三方解决方案,对现有代码的最小更改。它支持自定义操作和命令,具有计时器并支持并行工作流。还有一个免费版本。
答案 8 :(得分:0)
您可以查看Imixs-Workflow,这是基于bpmn 2.0的状态机的事件驱动方法。它特别关注以人为中心的长期任务。