预警 : 还有一些其他类似的问题,但没有完全回答问题(包括:Alternatives to Windows Workflow Foundation?,Can anyone recommend a .Net open source alternative to Windows Workflow?)
我们正在开发一个基于事件的状态机系统,目前我们正在研究 Windows 工作流程,我们的系统需要低延迟来响应来自多种来源(xmpp、http、sms、电话、电子邮件等)的事件) 进入系统,具有可扩展性和弹性,最重要的是可定制。出于各种原因(和尽职调查),我正在寻找支持类似于 Windows Workflow Foundation 的功能的开放式工作流引擎(如果可能的话,还有更多功能),主要是(但如果有引擎不支持这并不重要) t 支持某些功能):
我不受平台或语言的限制,我希望你们提供一些帮助和提示,以便我可以开始更仔细地研究引擎以及您对引擎的任何经验。
保罗。
最佳答案
我邀请您检查Stateless此外,正如我的 SO 问题 can-anyone-recommend-a-net-open-source-alternative-to-windows-workflow 的答案中所建议的那样.实现长时间运行状态机的目标非常简单,因为您可以将状态的当前状态存储在数据库中,并在需要时重新同步状态机。考虑来自无状态站点的以下代码:
Stateless has been designed with encapsulation within an ORM-ed domain model in mind. Some ORMs place requirements upon where mapped data may be stored. To this end, the StateMachine constructor can accept function arguments that will be used to read and write the state values:
var stateMachine = new StateMachine<State, Trigger>(
() => myState.Value,
s => myState.Value = s);
只需很少的努力,您就可以保留您的状态,然后稍后轻松地检索该状态。
在动态更新工作流方面,如果您配置状态机,例如
var stateMachine = new StateMachine<string, int>();
并在 XML 中维护一个单独的状态和触发器文件,您可以通过遍历字符串 int 值对在运行时执行配置。
关于open-source - 打开 Windows 工作流的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1075481/