【发布时间】:2009-11-25 12:26:39
【问题描述】:
我正在尝试让我的 Windows 状态机工作流程与最终用户进行通信。我试图在 StateActivity 中实现的一般模式是:
StateInitializationActivity:向用户发送消息,请求回答问题(例如“您批准此文档吗?”),以及...的上下文
...EventDrivenActivity:处理用户发送的答案
StateFinalizationActivity:取消消息(例如文档被撤回,不再需要批准)
如果 StateActivity 是“叶状态”(即没有子状态),这一切都可以正常工作。但是,如果我想使用状态的递归组合,它就不起作用。对于非叶状态,StateInitialization 和 StateFinalization 不会运行(我通过使用 Reflector 检查 StateActivity 源代码确认了这种行为)。 EventDrivenActivity 仍在监听,但最终用户不知道发生了什么。
对于 StateInitialization,我认为解决此问题的一种方法是将其替换为 EventDrivenActivity 和零延迟计时器。我不知道如何处理 StateFinalization。
那么 - 有没有人知道如何让 State Finalization Activity 始终运行,即使对于非叶状态也是如此?
【问题讨论】:
-
你能详细说明“状态的递归组合”吗?什么是递归的?
-
这是我在有关该主题的书籍和文章中看到的一个术语。它只是意味着一个 StateActivity 可以包含其他 StateActivity。子状态未处理的事件将传递给父状态以供其处理。我想这取决于你所说的“递归”是什么意思。
标签: recursion workflow workflow-foundation finalizer state-machine