2

我需要将用户任务标记为“延迟”以将其隐藏在默认任务列表视图中,直到达到给定日期。似乎没有标准功能可以实现这一点,或者有吗?如果没有,我们将不得不在流程变量级别(taskDeferredUntil=Date)实施解决方法,但如何实施任务列表查询?我需要从 taskservice 过滤任务:

1.)有一个非空流程变量(本地?)“taskDeferredUntil” 2.)“taskDeferredUntil”的值小于“now”

第一个过滤器很简单,关于第二个标准的任何提示?

4

1 回答 1

1

我看到了三种基本的可能性:

  1. 任务在您编写时被分配和过滤。不幸的是,在 TaskQuery 中 e 没有“variableGreaterThan”。因此,您可以编写自己的客户查询(参见此处)或执行适当的 ExecutionQuery(具有 variableValueGreaterThan),然后执行任务查询。后者可能不是最佳的,具体取决于查询。将 taskVariableValueGreaterThan/LowerThan 添加到 TaskQuery 可能值得提出问题。

  2. 您执行正常的任务查询并在内存中过滤它们。可能就足够了 - 取决于性能要求。

  3. 在到达延迟日期之前,您可以取消分配任务。然后,您可以尝试利用 Timer/JobExecutor 基础架构在延迟日期到期时自动重新分配任务(有点像)。不幸的是,我目前没有时间编写示例 - 但这是一个有趣的选择)。或者您有一些外部作业偶尔检查一次(对过期的延期日期进行执行查询 - 重新分配并删除延期日期 - 我认为可以保持效率)。

希望这有助于整理选项?也许我忘记了什么?

干杯伯恩德

于 2013-09-07T07:58:28.033 回答