0

我想强制超过 1 个用户不应该在 QueueItem 上工作。设置 QueueItem.WorkerId 对此有何帮助?设置此属性时,后台发生了什么?我们如何在 CRM 2011 中强制执行上述限制。

目前,即使我通过选择 WorkOn 操作设置了 WorkerId 属性,其他用户仍然可以打开 QueueItem 并对其进行处理。

4

1 回答 1

0

我的直觉是挑战您的要求(例如:如果处理该项目的用户在项目解决之前离开公司 - 会发生什么?) - 但我假设您的问题纯粹是技术问题。

这是我的建议(未经测试 - 你需要做一些工作来证明哪条路线是正确的)。我最初的假设是队列项目是根据queueid属性分配给用户或团队的,但正如您所指出的,该workerid属性可能是更可能的候选者。

假设 WorkerId 是驱动程序字段:

我假设workerid属性中没有默认值。您将需要编写一个针对实体消息Pre-Operation阶段注册的插件。如果该属性尚未设置(从 Pre-Entity 图像中获取),则允许操作继续。如果已设置,则向用户引发异常,通知他们该项目无法重新分配。您可能需要针对 the 的消息注册您的插件。UpdatequeueitemworkeridworkeridCreatequeueitem

假设 QueueId 是驱动程序字段:

queueitem实体添加一个新属性,称为“原始队列”。然后编写一个针对实体AddToQueue消息注册的插件queueitem(我最初认为这是当用户单击“工作”按钮时触发的消息 - 我认为将项目移动到用户队列,但我可能是错误的)。如果您的“原始队列”属性设置,则将其设置为旧队列 ID(从 Pre-Entity 图像中获取)并允许重新分配到另一个队列继续进行。如果“原始队列”项设置,则向用户引发异常,通知他们无法重新分配该项目。您可能需要Create根据queueitem太(我不确定,未经测试,此时将传入队列项分配给队列)。

于 2012-06-07T08:45:06.303 回答