2012-02-13 12 views
8

Mam niestandardowy przepływ pracy w CRM 2011, który jest uruchamiany ręcznie w stosunku do rekordów jednostek niestandardowych. Po wybraniu pojedynczego rekordu do przetworzenia przepływ pracy zawsze kończy się sukcesem. Jednak po wybraniu więcej niż jednego rekordu co najmniej jeden zakończy się niepowodzeniem. Przedstawione błędy wydają się różnić w zależności od próby, mimo że używane są te same dane.Błąd CRM 2011 Workflow "Nieprawidłowy wskaźnik"

Błędy jakie napotykane do tej pory są:

  • ValidateOpen - Wystąpił rozmieszczone CrmDbConnection kiedy nie powinno wyrzucać Nie można utworzyć SqlExecutionContext z innego
  • SqlExecutionContext na którym OnBeginRequest nie został nazwany

A po ponownym uruchomieniu serwera DB:

  • nieprawidłowy wskaźnik

Wszystkie one występują, gdy wywołanie metody Aktualizacja IOrganizationService. Błąd Invalid Pointer wydaje się być częstszym błędem od czasu restartu serwera DB (sugerowano mi, że może to być problem z nadmiernie obciążonym serwerem DB). Usunąłem także wszelkie zaległości z asynchronicznych zadań, na wypadek gdyby to był problem, ale nie wywarło to żadnego efektu.

Czy ktoś wie, co oznacza ten błąd, dlaczego mogę go uzyskać lub jak mogę obejść problem?

Wielkie dzięki!

Odpowiedz

7

Wygląda na to, że ten komunikat o błędzie jest okrężnym powiedzeniem: "próbował otworzyć inne połączenie z CRM, gdy poprzedni był otwarty", a przyczyna z powodu próbuje to zrobić jest bardzo istotna dla Fakt ten zawodzi tylko podczas przetwarzania więcej niż jednego rekordu.

referencyjny ten blog:

Wydaje się, że gdy przepływ pracy jest uruchamiany na wielu rekordów, wykorzystuje tę samą instancję klasy, co oznacza, że ​​zmienne na poziomie klasy nie zostaną ponownie instancja między egzekucji. Tak więc, gdy kolejne egzekucje przychodzą do kodu, który ustawia zmienną usługi na poziomie klasy na instancję usługi IOrganisation, stwierdza ona, że ​​zmienne mają już jeden i że są otwarte.

Rozwiązanie, które najłatwiej było wdrożyć, aby mieć zmienną usługi w ramach funkcji Execute, a nie na poziomie klasy. To rozwiązało problem wszędzie, od kiedy go wypróbowałem.

+1

To był ten sam problem, który miałem, a twoje rozwiązanie także rozwiązało moje. –

+0

poprawka klucza: 'implement it [IOrganizationService] w ramach funkcji Execute (i przekazuje ją do kodu zależnego), a nie na poziomie klasy' – mmcrae

Powiązane problemy