Wywołaj transakcje

Wywołania transakcji służą do wywoływania co najmniej 1 polecenia klastra w węźle docelowym. Jest to podobne do zdalnych wywołań procedur wykonywanych w odniesieniu do polecenia zdefiniowanego w klastrze.

Podobnie jak w przypadku transakcji zapisu, transakcje wywołania obsługują transakcje z określonym i nieokreślonym czasem. Więcej informacji o transakcjach czasowych znajdziesz w sekcji Działania czasowe i bez ograniczeń czasowych.

Untimed Invoke Transaction

Sekwencja operacji w przypadku transakcji Untimed Invoke Transaction
Rysunek 1. Wywołanie transakcji bez limitu czasu

Wywołaj działanie dotyczące prośby

Kierunek: inicjator –> cel

Podobnie jak w przypadku działań Read Request Action i Write Request Action, w tym działaniu inicjator przekazuje do elementu docelowego:

  • Invoke Requests (Wywołaj żądania): lista ścieżek do poleceń klastra oraz argumentów opcjonalnych do poleceń, nazwanych Command Fields (Pola poleceń).
  • Timed Request (Żądanie czasowe): flaga wskazująca, czy to działanie jest częścią transakcji Timed Invoke.
  • Suppress Response (Pomiń odpowiedź): flaga wskazująca, czy należy pominąć działanie Invoke Response Action (Wywołaj działanie odpowiedzi).
  • Identyfikator interakcji: liczba całkowita używana do dopasowywania działania Invoke Request Action do działania Invoke Response Action.

Wywołaj działanie w odpowiedzi

Kierunek: Target -> Initiator

Po otrzymaniu działania Invoke Request Target zakończy transakcję za pomocą działania Invoke Response, które zawiera:

  • Invoke Responses (Odpowiedzi na wywołanie): lista odpowiedzi na polecenia lub stan każdego wysłanego żądania wywołania.
  • Identyfikator interakcji: liczba całkowita używana do dopasowywania działania Invoke Response Action do działania Invoke Request Action.

Ograniczenia wywoływania bez limitu czasu

Działanie Invoke Request Action może być grupowe, ale w tym przypadku musi być ustawiona flaga Suppress Response. W przeciwnym razie sieć może zostać zalana jednoczesnymi odpowiedziami od wszystkich członków grupy.

Aby włączyć to zachowanie, ścieżka użyta na liście Wywołaj żądania może zawierać grupy lub symbole wieloznaczne, ale tylko w polu Punkt końcowy. Co więcej, jeśli działanie jest grupowe, transakcja kończy się bez odpowiedzi.

Transakcje wywoływane w określonym czasie

Podobnie jak w przypadku transakcji Timed Write Transactions, transakcje Timed Invoke Transactions również rozpoczynają się od działania Timed Request Action.

Sekwencja operacji w przypadku transakcji wywołania czasowego
Rysunek 2. Transakcja wywołania czasowego

Działanie związane z żądaniem ograniczonym czasowo

Kierunek: inicjator –> cel

Inicjator rozpoczyna transakcję, wysyłając to działanie, które zawiera:

  • Limit czasu: ile milisekund może pozostać otwarta ta transakcja. W tym okresie następne działanie wysłane przez inicjatora będzie uznawane za prawidłowe.

Po otrzymaniu działania Timed Request Action urządzenie docelowe musi potwierdzić je za pomocą działania Status Response Action. Gdy inicjator otrzyma działanie Status Response Action (Odpowiedź o stanie) informujące o braku błędów, wyśle działanie Invoke Request Action (Wywołaj działanie żądania).

Wywołaj działanie dotyczące prośby

Tak samo jak w przypadku opisanego wcześniej działania Invoke Request Action (Wywołaj działanie żądania).

Wywołaj działanie w odpowiedzi

Tak samo jak w przypadku opisanego wcześniej działania Invoke Response Action.

Ograniczenia wywoływania w określonym czasie

Wszystkie polecenia wywołania można wywoływać w przypadku interakcji czasowej. Działania Timed Request Action, Invoke Request Action i Invoke Response Action są Unicast-only, więc nie można ich używać jako groupcast w transakcjach Timed Invoke.

Działanie Invoke Request Action obsługuje używanie ścieżek z grupami, a także symboli wieloznacznych, ale działanie Invoke Response Action nie obsługuje symboli wieloznacznych.