重新分配所有者的自定义工作流程突然停止工作

时间:2019-06-24 06:28:40

标签: dynamics-crm workflow crm

我有一个工作流,它基于一个名为“ QuoteWerks Prepared by”的字段来重新分配所有者。

我似乎无法在StackOverflow中发布屏幕截图,所以请在https://community.dynamics.com/crm/f/117/p/358168/941269#941269

的另一个论坛中查看我的屏幕截图。

“ KED365”步骤是自定义工作流程活动,并使用下面的代码。

此步骤的“设置属性”部分将字段设置为“ QuoteWerks销售代表”。

下一步,将记录分配给上一步中返回的用户。

但是,工作流程突然停止工作。我收到以下错误: 没有提供所有者。 插件跟踪:

[Microsoft.Xrm.Sdk.Workflow:Microsoft.Xrm.Sdk.Workflow.Activities.AssignEntity] [Microsoft.Xrm.Sdk.Workflow(9.0.0.0):Microsoft.Xrm.Sdk.Workflow.Activities.AssignEntity]

错误消息:

未处理的异常: 异常类型:System.ArgumentException 消息:未提供所有者

-结束堆栈跟踪-

异常类型:Microsoft.Crm.CrmArgumentException 消息:未提供所有者    在Microsoft.Crm.Workflow.Services.AssignActivityService.Execute(ActivityContext执行上下文,AssignEntity AssignEntity)    在System.Activities.CodeActivity.InternalExecute处(ActivityInstance实例,ActivityExecutor执行程序,BookmarkManager书签管理器)    在System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor执行程序,BookmarkManager书签管理器,位置resultLocation) -结束堆栈跟踪-

我看到错误提示“未提供所有者”,但是我无法弄清为什么突然停止工作或如何修复它。直到大约一周前,工作流程都工作良好。解决此问题的任何帮助将不胜感激。

谢谢!

namespace KED365.Workflows
{
using System;
using System.Activities;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Workflow;
using Microsoft.Xrm.Sdk.Query;
using System.Linq;
public sealed class GetUserByFullName : WorkFlowActivityBase
{
[Input("User Full Name")]
public InArgument<string> UserFullName { get; set; }
[Output("Prepared By")]
[ReferenceTarget("systemuser")]
public OutArgument<EntityReference> PreparedBy { get; set; }

[Output("IsSuccess")]
public OutArgument<bool> IsSuccess { get; set; }
[Output("Message")]
public OutArgument<string> Message { get; set; }
protected override void Execute(CodeActivityContext activityContext, 
IWorkflowContext workflowContext, IOrganizationService CrmService, 
ITracingService trace)
{
try
{
string userName = UserFullName.Get(activityContext);
if (string.IsNullOrWhiteSpace(userName))
{
IsSuccess.Set(activityContext, false);
Message.Set(activityContext, "User's Full Name is not provided");
return;
}
var QEsystemuser = new QueryExpression("systemuser");
QEsystemuser.ColumnSet.AddColumns("fullname");
QEsystemuser.Criteria.AddCondition("fullname", ConditionOperator.Equal, 
userName);
var results = CrmService.RetrieveMultiple(QEsystemuser);
if (results == null || !results.Entities.Any())
{
IsSuccess.Set(activityContext, false);
Message.Set(activityContext, "User with " + userName + " not found") ;
return;
}
if (results.Entities.Count > 1)
{
IsSuccess.Set(activityContext, false);
Message.Set(activityContext, "Multiple users found with same name : " + 
userName);
return;
}

(activityContext, true);
PreparedBy.Set(activityContext, 
results.Entities.Single().ToEntityReference());
}
catch (Exception ex)
{
IsSuccess.Set(activityContext, false);
Message.Set(activityContext, "An error occurred trying to find user : " + 
ex.Message);
}
}
}
}

--------------

1 个答案:

答案 0 :(得分:0)