Dynamics crm 2011 CRM 2011:自定义工作流活动输出参数don´;不显示

Dynamics crm 2011 CRM 2011:自定义工作流活动输出参数don´;不显示,dynamics-crm-2011,output,workflow-activity,Dynamics Crm 2011,Output,Workflow Activity,各位,, 我遇到了一个问题,它没有出现在右侧“本地值”下面的“查找”下的输出参数列表中,我不理解这个问题或不出现的原因,因为就输入参数而言是可以的 受保护的覆盖无效执行(CodeActivityContext executionContext) { ITracingService tracingService=executionContext.GetExtension(); //创建上下文 IWorkflowContext=executionContext.GetExtension(); IOO

各位,, 我遇到了一个问题,它没有出现在右侧“本地值”下面的“查找”下的输出参数列表中,我不理解这个问题或不出现的原因,因为就输入参数而言是可以的

受保护的覆盖无效执行(CodeActivityContext executionContext)
{
ITracingService tracingService=executionContext.GetExtension();
//创建上下文
IWorkflowContext=executionContext.GetExtension();
IOOrganizationServiceFactory服务工厂=executionContext.GetExtension();
IOOrganizationService=serviceFactory.CreateOrganizationService(context.UserId);
tracingService.Trace(“创建帐户”);
账户实体=新账户();
entity.Name=AccountName.Get(executionContext);
Guid entityId=service.Create(实体);
字符串a=实体名称;
AccountNameTest.Set(executionContext,a);
tracingService.Trace(“使用Id{0}创建的帐户”,entityId.ToString());
tracingService.Trace(“为帐户创建任务”);
任务newTask=新任务();
newTask.Subject=TaskSubject.Get(executionContext);
newTask.RegardingObjectId=新的EntityReference(Account.EntityLogicalName,entityId);
Guid taskId=service.Create(newTask);
tracingService.Trace(“任务已创建”);
tracingService.Trace(“使用QueryByAttribute检索任务”);
QueryByAttribute query=新的QueryByAttribute();
AddRange(新字符串[]{“regardingobjectid”});
query.ColumnSet=newcolumnset(新字符串[]{“subject”});
query.EntityName=Task.EntityLogicalName;
AddRange(新对象[]{entityId});
tracingService.Trace(“执行实体{0}的查询”,Query.EntityName);
//使用测试OOB(XRM)消息契约的请求执行
RetrieveMultipleRequest请求=新建RetrieveMultipleRequest();
request.Query=Query;
集合entityList=((RetrieveMultipleResponse)service.Execute(request)).EntityCollection.Entities;
//执行来自CRM消息程序集的请求
tracingService.Trace(“执行WhoAmIRequest”);
执行(新的WhoAmIRequest());
if(1!=entityList.Count)
{
tracingService.Trace(“实体列表太长”);
抛出新的InvalidPluginExecutionException(“查询未正确执行”);
}
其他的
{
tracingService.Trace(“将任务从RetrieveMultiple转换为强类型”);
Task retrievedTask=(Task)entityList[0];
if(retrievedTask.ActivityId!=taskId)
{
抛出新的InvalidPlugineExecutionException(“检索到错误的任务”);
}
tracingService.Trace(“从IOrganizationService检索实体”);
//使用Retrieve检索任务
retrievedTask=(Task)service.Retrieve(Task.EntityLogicalName,retrievedTask.Id,新列集(“主题”);
如果(!string.Equals(newTask.Subject、retrievedTask.Subject、StringComparison.Ordinal))
{
抛出新的InvalidPlugineExecutionException(“未正确检索任务的主题”);
}
//更新任务
retrievedTask.Subject=UpdatedTaskSubject.Get(executionContext);
服务更新(retrievedTask);
}
}
//
[输入(“名称conta”)]
[默认值(“testv01”)]
公共InArgument帐户名{get;set;}
[输入(“任务”)]
[默认值(“testv01”)]
公共InArgument任务主题{get;set;}
[输入(“更新任务”)]
[默认值(“testUPDATED:v01}”)]
public inagrament updatedasksubject{get;set;}
[输出(“帐户ID Guid”)]
[默认值(“测试更新:v01”)]
公共输出参数AccountNameTest{get;set;}

好的,问题解决了,只需重新启动IIS以假定字段,或者通过版本更改。问题是插件的更新,这也发生在工作流中。根据CRM 4.0,我意识到这种情况在CRM 4.0中不会发生。

尽管这个问题已经得到了回答,但我想分享两个此解决方案不起作用的案例(即使是在最新版本的CRM中):

案例1 选择包含德语Umlauts(äöüß)的输入参数名称

IIS重新启动没有帮助。 选择没有名字的名字为我解决了这个问题

案例2 我们最近还遇到了一个案例,即即使在重新启动整个Maschine CRM运行之后,正常的In参数也没有出现。解决方案并不明显:

  • 从SDK打开插件注册工具
  • 选择包含CWA的程序集
  • 选择您的CWA
  • 点击CWA属性选项卡中的保存按钮

  • 要应用输出参数的目标字段是哪种类型?由于您的输出类型是字符串,因此当您将焦点放在不同类型的字段(例如查找)@Guido Preite时,将不会显示名称“AccountNameTest”,请告诉我如何执行此操作?输出参数将在自定义活动后的步骤中可见,例如,如果您创建了一封电子邮件,您可以将输出参数放在subject或description内,因为它们是字符串字段,但不能放在About或bcc字段内,因为它们是查找