2011-04-04 103 views
1

我有一个创建并部署到Sharepoint 2007场的工作流。当它运行两项延迟活动时,我立即产生了火情。WF DelayActivity立即触发?

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

我迷失在这里。任何帮助是极大的赞赏。

更新

通过一些挖,我能够确定为什么这是发射过。一旦工作流程开始,记录将被添加到SP内容数据库的ScheduledWorkItems表中。但是,记录上的“DeliveryDate”设置为当前时间,而“Created”日期设置为之前的一个小时。但是,我使用的延迟时间是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 

,一旦我作出改变一切似乎是罚款。

回答

0

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

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

我应该做的事情:

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

一旦我改变了一切似乎没有问题。