Pergunta

eu recompilar uma biblioteca de CRM 3.0 textos explicativos e implantou-los ao meu exemplo CRM 4.0. Um dos meu texto explicativo PostUpdate chama service.Update (). Isso está causando o método de atualização para disparar várias vezes. Ele eventualmente parar devido a erros de tempo limite. Isso não acontece quando essas chamadas são usados ??com CRM 3.0.

A assinatura do método é o seguinte para o ponto de entrada para este código personalizado.

public override void PostUpdate(CalloutUserContext userContext, CalloutEntityContext entityContext, string preImageEntityXml, string postImageEntityXml)
Foi útil?

Solução

Um dos atributos na IPluginExecutionContext é uma profundidade. Isto indica como 'profunda' no plugin 'Call-stack' seu plugin está em execução. Quando você pressiona salvar no Formulário de CRM que você comece a uma profundidade de 1. Cada vez que sua atualização pós chama atualização, a profundidade é maior.

Você vai encontrar algumas pessoas vão apenas verificar que a profundidade é igual a 1 antes de executar a sua lógica plugin. Isso não é direito de todos, no entanto. Se um fluxo de trabalho eram para atualizar esta entidade, então a profundidade seria 2 (fluxo de trabalho foi de 1, agora sua atualização é 2).

Quando a profundidade atinge 8, CRM pára a execução chamando-recursiva. Eu não tenho certeza se você está realmente atingindo um tempo limite ou este erro. Tem sido um longo tempo desde que eu vi o erro eles jogam.

Nós desenvolvemos código personalizado em toda a nossa solução em que temos de verificar se há recursão. Não estou em posição de compartilhar tudo isso, mas você pode ter a idéia se você gosta dela.

Outro casal de idéias é adicionar um atributo personalizado para sua entidade. Não colocá-lo no formulário. Normalmente, esse atributo não existiria na sua bolsa de propriedade de atualização. Quando você chama atualização do código que deve curto-circuito sua atualização de plug-in da próxima vez, definir o atributo. Se o atributo é definido, você faria curto-circuito e não processar o plugin.

Espero que isso ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top