2017-03-03 27 views
0

我的第一个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

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

获取案例数的最有效方式是使用FetchXml查询。一个例子见StackOverflow。您可以使用CRM Web界面中的高级查找来创建和下载您所需的查询。

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

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

相关问题