.NET 工作流引擎建议

20

我发现了一个基于Simple State Machine的层次状态机框架,名为stateless,使用C# 3.0进行配置,适用于Boo

它易于配置和使用,我很可能很快就会使用它。

但是我只是在想:

  • 是否有人在实际项目中使用过stateless(如果有,你的意见是什么?)
  • .NET中还有其他好的工作流引擎吗?(除了WF)

3
其他工作流引擎 - 你的意思是除了工作流基础 (Workflow Foundation) 之外,对吗? - Vitaliy Liptchinsky
3
实用且有用的问题?让我们来解决它吧! - Den
5个回答

12

我一直在为一个将来可能投入生产的应用程序使用Stateless和WF。 :) 我已经详细介绍了我迄今为止的经验 在这里发布的帖子

总体而言,我更喜欢Stateless,因为它比WF更简单。当然,能够以图形方式设计工作流很不错,但是当您需要实现比顺序工作流更困难的事情(例如状态机工作流)时,您将需要使用ExternalDataExchange才能进行正确的状态转换。这可能并不难,但是考虑到这一点以及您需要实现持久性服务以暂停工作流程,这似乎对我不太吸引。反正我没有必要将工作流保存到磁盘以供以后执行...所以我将在Stateless中使用常规事件来处理此问题。在Stateless中容易处理错误(我已经成功地使用它),但是我采取的实现方式值得怀疑,这是另一个讨论的主题(我现在正在SO上寻找)。我可能会很快发布有关此内容的问题。

祝你在使用Stateless时好运。我希望听到你的进展。


在CodePlex上有一个项目,可以以图形方式显示您的无状态状态机。目前它不支持stateless框架中的所有功能。http://statelessdesigner.codeplex.com - Morten Frederiksen

5
对于工作流基础(Workflow Foundation),只有在使用WF4的绿色项目中才能使用。查看此链接:http://realworldsa.dotnetdevelopersjournal.com/goodbyewindowsworkflowfoundationseeyouin2011.htm
WF 1.0和1.5与WF4不兼容,因此这不是前进的解决方案。
个人而言,我使用http://simplestatemachine.codeplex.com作为WF的替代品。我已在一个完整的生产系统(基于asp.net)中使用它来处理相当复杂的商业许可证发放系统(处理350多种政府商业许可证)。
我还没有尝试过stateless,但它看起来很有前途。

5

晚来的客人。我们现在已经在生产中使用Stateless一年半了,没有问题。它是处理工作流程的非常优雅的解决方案,并且您可以快速将状态与数据模型集成。我们使用SQL中的int来表示状态,因此您可以在ASP.Net进程中运行状态机。对于长时间运行的工作流程也是如此。


嗨,大卫,我想知道你是否仍在使用Stateless来处理工作流?有关于在SQL中持久化状态的任何技巧吗? - Mark
@Mark H - 绝对没错。我发现它非常有用,而且我已经用它构建了几个解决方案。 - David Robbins

5

如果你的需求很基础,我写的一份非常简单的状态机可能会有所帮助。

请注意,在本文撰写时,它不支持分层状态。

你可以在NuGet上找到它:

nuget install nstate

或者在GitHub上查看:

https://github.com/benaston/NState

希望有人会觉得它有用。


我正在阅读你在 Github 上的解决方案。看起来很有趣。我已经使用无状态(stateless)三年了,但我也喜欢你的方法。 - David Robbins

2

5
我希望您能提供一个更加轻便的解决方案。 - Leyu
1
我们都需要轻量级的解决方案 :) - ahmad molaie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接