C# 如何在Dynamics CRM 2016中使用ExecuteWorkflowRequest调用带有参数的操作?

C# 如何在Dynamics CRM 2016中使用ExecuteWorkflowRequest调用带有参数的操作?,c#,dynamics-crm,xrm,C#,Dynamics Crm,Xrm,上下文 在调用的操作没有参数的情况下,我可以使用ExecuteWorkflowRequest成功调用操作: var request = new ExecuteWorkflowRequest { EntityId = myEntityId, WorkflowId = myWorkFlowId, }; service.Execute(request); 其中action是一个简单的工作流,类别为“action”。 但是,我不能使用参数调用操作 到目前为止我所尝试的: string

上下文

在调用的操作没有参数的情况下,我可以使用ExecuteWorkflowRequest成功调用操作:

var request = new ExecuteWorkflowRequest 
{
    EntityId = myEntityId,
    WorkflowId = myWorkFlowId,
};
service.Execute(request);
其中action是一个简单的工作流,类别为“action”。 但是,我不能使用参数调用操作

到目前为止我所尝试的:

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);
被调用的工作流是一个类别:带有可选字符串类型输入参数“MyParameterName”的操作

此调用导致一个异常,说明:

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

我也尝试过… 有些地方建议(没有证据)使用请求本身的参数集合为旧的CRM版本。。。虽然它看起来很丑陋和/或错误,但我还是尝试了一下,但没有成功:

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

无法识别的请求参数:MyParameter

问题


如何使用ExecuteWorkflowRequest调用通过API提供参数的参数化操作?

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\u myaction”
是该操作的逻辑名称。

我不相信您可以。。。(除非这是在2016年特别更新的):这会在CRM 2016 Online中引发错误-“意外错误:重写成员时违反了继承安全规则:'Microsoft.CRM.CrmeException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext')。重写方法的安全可访问性必须与被重写方法的安全可访问性匹配。“@Dead.Rabit:看起来像是序列化错误。请记住,您无法将任何对象传递给操作。由于某些原因,我无法编辑,但可能会将
myEntityId
更改为
myEntityRef
,以避免混淆。