问题描述
谁能帮我解决这个问题-
如何在点击 Microsoft Dynamics CRM
中的按钮时调用自定义工作流活动以在机会实体中启动休息调用?
如果可以,请告诉我如何存档。提前致谢
解决方法
在crm中从前端(Js)调用工作流的代码片段
var parameters = {};
parameters.EntityId = "1236666666666666666666666666666666";
parameters.InputArguments = "Your custom parameter";
var req = new XMLHttpRequest();
req.open("POST",Xrm.Page.context.getClientUrl() + "/api/data/v9.1/workflows(E633A91A-CFD8-40D5-A3BD-10E55CE941D6)/Microsoft.Dynamics.CRM.ExecuteWorkflow",false);
req.setRequestHeader("OData-MaxVersion","4.0");
req.setRequestHeader("OData-Version","4.0");
req.setRequestHeader("Accept","application/json");
req.setRequestHeader("Content-Type","application/json; charset=utf-8");
req.onreadystatechange = function() {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var results = JSON.parse(this.response);
} else {
Xrm.Utility.alertDialog(this.statusText);
}
}
};
req.send(JSON.stringify(parameters));
由于您在 D365 上,我建议使用 Xrm.Webapi 调用,如下所示
var parameters = {};
var entity = {};
entity.id = "E633A91A-CFD8-40D5-A3BD-10E55CE941D6";
entity.entityType = "workflow";
parameters.entity = entity;
parameters.EntityId = "1236666666666666666666666666666666";
parameters.InputArguments = "Your custom parameter";
var executeWorkflowRequest = {
entity: parameters.entity,EntityId: parameters.EntityId,InputArguments: parameters.InputArguments,getMetadata: function() {
return {
boundParameter: "entity",parameterTypes: {
"entity": {
"typeName": "mscrm.workflow","structuralProperty": 5
},"EntityId": {
"typeName": "Edm.Guid","structuralProperty": 1
},"InputArguments": {
"typeName": "mscrm.InputArgumentCollection","structuralProperty": 5
}
},operationType: 0,operationName: "ExecuteWorkflow"
};
}
};
Xrm.WebApi.online.execute(executeWorkflowRequest).then(
function success(result) {
if (result.ok) {
var results = JSON.parse(result.responseText);
}
},function(error) {
Xrm.Utility.alertDialog(error.message);
}
);