检索特定事件的给定联系人的所有案例

时间:2017-03-03 00:49:37

标签: c# dynamics-crm workflow dynamics-crm-online

我的第一个CRM 2016自定义工作流程和我被困住了。 我想检索同一事件的特定联系人的所有创建案例的计数。将计数放在输出变量(参数)中。我的代码如下,但我不知道如何继续。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xrm.Sdk;
using System.Activities;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Xrm.Sdk.Workflow;
using System.Runtime.Serialization;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;

namespace CRM.Workflows
{
    public class Workflow_CheckExistingCase : CodeActivity
    {
        #region
        [Input("ApplicantID")]
        [ReferenceTarget("contact")]
        public InArgument<EntityReference> ApplicantID { get; set; }

        [Input("eventID")]
        [ReferenceTarget("custom_event")]
        public InArgument<EntityReference> eventID { get; set; }

        [Output("Result")]
        public OutArgument<bool> Result { get; set; }
        #endregion

        protected override void Execute(CodeActivityContext executionContext)
        {

            var context = executionContext.GetExtension<IWorkflowContext>();
            var serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
            ITracingService tracingService = executionContext.GetExtension<ITracingService>();
            var service = serviceFactory.CreateOrganizationService(context.UserId);

            try
            {
                EntityReference Applicant_ID = ApplicantID.Get<EntityReference>(executionContext);
                EntityReference event_ID = eventID.Get<EntityReference>(executionContext);

                var Did = event_ID.Id;
                var Aid = Applicant_ID.Id;

            }

            catch (Exception ex)
            {
                tracingService.Trace("Error was created in the workflow:{0}", ex.Message);
                Result.Set(executionContext, "Fail");
                //throw new InvalidPluginExecutionException(ex.Message);
            }
        }

    }

}

以上代码可帮助我检索申请人ID和事件ID。但我想检查该申请人和该事件中存在多少案例。我该怎么办呢?

1 个答案:

答案 0 :(得分:0)

您希望自定义工作流活动返回计数,因此将OutArgument<bool> Result更改为OutArgument<int> Result

获取案例数量的最有效方法是使用FetchXml查询。有关示例,请参阅StackOverflow。您可以使用CRM Web界面中的“高级查找”来创建和下载所需的查询。

另一种方法是使用QueryExpression查询并计算返回的记录数。

将计数分配给OutArgument<int>结果。