我想强制超过 1 个用户不应该在 QueueItem 上工作。设置 QueueItem.WorkerId 对此有何帮助?设置此属性时,后台发生了什么?我们如何在 CRM 2011 中强制执行上述限制。
目前,即使我通过选择 WorkOn 操作设置了 WorkerId 属性,其他用户仍然可以打开 QueueItem 并对其进行处理。
我想强制超过 1 个用户不应该在 QueueItem 上工作。设置 QueueItem.WorkerId 对此有何帮助?设置此属性时,后台发生了什么?我们如何在 CRM 2011 中强制执行上述限制。
目前,即使我通过选择 WorkOn 操作设置了 WorkerId 属性,其他用户仍然可以打开 QueueItem 并对其进行处理。
我的直觉是挑战您的要求(例如:如果处理该项目的用户在项目解决之前离开公司 - 会发生什么?) - 但我假设您的问题纯粹是技术问题。
这是我的建议(未经测试 - 你需要做一些工作来证明哪条路线是正确的)。我最初的假设是队列项目是根据queueid
属性分配给用户或团队的,但正如您所指出的,该workerid
属性可能是更可能的候选者。
我假设workerid
属性中没有默认值。您将需要编写一个针对实体消息Pre-Operation
阶段注册的插件。如果该属性尚未设置(从 Pre-Entity 图像中获取),则允许操作继续。如果已设置,则向用户引发异常,通知他们该项目无法重新分配。您可能需要针对 the 的消息注册您的插件。Update
queueitem
workerid
workerid
Create
queueitem
向queueitem
实体添加一个新属性,称为“原始队列”。然后编写一个针对实体AddToQueue
消息注册的插件queueitem
(我最初认为这是当用户单击“工作”按钮时触发的消息 - 我认为将项目移动到用户队列,但我可能是错误的)。如果您的“原始队列”属性未设置,则将其设置为旧队列 ID(从 Pre-Entity 图像中获取)并允许重新分配到另一个队列继续进行。如果“原始队列”项已设置,则向用户引发异常,通知他们无法重新分配该项目。您可能需要Create
根据queueitem
太(我不确定,未经测试,此时将传入队列项分配给队列)。