问题:
使用WF (WF3)的状态机工作流的应用程序,通常要遇到一个问题:工作流的状态 (例如,一个订单处理工作流)与业务逻辑实体(例如,订单这个实体)状态的关联。
解决方案:
1. 最常想到的是在业务逻辑实体中添加一个字段来表示状态,例如OrderStatus: 0-New, 1-Paid, 2-Shipped。工作流执行到某个状态时,更新该实体的状态字段与当前工作流状态一致。
2. 直接使用工作流状态:StateMachineWorkflowActivity有一个实例属性CurrentWorkflowState表示当前的状态。那么工作流外部的业务逻辑如何得到这个状态值呢,有一个很讨巧的办法:StateMachineWorkflowActivity继承自StateActivity,所以可以直接放一个EventDriven活动在这个工作流本身上,这个EventDriven就可接收来自外部的获取状态信息的事件并返回状态信息。(这个EventDriven是一个独立的活动,不与其他状态活动交互)。