执行插件超过2分钟超时错误,如何办?

咱们都知道,默认状况下Dynamics 365执行的插件有2分钟的限制,若达到2分钟尚未执行完毕,会触发异常,相似以下:html

System.TimeoutException: Couldn’t complete execution of the custom activity *** plug-in within the 2-minute time limit.app

那我改到工做流行不行?若是改到自定义工做流活动,一样也有相似的限制,一个自定义工做流活动的执行时间不能超过2分钟,若超过了,会触发异常,和插件的异常是同样的。异步

若是碰到这种状况怎么办?fetch

如果工做流中有多个循环的话,考虑将这个循环拆出来,每一个循环的逻辑用一个异步工做流来作,这个异步工做流设置为仅仅支持手工触发,记得,必定要设置成支持手工触发。spa

而后这个循环体里面的就用调用工做流来代替,相似以下的代码,这样在不少状况下就能够绕过这个2分钟的限制。插件

var  fetchXml = @"<fetch version='1.0' mapping='logical' distinct='false' no-lock='true'>
  <entity name='workflow'>
    <attribute name='workflowid' />
    <filter type='and'>
      <condition attribute='type' operator='eq' value='1' />
      <condition attribute='category' operator='eq' value='0' />
      <condition attribute='name' operator='eq' value='{your workflow name}' />
      <condition attribute='statecode' operator='eq' value='1' />
    </filter>
  </entity>
</fetch>";
                var workflowEntities = orgSvc.RetrieveMultiple(new FetchExpression(fetchXml));
                if (workflowEntities.Entities.Count == 0)
                {
                    tracingService.Trace("Workflow does not exist or activated.");
                    return;
                }
                foreach (var item in scEntities.Entities)
                {
                    ExecuteWorkflowRequest req = new ExecuteWorkflowRequest()
                    {
                        EntityId = item.Id,
                        WorkflowId = workflowEntities.Entities[0].Id
                    };
                    orgSvc.Execute(req);
                }

本文来自:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_plugin_2_minutes_solution.htmlcode

相关文章
相关标签/搜索