2017-03-28 3 views
-2

업데이트 메시지에 등록 된 4 개의 플러그인이있는 엔티티가 있습니다.CRM 2016 플러그인이 일관성없이 실행 됨

두 개의 플러그인이 사전 작업 파이프 라인 단계에 등록되고 두 개의 플러그인이 사후 작업 파이프 라인 단계에 비동기 적으로 등록됩니다. 네 개의 플러그인 모두 다른 필터링 속성을가집니다.

각 플러그인은 Execute 메서드를 입력하자마자 컨텍스트를 xml 파일로 serialize합니다. 이것은 우리가 가지고있는 기본 클래스에 구워진 기능이며 실패 할 것이라고 믿을 이유가 없습니다.

업데이트에 대해 동일한 레코드를 테스트 할 때 일관성없는 결과가 발생합니다.

때때로 사전 작업 파이프 라인 플러그인 만 실행되고 때로는 4 개의 플러그인 모두가 실행됩니다.

이상한 점은 내가 테스트하고있는 레코드의 가치로 네 개의 플러그인 모두 해고되었다는 것을 알 수 있다는 것입니다. 그러나 대부분의 경우 직렬화 된 컨텍스트 파일이 생성되지 않습니다.

비동기 플러그인을 모두 동기식으로 변경 한 것으로 실험 했으므로 일시적으로 문제가 해결 된 것 같습니다. 또한 pre-op 플러그인을 비활성화하고 비동기 화재 만시키는 방법을 실험했습니다.

비슷한 문제가있는 사람이 있습니까?

+0

이 문제는 보지 못했습니다. 고려해야 할 사항 중 하나는 컨텍스트 아이템을 공유하기 때문에 기본 클래스의 구성에 따라 약간의 캐싱이 발생할 수 있습니다 – jasonscript

+0

https://msdn.microsoft.com/en-us/library를 참조하십시오. /gg328263.aspx – jasonscript

+0

나는 이것이 플러그인을 디버깅함으로써 만 대답 될 수 있다고 생각한다. – Alex

답변

0

플러그인 디버깅에 오신 것을 환영합니다. 가장 좋은 방법으로, 나는 항상 하나의 이벤트와 하나의 엔티티에 대해 하나의 플러그인을 갖도록 제안합니다. 그렇게하면 디버깅이 더 간단 해지고 더 복잡한 시나리오를 처리 할 수 ​​있습니다. 플러그인 내에서 업데이트 된 필드를 확인하기 위해 대상을 확인합니다.

일치하지 않는 결과는 비동기 단계로 인한 것일 수 있습니다. 트리거되는 순서를 구성 했습니까? 기본적으로 1에 있습니다. 이는 무작위를 의미합니다.