2016-06-22 1 views
2

내가 성공적으로 호출 된 작업이 매개 변수가없는 경우 ExecuteWorkflowRequest를 사용하여 작업을 호출 할 수 있습니다Dynamics CRM 2016에서 ExecuteWorkflowRequest를 사용하여 매개 변수로 작업 호출 방법?

컨텍스트 :

조치가 카테고리 "액션"을, 간단한 워크 플로우입니다
var request = new ExecuteWorkflowRequest 
{ 
    EntityId = myEntityId, 
    WorkflowId = myWorkFlowId, 
}; 
service.Execute(request); 

. 그러나 매개 변수가있는 작업을 호출 할 수 없습니다.

지금까지 시도했다 :

string myParameter = "Hello"; 
var inputArgumentCollection = new InputArgumentCollection(); 
inputArgumentCollection.Arguments.Add("MyParameterName", myParameter); 
var request = new ExecuteWorkflowRequest 
{ 
    EntityId = myEntityId, 
    WorkflowId = myWorkFlowId, 
    InputArguments = inputArgumentCollection 
}; 
service.Execute(request); 

호출 된 워크 플로우는 종류입니다 : 액션 "MyParameterName"

이 호출이 말하는 예외가 발생라는 선택적 문자열 유형의 입력 매개 변수로 :

This workflow cannot run because arguments provided by parent workflow does not match with the specified parameters in linked child workflow.

또한 ...시도했습니다

request.Parameters.Add("MyParameter", myParameter); 

: 그것은 추한 및/또는 잘못된 것처럼 보이지만개 일부 장소는 요청 자체의 매개 변수 컬렉션을 사용 이전의 CRM 버전의 (아무 증거로) 추천 ... 내가 성공하지, 그것을 촬영을했다

Unrecognized request parameter: MyParameter

질문에 반환

어떻게 ExecuteWorkflowRequest를 사용하여 API를 통해 매개 변수를 제공하는 내 매개 변수화 액션을 호출 할 수 있습니다?

+0

저는 믿을 수 없습니다 ... (2016 년에 특별히 업데이트되지 않은 경우) : http://stackoverflow.com/questions/10978236/pass-a-parameter-to-a-crm-2011-workflow -via-the-api –

답변

2

ExecuteWorkflowRequest은 이전 버전의 Dynamics CRM에서 아직 작업을 지원하지 않는 워크 플로를 실행하도록 설계된 요청입니다. 인수를 전달할 수 없습니다.

다음 "new_myaction"
var request = new OrganizationRequest("new_myaction") 
{ 
    // EntityReference to the target of the action (suggested custom parameter) 
    ["Target"] = myEntityId, 
    // Another custom parameter 
    ["MyParameterName"] = "Hello" 
}; 

service.Execute(request); 

액션의 논리적 이름입니다

는 대신 필요한 매개 변수를 사용하여 작업을 생성하고 이런 식으로 실행해야합니다.

+0

이렇게하면 CRM 2016 Online에서 '예기치 않은 오류 : 멤버를 재정의하는 동안 상속 보안 규칙 위반'이라는 오류가 발생합니다. 'Microsoft.Crm.CrmException.GetObjectData (System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization .StreamingContext) '. 재정의 메서드의 보안 액세스 가능성은 재정의 할 메서드의 보안 액세스 가능성과 일치해야합니다. ' –

+0

@ Dead.Rabit : 직렬화 오류와 같습니다. 어떤 물건을 행동으로 넘겨 줄 수는 없다는 것을 기억하십시오. –

+0

어떤 이유로 편집 할 수 없지만 'myEntityId'를'myEntityRef'로 변경하여 혼란을 피할 수 있습니다. – vleong