我有一些共同努力从队列中完成多项任务。
第一个是javascript,它调用Action(工作流)处理任务ID的CSV和用户ID。这个动作将它交给一个循环任务的插件,为用户选择它们然后将它们设置为完成。
除非已经分配任务,否则这一切都很好。然后我从javascript中收到错误。
首先,这是说“项目已经分配给另一个用户”。但是我添加了一个try catch这样的
try
{
Entity queueItem = RetrieveQueueItemIdByObjectId(service, new Guid(taskId));
// Create the Request Object and Set the Request Object's Properties
PickFromQueueRequest pickFromQueueRequest = new PickFromQueueRequest
{
QueueItemId = queueItem.Id,
WorkerId = new Guid(_UserId)
};
// Execute the Request
service.Execute(pickFromQueueRequest);
}
catch(FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault> ex)
{
if (ex.Detail.ErrorCode != -2147220891)
{
throw ex;
}
}
我尝试了
if(!ex.Message.Contains("Item has already been assigned to another user"))
{
throw ex;
}
并抓住一切。然而错误仍然显示。然后我注意到任务正在完成,但错误正在被抛出。在此代码之后,任务设置为完成。这是有效的,因为如果没有选择任务,则不会抛出任何错误。
答案 0 :(得分:1)
答案出现在错误中:在插件中,catch
引发的OrganizationService
异常(或实际上任何异常,据我所知)并继续运行。
您必须扩展您的代码,以便不会抛出,如果您希望它能够工作。没办法解决这个问题。
答案 1 :(得分:0)
并抓住一切。然而错误仍然显示。然后我注意到任务正在完成,但错误正在被抛出。在此代码之后,任务设置为完成。这是有效的,因为如果没有选择任务,则不会抛出任何错误。
如果已完成此记录,则如何从完成中跳过此记录?基本上你必须在再次挑选它之前释放这个队列项。