作为内部呼叫中心应用程序(ASP.NET)的一部分,我一直在使用WWF,虽然学习它是理解基于状态机的工作流系统应如何工作的一个很好的实践,但我绝对不喜欢WWF本身.在我看来它是:
过于复杂,尤其适用于Web应用程序(所有线程运行时的东西)
不成熟(曾与那位可怕的设计师合作过吗?)
其当前功能集中的贫血
有没有人建议更好的基于.NET的工作流框架?具体来说,我正在寻找以下功能:
基于状态机(将状态映射到可用操作)
关注用户权限(控制谁有权访问哪些操作)
能够将工作流作为定时后台任务运行(例如,发送已经处于特定状态x天的项目的提醒)
这就是我真正需要的.我不需要能够"拖放"任何活动或视觉设计流程.一旦触发了特定的动作,我很乐意编写实际的代码.
你可以试试Simple State Machine.您必须自己实现访问控制和后台计时器,但这不应该是一个大问题.SSM也是出于对WF的挫折而建立起来的.Codeplex上还有一些其他状态机实现.如果其中一个不适合他开箱即用,他们是开源的,应该让你足够接近.
我全心全意地同意你对WF中的状态机的看法 - 它们不可测试,太复杂,线程模型特别难以理解,我不确定视觉设计师在设计状态机时可能会更糟糕图形.我认为这可能是因为状态机概念被设置为WF运行时,这是为顺序状态机设计的,在我看来,WF做得更好.问题在于状态机实际上与顺序工作流程并不是同一个动物,应该给它们自己的第一类实现,因为WF的翘曲让它似乎支持它们或多或少不支持,如果实际上不可用.