【发布时间】:2013-12-24 13:34:58
【问题描述】:
我正在考虑使用 Windows 工作流状态机 (.NET 4.5),但需要一些指导。
我有一个带有状态机的 WCF 服务用于通话。假设状态是:
- 已初始化
- 响铃
- 已连接
- 忙
- 没有答案
- 断开连接
可能的过渡是:
- 致电
- 连接
- 忙
- 没有答案
- 断开连接
该服务公开了一个使用呼叫 ID 和事件(“呼叫”、“连接”、“断开连接”等)调用的方法。我需要能够加载与该调用 id 对应的特定状态机实例并传入事件,以便它可以进入下一个状态(或者如果当前状态没有相应的转换,则不更改状态)。
例如,如果状态机处于 Ringing 状态并且我们得到“connect”,我想将状态移动到 Connected,但是如果我们得到“busy”,我们将移动到 Busy 状态。但是,如果我们收到“断开连接”事件,状态机应该保持在 Ringing 状态。
我已经使用 Stateless 成功完成了这项工作,但我想在 Windows Workflow 中尝试一下。
MSDN 示例并未真正显示由外部事件驱动的状态机。
1) 无论状态机处于什么状态,什么是向状态机发送转换的好方法? 2) 在给定某种 ID 的情况下,向/从数据库(不一定是 SQL Server)加载/保存特定状态机实例(即状态和变量)的好方法是什么?
【问题讨论】:
标签: c# workflow-foundation-4 state-machine-workflow