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