我试图建立一个以下情况:

  • 一个任务分配给用户,以完成
  • 一个任务得到创建的管理,以重新分配用户的任务,如果有必要(不问,他们希望这种方式)
  • 电子邮件提醒neeeds要发送时的任务即将到期日期

所以,我以为使用EventHandlingScope为此:

  • 我听一任务变化的主要分支eventhandlingscope活动,
  • 听取重新分配任务的改变,在事件驱动的分支,如果重新分配的任务就变得激活,重新分配的第一项任务的用户指定的
  • 在另一事件驱动的支的使用一个延迟的活动,并定期检查,如果用户分配的任务即将到期日期和发送提醒电子邮件

因此,我虽然eventhandlingscope会好的,对于这种情况,它主要是,除了为该问题与DelayActivity.

如果我把一个延迟的活动在一个事件处理程序分支机构,它触发一次,但不是更多。而如果我把一个onTaskChange活动,还有这火灾每次有人改变这项任务。

所以,这是预期的行为?为什么不DelayActivity循环?我怎么可能这样做有什么不同?我的想法是与一个向政府提供现金支助,但是这看起来有点复杂...

更新:该问题向政府提供现金支助的是整个事情块,直到延迟活动的大火,即使菜单选择变化被解雇。这是有道理的,但使得它有点棘手的使用。

Update2:我已经改写的文本,以使它希望更清楚

有帮助吗?

解决方案

该解决方案

该基波活动的安排,解决这个问题是 WhileActivity 含有一个 ListenActivity.

听活动给予3 EventDrivenActivity 分支机构。在第一个是你的"用户任务的完成"的分支,二是"管理变化的指定用户"分和第三次包含一个 DelayActivity 随后通过你的电子邮件的逻辑。

在听活动的任何分支机构可以完成的监听活动和当他们这样做的其他活动听的活动将被取消。

你会需要确保"用户任务完成了"序列设置了一些值,可以测试通过同时循环,这样的循环中退出时用户完成的任务。

当一个分支于"用户任务完成"分支负责完成的 ListenActivity 工作流程将返回到 ListenActivity 并重新执行所有3个事件驱动的活动包括一个含有的 DelayActivity.

注意,这是略有不同,从EventHandlingScope的做法,因为"听取用户的任务完成后"将获得取消和重新执行而与EventHandlingScope这不会发生。海事组织的这一个更好的安排,因为它意味着用户,目前正在选择用于执行任务时开始听活动保证是不变,在结束(因为如果是改变整个活动被丢弃和一个新的开始)。

为什么拖延只开了一次在EventHandlingScope

有效的什么你已经设立了一个范围,是听于两个事件。一个是你的经理改变分配给用户的事件,其他的是一个"定时器发射的事件"。

现在的方式,其中所述文件,这听起来像一些回路是参与,如果一旦这些活动完成它们重新启动。但是其不完全是这样,它实际上只是继续听取对原始的事件,并将重新运行的内容,如果另一个这样的事件是解雇。

在这种情况下的 DelayActivity 有一些内部"定时解雇的事件"正在被倾听。当拖延是第一次进入超时设置这样的计时器将火在适当的时间,然后倾听该事件。一旦它被解雇的范围返回到听到一个"定时器发射事件",但是,没有重新运行的初始代码设置的超时因此没有其他的"定时解雇的事件"被提出来。

其他提示

我知道你不想听到这个,但你会变得更好,创造一个工作流程的地方的处理程序作为工作流程设计的处理时间维度要好得多,因为他们是"长跑"。事件处理程序更多的范围内为一个时刻时的事件触发了他们然后他们完成一个行动。不仅如此,但从你写什么,如果要求是简单的,你可以创建一个SharePoint设计工作流程所以你甚至不会有crach开Visual Studio.

此外,不知道如果你知道这一点,但SharePoint任务发送了电子邮件,这些任务会送出的日常提醒任务时已晚,所以你也许可以解决你的延迟活动使用的功能。

最后,如果正在调试模式下运行,你已经硬编码你taskid,你只可以运行一个任务每调试届会议,否则你的事件的处理程序将停止的时候,另一项相同的标识加入到SharePoint。这可以解释为什么你的延迟活动被阻止。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top