Add Button to Entity Ribbon
Export the entity in question and open up
customizations.xml. Add the following within the CustomActions tag…
03 | Location = "Mscrm.Form.account.MainTab.Save.Controls._children" |
08 | Command = "Mscrm.RunSomeJS" |
09 | LabelText = "Button Label" |
10 | ToolTipTitle = "Run Test Workflow" |
11 | ToolTipDescription = "Runs the test workflow to see if this works" |
13 | Image16by16 = "/_imgs/ribbon/tools_16.png" |
14 | Image32by32 = "/_imgs/ribbon/tools_32.png" /> |
15 | </ CommandUIDefinition > |
Location sets which area of the ribbon the button will appear on.
Sequence sets where within that ribbon it will appear.
LabelText sets the text which appears under the icon on the ribbon.
TemplateAlias (who knows!)
Create the click action
Now we need to add the command
Mscrm.RunSomeJS within the
CommandDefinitions section.
04 | < EnableRule Id = "Mscrm.Enabled" /> |
07 | < DisplayRule Id = "Mscrm.CanWriteAccount" /> |
11 | FunctionName = "TriggerWorkflow" |
12 | Library = "$Webresource:isah_test" > |
14 | Value = "{guid of account entity}" /> |
16 | Value = "{7D78531A-23EB-4042-9626-1D80DFC10A8D}" /> |
EnableRules sets if the button is greyed out on the toolbar (always enabled in this example)
DisplayRules sets if the button appears on the toolbar (if the user can write to the account entity in this example)
FunctionName sets the name of the function to run within the web resource
Library sets the name of the web resource JavaScript library to access
StringParameters in this case are the guid of the account entity (not used currently) and the guid of the workflow to trigger
JavaScript to Fire the Workflow
01 | function TriggerWorkflow(entityName,workflowGuid) { |
03 | var xx = prompt(Xrm.Page.data.entity.getId(),Xrm.Page.data.entity.getId()); |
06 | var soapBody = "<soap:Body>" + |
08 | " <Request xsi:type=\'ExecuteWorkflowRequest\'>" + |
09 | " <EntityId>" + Xrm.Page.data.entity.getId() + "</EntityId>" + |
10 | " <WorkflowId>" + workflowGuid + "</WorkflowId>" + |
16 | var soapXml = "<soap:Envelope " + |
20 | GenerateAuthenticationHeader() + |
25 | var xmlhttp = new ActiveXObject( "Msxml2.XMLHTTP" ); |
26 | xmlhttp.open( "POST" , "/MSCRMservices/2007/crmservice.asmx" , false ); |
27 | xmlhttp.setRequestHeader( "Content-Type" , "text/xml; charset=utf-8" ); |
31 | xmlhttp.send(soapXml); |
No comments:
Post a Comment