sharepoint - 事件处理范围事件中的延迟事件 - Windows 工作流共享点

标签 sharepoint workflow workflow-foundation delay

我正在尝试创建以下场景:

  • 任务被分配给用户来完成
  • 为经理创建一个任务,以便在必要时重新分配用户任务(不要问,他们想要这样)
  • 当任务接近截止日期时需要发送电子邮件提醒

因此,我想到使用 EventHandlingScope 来实现此目的:

  • 我正在监听 eventhandlingscope 事件主分支上的任务更改,
  • 监听事件驱动分支中的重新分配任务更改 - 如果重新分配任务被激活,则将第一个任务重新分配给指定的用户
  • 在另一个事件驱动分支中,使用延迟事件并定期检查用户分配的任务是否接近截止日期并发送电子邮件提醒

所以,我认为 eventhandlingscope 对此很有好处,而且除了 DelayActivity 的问题之外,它主要是这样。

如果我将延迟事件放入其中一个事件处理程序分支中,它会触发一次,但不会多次。 而如果我在那里放置一个 onTaskChange 事件,那么每当有人更改该任务时它就会触发。

那么,这是预期的行为吗?为什么 DelayActivity 不循环? 我怎样才能以不同的方式做到这一点?我的想法是使用 CAG,但这看起来有点复杂......

更新:CAG 的问题是,即使 onChange 事件触发,整个事情也会阻塞,直到延迟事件触发。这是有道理的,但使用起来有点棘手。

更新2:我重新措辞了文本以使其更清晰

最佳答案

解决方案

解决此问题的基本事件安排是包含 ListenActivityWhileActivity

监听事件有 3 个 EventDrivenActivity 分支。第一个是“用户任务已完成”分支,第二个是“经理更改了分配的用户”分支,第三个包含 DelayActivity ,后跟您的电子邮件逻辑。

在监听事件中,任何分支都可以完成监听事件,并且当它们完成监听事件时,监听事件中的其他事件将被取消。

您需要确保“用户任务已完成”序列设置一些可由 while 循环测试的值,以便当用户完成任务时 while 循环退出。

当“用户任务已完成”分支以外的分支负责完成 ListenActivity 工作流程时,将循环回 ListenActivity 并重新执行所有 3 个事件驱动事件,包括包含 DelayActivity 的事件。

请注意,这与 EventHandlingScope 方法略有不同,因为“监听用户任务已完成”将被取消并重新执行,而使用 EventHandlingScope 则不会发生这种情况。在我看来,这是一种更好的安排,因为这意味着当前选择在 Listen 事件开始时执行任务的用户保证在结束时保持不变(因为如果更改,则整个事件将被丢弃并启动新的事件) )。

为什么 Delay 在 EventHandlingScope 中只触发一次

实际上,您设置的是一个正在监听两个事件的作用域。一个是您的经理更改分配的用户事件,另一个是“计时器触发事件​​”。

现在,按照文档中描述的方式,听起来好像涉及一些循环,就好像一旦这些事件之一完成,它们就会重新启动。然而它并不完全是这样,它实际上只是继续监听原始事件,并且如果另一个此类事件被触发,它将重新运行内容。

DelayActivity的情况下,正在监听一些内部“计时器触发事件​​”。当第一次输入延迟时,将设置超时,以便计时器将在适当的时间触发,然后监听该事件。一旦它触发,作用域就会返回监听“计时器触发事件​​”,但是,不会重新运行设置超时的初始代码,因此不会出现其他“计时器触发事件​​”。

关于sharepoint - 事件处理范围事件中的延迟事件 - Windows 工作流共享点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1832175/

相关文章:

asp.net-mvc - 大型Web应用程序中Windows Workflow的使用

sharepoint - 重新设计 SharePoint 网站的最佳实践

compiler-construction - 灵活的编译器管道定义

javascript - jquery 无法在 sharepoint 2013 中工作

PowerShell 工作流交换远程处理

python - 如何通过单个脚本生成多个 Airflow dags?

wpf - DependencyProperty.Register() 或 .RegisterAttached()

c# - VS11 上的 Windows Workflow Foundation 教程

sharepoint - 使用 Microsoft Graph 列出 Microsoft Sharepoint 站点

sharepoint - Windows Share Point Service 和 MOSS 之间的区别