我的第一个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。但我想检查该申请人和该事件中存在多少案例。我该怎么办呢?
答案 0 :(得分:0)
您希望自定义工作流活动返回计数,因此将OutArgument<bool> Result
更改为OutArgument<int> Result
。
获取案例数量的最有效方法是使用FetchXml查询。有关示例,请参阅StackOverflow。您可以使用CRM Web界面中的“高级查找”来创建和下载所需的查询。
另一种方法是使用QueryExpression
查询并计算返回的记录数。
将计数分配给OutArgument<int>
结果。