WF DelayActivity立即触发?

时间:2011-04-04 19:52:31

标签: sharepoint-2007 workflow-foundation

我已创建并部署到Sharepoint 2007服务器场的工作流程。当它针对项目运行两个延迟活动时,我立即创建了火。

我已经在InitializeTimeoutDuration事件上设置了一个回调。通过日志和调试输出,我可以看到它将延迟设置为一小时。但是,在下一个SP计时器作业周期(少于5分钟),延迟活动的事件将关闭。

我迷失在这里。非常感谢任何帮助。

更新

通过一些挖掘,我能够确定为什么要开火。工作流启动后,记录将添加到SP内容数据库中的ScheduledWorkItems表中。但是,记录中的“DeliveryDate”设置为当前时间,而“创建”日期设置为前一小时。但是,我使用的延迟是2小时,所以这些时间都没有任何意义。要尝试硬编码....

更新2

即使是硬编码的持续时间,时间也会关闭。我硬编码延迟了2小时,“DeliveryDate”现在是将来的一小时,而“创建”日期是过去的一小时。所以至少他们之间的区别是好的。

更新

嗯,那令人尴尬......发现了问题。我在这里发布它可能会像我一样犯错误。首先,我在UTC->本地转换中不正确。数据库上的时间是正确的。不正确的是我如何设置TimeoutDuration:

// WRONG!
delayActivity.TimeoutDuration = new TimeSpan("1:00:00"); // one hour

我应该做的事情:

// RIGHT!
((DelayActivity)sender).TimeoutDuration = new TimeSpan("1:00:00"); // one hour

一旦我做出改变,其他一切似乎都没问题。

1 个答案:

答案 0 :(得分:0)

嗯,那令人尴尬......发现了问题。我在这里发布它可能会像我一样犯错误。首先,我在UTC->本地转换中不正确。数据库上的时间是正确的。不正确的是我如何设置TimeoutDuration:

//错了! delayActivity.TimeoutDuration = new TimeSpan(“1:00:00”); //一小时

我应该做的事情:

//对了! ((DelayActivity)sender).TimeoutDuration = new TimeSpan(“1:00:00”); //一小时

一旦我做出改变,其他一切似乎都没问题。