Sto tentando di eseguire un flusso di lavoro per i record selezionati in una vista, tramite un pulsante a nastro. Ho un esempio di lavoro utilizzando i servizi '' legacy per il CRM 4 compatibilità:Esecuzione del flusso di lavoro da JavaScript in CRM 2011
function invokeWorkflow(workflowId, entityId) {
var request =
'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' +
' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
' xmlns:xsd="http://www.w3.org/2001/XMLSchema">' +
GenerateAuthenticationHeader() +
' <soap:Body>' +
' <Execute xmlns="http://schemas.microsoft.com/crm/2007/WebServices">' +
' <Request xsi:type="ExecuteWorkflowRequest">' +
' <EntityId>' + entityId + '</EntityId>' +
' <WorkflowId>' + workflowId + '</WorkflowId>' +
' </Request>' +
' </Execute>' +
' </soap:Body>' +
'</soap:Envelope>';
var xhr = new XMLHttpRequest();
xhr.open('POST', '/MSCRMservices/2007/crmservice.asmx', false);
xhr.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');
xhr.setRequestHeader('SOAPAction', 'http://schemas.microsoft.com/crm/2007/WebServices/Execute');
xhr.send(request);
}
Tuttavia, voglio scrivere questo utilizzando i servizi di CRM 2011 per aumentare la manutenibilità per le versioni future. Ecco cosa ho provato fino ad ora, ma questo non funziona - il codice di ritorno della chiamata è HTTP 500 (Internal Server Error).
function invokeWorkflow(workflowId, entityId) {
var request =
'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' +
' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
' xmlns:xsd="http://www.w3.org/2001/XMLSchema">' +
' <soap:Body>' +
' <Execute xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services">' +
' <Request xsi:type="ExecuteWorkflowRequest">' +
' <EntityId>' + entityId + '</EntityId>' +
' <WorkflowId>' + workflowId + '</WorkflowId>' +
' </Request>' +
' </Execute>' +
' </soap:Body>' +
'</soap:Envelope>';
var xhr = new XMLHttpRequest();
xhr.open('POST', '/XRMServices/2011/Organization.svc/web', true);
xhr.setRequestHeader('Accept', 'application/xml, text/xml, */*');
xhr.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');
xhr.setRequestHeader('SOAPAction', 'http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute');
xhr.onreadystatechange = function() { alert(xhr.status); };
xhr.send(request);
}
Qualcuno sa cosa c'è che non va nel secondo script? Ho cercato su Google questo come meglio posso, ma ogni esempio che ritengo di essere per CRM 2011 è in realtà solo utilizzando i servizi di compatibilità CRM 4 (come nel primo esempio). Ho basato il secondo esempio di un esempio nell'SDK di CRM 2011, sebbene questo non includa un esempio dell'oggetto ExecuteWorkflowRequest, quindi è consigliabile solo l'ipotesi.
Grazie!