2016-06-22 7 views
2

KontextWie Aktion mit Parameter (n) mit ExecuteWorkflowRequest in Dynamics CRM 2016 aufrufen?

ich erfolgreich Aktionen mit ExecuteWorkflowRequest nennen kann, wo die genannte Aktion hat keine Parameter:

var request = new ExecuteWorkflowRequest 
{ 
    EntityId = myEntityId, 
    WorkflowId = myWorkFlowId, 
}; 
service.Execute(request); 

wo Aktion einen einfachen Workflow ist mit Kategorie „Aktion“. Allerdings kann ich Aktionen mit Parametern nicht aufrufen.

Was ich bisher versucht:

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); 

Der gerufene Workflow ist eine Kategorie: Action mit einem optionalen String-Typ Eingabeparameter namens „MyParameterName“

Dieser Aufruf wird eine Ausnahme zu sagen :

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

ich habe auch versucht ... Einige Orte empfehlen (ohne Beweis) für ältere CRM Versionen der Auflistung Parameter des Antrags mit sich selbst ... obwohl es hässlich und/oder falsch scheint, habe ich es zu schießen, ohne Erfolg:

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

mit Renditen

Unrecognized request parameter: MyParameter

Frage

Wie kann ich meine parametrisierte Aktion aufrufen Parameter über API bereitstellt mit ExecuteWorkflowRequest?

+0

Ich glaube nicht, dass Sie ... (sofern dies nicht speziell im Jahr 2016 aktualisiert wurde): http://stackoverflow.com/questions/10978236/pass-a-parameter-to-a-crm-2011-workflow -via-the-api –

Antwort

2

Die ExecuteWorkflowRequest ist eine Anforderung, die zum Ausführen von Workflows in einer älteren Version von Dynamics CRM entwickelt wurde, die noch keine Aktionen unterstützt. Argumente können nicht übergeben werden.

Stattdessen müssen Sie eine Aktion mit den erforderlichen Parametern erstellen und es wie folgt aus:

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); 

Hier "new_myaction" ist der logische Name der Aktion.

+0

Dies wirft einen Fehler in CRM 2016 Online auf - 'unerwarteter Fehler: Vererbungssicherheitsregeln beim Überschreiben von Membern verletzt:' Microsoft.Crm.CrmException.GetObjectData (System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization .StreamingContext) '. Die Sicherheitszugriffsfähigkeit der überschreibenden Methode muss mit der Sicherheitsverfügbarkeit der überschriebenen Methode übereinstimmen. ' –

+0

@ Dead.Rabit: sieht aus wie ein Serialisierungsfehler. Denken Sie daran, dass Sie kein Objekt an eine Aktion übergeben können. –

+0

Ich konnte aus irgendeinem Grund nicht bearbeiten, aber vielleicht 'myEntityId' in' myEntityRef' ändern, um Verwirrung zu vermeiden. – vleong