Recently I had a requirement to trigger a workflow on click of ribbon
button when it meets certain criteria. Refer below link for calling
JavaScript function from custom ribbon button.
http://ankit.inkeysolutions.com/2012/01/crm-2011-how-to-use-visual-ribbon.html
The criteria values are checked using JavaScript and if all criteria are satisfied then the workflow is to be triggered. The function below will take two inputs where entityId is the id of the record for which the workflow will execute and workflowProcessId is the id of the workflow which we want to execute.
http://ankit.inkeysolutions.com/2012/01/crm-2011-how-to-use-visual-ribbon.html
The criteria values are checked using JavaScript and if all criteria are satisfied then the workflow is to be triggered. The function below will take two inputs where entityId is the id of the record for which the workflow will execute and workflowProcessId is the id of the workflow which we want to execute.
function startWorkflow(entityId, workflowProcessId) {
var xml =
"" + "<?xml
version=\"1.0\" encoding=\"utf-8\"?>" +
"<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\">" + Xrm.Page.context.getAuthenticationHeader() + "<soap:Body>" +"<Execute
xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">"
+"<Request xsi:type=\"ExecuteWorkflowRequest\">" +"<EntityId>"
+ entityId + "</EntityId>" +
"<WorkflowId>" + workflowProcessId +
"</WorkflowId>" + "</Request>" +"</Execute>"
+"</soap:Body>" +"</soap:Envelope>";
var xmlHttpRequest = new
ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST",
"/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction",
"http://schemas.microsoft.com/crm/2007/WebServices/Execute");
xmlHttpRequest.setRequestHeader("Content-Type",
"text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
}
No comments:
Post a Comment