Windows Workflow Foundation的替代品?
作为内部呼叫中心应用程序(ASP.NET)的一部分,我已经使用WWF一段时间了,在学习它是了解基于状态机的工作流系统应该如何工作的一个很好的实践时,我绝对不喜欢世界自然基金会本身。我认为是:
- 过于复杂,尤其是在Web应用程序中使用(所有线程化的运行时内容)
- 不成熟(曾经和那个可怕的设计师一起工作过吗?)
- 当前功能集中的贫血症
有没有人建议建立一个更好的基于.NET的工作流框架?具体来说,我正在寻找以下功能:
- 基于状态机(将状态映射到可用操作)
- 关注用户权限(控制谁有权访问哪些操作)
- 能够将工作流作为定时的后台任务运行(例如,发出已经处于某状态x天的项目的提醒)
这真的是我所需要的。我不需要"拖放"任何活动或者直观地设计流程。一旦触发特定动作,我就很愿意编写实际代码。
解决方案
回答
我们是否可以考虑使用BizTalk Server?
回答
我们可以尝试简单状态机。我们必须自己实现访问控制和后台计时器,但这并不重要。 SSM的建立也是出于对WF的无奈之举。 Codeplex上还有其他一些状态机实现。如果其中之一不合适,他开箱即用,这是开源的,应该可以使我们足够接近。
我全心全意地同意WF中的状态机不可测试,过于复杂,线程模型奇特且难以遵循的问题,而且我不确定视觉设计师对于图形化设计状态机的构想是否会较差。我认为这可能是因为状态机概念适用于WF运行时,该运行时是为顺序状态机设计的,我认为WF可以做得更好。问题在于状态机实际上与顺序工作流不是同一动物,应该赋予它们自己的一流的实现,因为事实证明,WF的扭曲似乎使其或者多或者少地受到支持。不支持的,如果不是真的不可用的话。
回答
试试Drools.NET
回答
我将远离Drools.Net,因为它的上一次SVN提交是在2007年9月。看起来不错,但是当我们知道它不再受到任何关注时,将如此大的库作为项目的一部分似乎有点冒险。
回答
我非常喜欢与Oracle BPEL Process Manager一起工作。它是JDeveloper的一部分。
http://www.oracle.com/technology/bpel/index.html
http://gemsres.com/story/dec06/313602/jellema-fig1.jpg