在自定义工作流程中检索系统用户管理器的问题 - CRM 2013

时间:2015-01-07 16:31:32

标签: crm dynamics-crm-2013

CRM 2013内部自定义工作流活动的问题

我试图通过系统管理器

这是我正在运行的代码,它可以设置MANAGER并停止

我把fetchXML单独运行了,它确实返回一个值,所以我知道它有什么用处

    public class CaseAccountManagerManagersLookup : CodeActivity
{
    // Inputs
    [Input("Enter Case")]
    [ReferenceTarget("incident")]
    public InArgument<EntityReference> CA { get; set; }

    // Outputs
    [Output("Manager Output")]
    [ReferenceTarget("systemuser")]
    public OutArgument<EntityReference> AMOUT { get; set; }

    protected override void Execute(CodeActivityContext executionContext)
    {
        // Context
        IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
        IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
        IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

        //Create the tracing service
        ITracingService tracingService = executionContext.GetExtension<ITracingService>();

        // get the account and renewals manager ID's
        var CASE = CA.Get<EntityReference>(executionContext);
        tracingService.Trace("Case ID = " + CASE.Id);
        try
        {
            // FETCH
            string fetchXml = string.Format(@"  
              <fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
              <entity name='incident'>
                <attribute name='title' />
                <attribute name='incidentid' />
                <order attribute='title' descending='false' />
                <filter type='and'>
                  <condition attribute='incidentid' operator='eq' value='{0}' />
                </filter>
                <link-entity name='contact' from='contactid' to='customerid' alias='ak'>
                  <link-entity name='account' from='accountid' to='parentcustomerid' alias='al'>
                    <link-entity name='systemuser' from='systemuserid' to='bc_dssalesperson' alias='am'>
                        <attribute name='parentsystemuserid' />
                    </link-entity>
                  </link-entity>
                </link-entity>
              </entity>
            </fetch>", CASE.Id);

            EntityCollection case_results = service.RetrieveMultiple(new FetchExpression(fetchXml));
            //tracingService.Trace("fetch has run");
            if (case_results.Entities.Count != 0)
            {
                foreach (var a in case_results.Entities)
                {
                    //if (a.Attributes.Contains("ai_parentsystemuserid"))
                    //{
                        tracingService.Trace("set manager id next");
                        var MANAGERID = (EntityReference)a.Attributes["parentsystemuserid"];
                        tracingService.Trace("manager id set");
                        AMOUT.Set(executionContext, MANAGERID);
                        throw new InvalidOperationException("Want to see trace");
                    //}
                }
            }
            tracingService.Trace("end ");
        }
        catch (Exception e)
        {
            throw new InvalidPluginExecutionException("Plugin - CaseAccountManagerManagerLookup - " + e.Message);
        }
        finally
        {
            throw new InvalidOperationException("Want to see trace");
        }
    }
}

2 个答案:

答案 0 :(得分:0)

尝试使用am.parentsystemuserid而不仅仅是parentystemuserid。

答案 1 :(得分:0)

你确定你传递的指南是否正确?

{8B8099A6-8B89-E411-883D-D89D676552A0}

这是我从出口获得的,但你正在写

8B8099A6-8B89-E411-883D-D89D676552A0

您还确定要检索的记录吗?链条是否包含数据?

区分&GT;联系 - &gt;帐户 - &gt;父用户 - &gt;父用户?