1

我有两个工作流服务(状态机),它们应该合作并交换信息以完成所需的行为。

我遇到的问题(但我也只有一台状态机)是有时我尝试发送当前状态不允许的操作。

有两个问题:1)我必须等待操作超时才能知道该操作是不允许的 2)由于其他问题,我正在“屏蔽”真正的超时

到目前为止,我找到了两种可能的解决方案:1)我可以更改签名以返回 true(允许)和 false(不允许)并将所有操作添加到所有状态,(不允许的操作会触发自我转换) 2)我总是将所有转换添加到所有状态(不允许将触发自转换)但对于不允许的转换,我将发送异常

我想知道哪个是最好的选择(当然,我也很欣赏其他可能的解决方案)。我还想知道如何回复带有异常的请求(也许将其扔在 try/catch 中?)。

谢谢

4

1 回答 1

1

这里的另一个选项是使用工作流持久性存储中的信息。其中一列包含活动书签,在接收活动的情况下,这是 SOAP 操作。您可以有一个单独的服务来公开给定工作流实例的该信息。

您仍然需要考虑这样一个事实,即您可能会将消息发送到处于不同状态的工作流,因为工作流持久性存储不会立即更新(除非您这样做)并且因为多个人可能会将消息发送到相同的工作流实例。这种基本技术仍然非常有效,我已经使用它来根据工作流的状态启用/禁用 UI 上的按钮。

于 2012-08-07T14:12:30.770 回答