2017-11-02 8 views
0

대기열에서 여러 작업을 완료하기 위해 함께 작동하는 몇 가지 기능이 있습니다.Javascript에서 동작 호출 MSCRM

첫 번째는 작업 ID 및 사용자 ID의 CSV를 전달하는 작업 (워크 플로)을 호출하는 javascript입니다. 이 작업은 작업을 반복하는 플러그인 전체에 손을 가져다가 사용자를 위해 선택하고 완료하도록 설정합니다.

이 작업은 이미 작업이 할당되어 있지 않으면 모두 잘 돌아갑니다. 그럼 자바 스크립트에서 오류가 발생합니다.

enter image description here

은 처음이 "항목이 이미 다른 사용자에게 할당 된"말을이었다. 그러나 나는

if(!ex.Message.Contains("Item has already been assigned to another user")) 
{ 
    throw ex; 
} 

와 같은

내가 그 캐치 시도
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; 
    } 
} 

같은 시도 캐치를 추가하고 모든 걸 잡기. 그럼에도 불구하고 오류는 여전히 나타납니다. 그런 다음 작업이 완료되었음을 알았지 만 오류가 발생합니다. 이 코드가 끝나면 작업이 완료되도록 설정됩니다. 어떤 작업이 아직 선택되지 않았 으면 오류가 발생하지 않기 때문에 작동합니다.

+0

방법이 이미 할당으로 완료에서이 레코드를 건너 뛰는 어떻습니까? 기본적으로이 큐 항목을 다시 선택하기 전에 릴리스해야한다고 생각합니다. –

답변

1

답변에 오류가 있습니다 : 플러그인에서 OrganizationService (또는 실제로는 예외는 아님)으로 던져진 예외를 catch에 던지거나 실행을 계속할 수 없습니다.

코드를 확장해야 이 작동하지 않으므로이 throw되지 않습니다. 이러면 안돼.

+0

프로세스에 연결했는데 플러그인에 아무 예외도 던지지 않았습니다. –

+0

아, 잠깐, 무슨 뜻인지 알 겠어. try catch를 사용하여 레코드가 할당되었는지 확인할 수 없습니다. 먼저 할당되었는지 확인해야합니다. –

+1

이 문제를 해결하기 위해 try catch를 사용하여 큐 항목이 할당되었는지 확인하기 위해 if 문을 사용하여 직접 확인했습니다. –

0

and just catching everything. And yet the error still shows. I then noticed the tasks were completing, but the error is getting thrown. After this code is where the task is set to complete. Which works because if the task is not already picked, no error is thrown.

이 레코드는 이미 할당되었으므로 완료하지 않으려면 어떻게해야합니까? 기본적으로이 큐 항목을 다시 선택하기 전에 해제해야합니다.

ReleaseToQueueRequest 또는 RemoveFromQueueRequest