我发现了一个基于Simple State Machine的层次状态机框架,名为stateless,使用C# 3.0进行配置,适用于Boo。
它易于配置和使用,我很可能很快就会使用它。
但是我只是在想:
- 是否有人在实际项目中使用过stateless(如果有,你的意见是什么?)
- .NET中还有其他好的工作流引擎吗?(除了WF)
我发现了一个基于Simple State Machine的层次状态机框架,名为stateless,使用C# 3.0进行配置,适用于Boo。
它易于配置和使用,我很可能很快就会使用它。
但是我只是在想:
我一直在为一个将来可能投入生产的应用程序使用Stateless和WF。 :) 我已经详细介绍了我迄今为止的经验 在这里发布的帖子。
总体而言,我更喜欢Stateless,因为它比WF更简单。当然,能够以图形方式设计工作流很不错,但是当您需要实现比顺序工作流更困难的事情(例如状态机工作流)时,您将需要使用ExternalDataExchange才能进行正确的状态转换。这可能并不难,但是考虑到这一点以及您需要实现持久性服务以暂停工作流程,这似乎对我不太吸引。反正我没有必要将工作流保存到磁盘以供以后执行...所以我将在Stateless中使用常规事件来处理此问题。在Stateless中容易处理错误(我已经成功地使用它),但是我采取的实现方式值得怀疑,这是另一个讨论的主题(我现在正在SO上寻找)。我可能会很快发布有关此内容的问题。
祝你在使用Stateless时好运。我希望听到你的进展。
晚来的客人。我们现在已经在生产中使用Stateless一年半了,没有问题。它是处理工作流程的非常优雅的解决方案,并且您可以快速将状态与数据模型集成。我们使用SQL中的int来表示状态,因此您可以在ASP.Net进程中运行状态机。对于长时间运行的工作流程也是如此。
如果你的需求很基础,我写的一份非常简单的状态机可能会有所帮助。
请注意,在本文撰写时,它不支持分层状态。
你可以在NuGet上找到它:
nuget install nstate
或者在GitHub上查看:
https://github.com/benaston/NState
希望有人会觉得它有用。
如果你还没有看过Windows Workflow Foundation,那么了解一些相关知识可能是值得的。