如何使用Dynamics CRM 2016中的ExecuteWorkflowRequest调用带参数的Action?

时间:2016-06-22 10:28:35

标签: c# dynamics-crm xrm

上下文

我可以使用ExecuteWorkflowRequest成功调用Actions,其中被调用的操作没有参数:

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

其中action是一个简单的工作流程,类别为“Action”。 但是我不能用参数调用Actions。

到目前为止我尝试了什么:

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

调用的Workflow是一个Category:Action,带有一个名为“MyParameterName”的可选字符串类型输入参数

此调用导致异常说:

  

此工作流无法运行,因为父工作流提供的参数与链接子工作流中的指定参数不匹配。

我也试过...... 有些地方建议(没有证明)旧版CRM版本使用请求本身的参数集合......虽然它看起来很丑陋和/或错误,但我给了它一个拍摄,没有成功:

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

返回
  

无法识别的请求参数:MyParameter

问题

如何使用ExecuteWorkflowRequest调用我的参数化Action提供参数?

1 个答案:

答案 0 :(得分:3)

ExecuteWorkflowRequest是一个旨在执行工作流的请求,在尚未支持操作的旧版Dynamics CRM中。无法将参数传递给它。

相反,您需要使用所需参数创建一个操作并执行它:

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

此处"new_myaction"是操作的逻辑名称。