【问题标题】:Custom Workflow that reassigns owner has suddenly stopped working重新分配所有者的自定义工作流突然停止工作
【发布时间】:2019-11-05 22:15:10
【问题描述】:

我有一个基于名为“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 executionContext,AssignEntity assignEntity) 在 System.Activities.CodeActivity.InternalExecute(ActivityInstance 实例,ActivityExecutor 执行器,BookmarkManager 书签管理器) 在 System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor 执行器,BookmarkManager 书签管理器,位置结果位置) -- 结束堆栈跟踪 --

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

谢谢!

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

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

【问题讨论】:

  • 观察,错误说没有提供所有者,即您的客户工作流程是否根据全名成功找到用户,或者它是否找到了多个用户,因为记录的分配需要设置所有者而 Crm 无法设置它。接下来你可以给出一个特定的全名,你确定它是系统中的用户并且也是唯一的,以便你可以验证。您可以分析工作流程,以便您可以调试并检查它到底在哪里失败。您可以创建新的临时工作流程(不是自定义)并将记录分配给硬编码的用户吗?用户您正在分配记录,它是否具有记录/实体的安全角色

标签: dynamics-crm workflow crm


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 2017-08-22
    • 2021-02-01
    • 2016-12-29
    • 2018-05-09
    • 2015-12-07
    相关资源
    最近更新 更多