太白将进酒,共邀天下友

形位合成变动静,有无陈新映全域。 内外移思抽精明,连续离散归终果。

导航

[导入]WWF工作流引擎的一个奇怪现象

昨天在对做工作流服务时调试发现WWF的状态机工作流有一个奇怪现象:触发状态事件后不会马上改变状态机的状态,而是要等一段时间状态才改变过来。单元测试代码如下:

IWorkflowService ws = wm.GetWorkflowService("OrderWorkflow"); Guid id = ws.StartWorkflow(null); System.Threading.Thread.Sleep(500);//如果省略这句,单元测试会失败 Assert.AreEqual(ws.GetWorkflowCurrentState(id), "WaitingForOrderState"); ws.DoAction(id, "Create", "my order"); System.Threading.Thread.Sleep(500); Assert.AreEqual(ws.GetWorkflowCurrentState(id), "OrderOpenState"); IProcessStation ps = container[typeof(IProcessStation)] as IProcessStation; Assert.AreEqual(ps.OrderId, "my order");
间隔时间大概是200多毫秒(在实际测试中间隔200毫秒出错,间隔300成功)。我加入了工作流状态跟踪服务,改变状态的操作是异步进行的,不过延迟这么久也有点夸张了,不知道是设置问题还是测试版本的BUG,还是本来就是这样设计的。现在还无法想出这个延迟时间会不会对业务逻辑带来什么问题。
文章来源:http://www.agilelabs.cn/blogs/linkin/archive/2006/01/10/503.aspx

posted on 2006-01-16 10:58  太白飞仙  阅读(490)  评论(1编辑  收藏  举报