Sposób przekazywania zmiennych między komponentami procesu w czasie wykonywania

Użycie zmiennych pozwala przekazywać dane biznesowe między komponentami aplikacji procesu w czasie wykonywania. W zależności od zaangażowanych komponentów dane są przekazywane przez wartość lub przez referencję.

Zmienne przechwytują dane biznesowe. Jeśli dane biznesowe mają typ prosty (na przykład łańcuch), wówczas zmienna zawiera wartość danych biznesowych. Jeśli dane biznesowe są typu złożonego, wówczas zmienna jest referencją do obiektu zawierającego wiele wartości.

Tabela 1. Sposób przekazywania zmiennych
Zadzwoń Przekazywane przez
Od Do Typ prosty Właściwość sprawy, złożony obiekt biznesowy lub współużytkowany obiekt biznesowy
Działanie Proces połączony Wartość Referencja (złożony obiekt biznesowy, współużytkowany obiekt biznesowy)
Działanie Usługa personelu po stronie klienta Wartość Wartość (złożony obiekt biznesowy)

Wartość z referencją (współużytkowany obiekt biznesowy)

Działanie Inna usługa Wartość Wartość (złożony obiekt biznesowy)

Wartość z referencją (współużytkowany obiekt biznesowy)

Usługa personelu po stronie klienta Usługa zagnieżdżona Wartość Wartość (właściwość sprawy, złożony obiekt biznesowy)

Wartość z referencją (współużytkowany obiekt biznesowy)

Inna usługa Usługa zagnieżdżona Wartość Wartość (właściwość sprawy)

Referencja (złożony obiekt biznesowy, współużytkowany obiekt biznesowy)

Procesy i usługi mają odwołania do ich zmiennych. Gdy zmienne złożone są przekazywane z procesu do usługi, głęboka kopia tej zmiennej jest przesyłana z obszaru procesu do obszaru usługi, a usługa pobiera odwołanie do kopii. Podobnie, gdy zmienna złożona jest przekazywana z usługi do procesu, głęboka kopia zmiennej jest przesyłana z obszaru usługi do procesu, a proces pobiera odwołanie do kopii.

Gdy usługa zmienia wartości istniejącej zmiennej złożonej, zmienione wartości są przekazywane z powrotem do procesu, zastępując całą zmienną złożoną głęboką kopią z usługi. Jeśli zastąpiona zmienna została pierwotnie przekazana przez wartość z procesu zewnętrznego, procesy wewnętrzne i zewnętrzne nie mają już dostępu do tej samej zmiennej. Dlatego zmiany wprowadzone w procesie wewnętrznym nie są odzwierciedlane w procesie zewnętrznym.

Zmienne przekazywane przez referencję
Większość interakcji danych w procesie jest przekazywana przez referencję (z procesu do przetworzenia lub z usługi do usługi). Dlatego też w większości przypadków ten sam obiekt jest przekazywany z położenia do położenia. Zmiany tego obiektu występują na wszystkich poziomach.
Zmienne przekazywane przez wartość
Zmienne między procesami i usługami są przekazywane przez wartość. Gdy zmienna jest przekazywana przez wartość z procesu do usługi bazowej, zmiany wprowadzone do zmiennej w usłudze nie są widoczne w procesie wywołującej. Aby zmienne były widoczne dla elementu wywołującego, konieczne jest przekazanie ich z powrotem do niego jako danych wyjściowych.
Zmienne przekazywane przez wartość z referencją
W przypadku zmiennych, które mają być przekazywane przez wartość z referencją, synchronizację obiektów biznesowych należy ustawić za pomocą metody save lub ustawienia Automatycznie synchronizuj współużytkowane obiekty biznesowe w sekcji Przegląd dla procesu lub usługi. Jeśli zmienna jest zdefiniowana jako wygenerowana przez system zmienna folderu sprawy lub jako typ współużytkowanego obiektu biznesowego, jej wartości są odświeżane ze składnicy danych.

Współużytkowane obiekty biznesowe są przekazywane przez wartość z referencją. To oznacza, że wprowadzane zmiany są zapisywane i propagowane do innych instancji działających z tymi samymi danymi. Ustawienie Automatycznie synchronizuj współużytkowane obiekty biznesowe musi być włączone w procesie lub usłudze, aby możliwe było automatyczne zapisywanie i synchronizowanie danych.

Obiekt współużytkowany może być na przykład przekazywany przez wartość z referencją z procesu do dwóch różnych usług. Proces i usługi zawierają osobne kopie obiektu biznesowego. Kiedy pierwsza usługa zostanie zakończona, wartości obiektu współużytkowanego zostaną automatycznie utrwalone w składnicy danych. Podczas uruchamiania drugiej usługi wartości obiektu współużytkowanego są automatycznie ładowane ze składnicy danych. Zatem mimo tego, że proces i dwie usługi odwołują się do oddzielnych obiektów, wartości tych obiektów są aktualizowane przez składnicę danych i usługi działają w oparciu o bieżące dane.

Więcej informacji na temat współużytkowanych obiektów biznesowych zawiera sekcja Tworzenie obiektów biznesowych.

Przykład
Proces zewnętrzny ma referencję tw.local.pair, która wskazuje obiekt NameValuePair NVP1. Proces zewnętrzny przekazuje referencję .pair do procesu wewnętrznego:
Outer process -> NVP1
Inner process -> NVP1
Zmiany jednego z tych procesów mają wpływ na drugi proces.
Proces wewnętrzny przekazuje referencję .pair do usługi. Wykonywana jest kopia obiektu NVP1NVP2, a do usługi przekazywana jest referencja do kopii.
Outer process -> NVP1
Inner process -> NVP1
Service -> NVP2
Usługa kończy działanie i wyprowadza referencję .pair odwzorowaną z powrotem na zmienną referencji .pair procesu wewnętrznego. Tworzona jest kopia obiektu NVP2NVP3, a do procesu wewnętrznego jest przekazywana referencja.
Outer process -> NVP1
Inner process -> NVP3
Zmiany dokonane w obiekcie NVP3 nie są odzwierciedlane w obiekcie NVP1.

Aby usługa modyfikowała zmienną najwyższego poziomu w procesie, należy użyć osadzonego skryptu serwera do przechowania wyniku usługi w zmiennej tymczasowej i skopiować elementy do oryginalnej zmiennej lub współużytkowanego obiektu biznesowego. Nadrzędny proces nie jest aktualizowany do czasu zakończenia działania procesu potomnego.

Wytyczne dotyczące przekazywania zmiennych

Z powodu sposobu obsługi zmiennych w czasie wykonywania należy postępować zgodnie z następującymi wytycznymi:

  • Jeśli zmienna jest typu prostego, należy ją zadeklarować jako wejściową i wyjściową w połączonych procesach, usługach i usługach zagnieżdżonych.
  • Jeśli zmienna wejściowa jest zmienną typu złożonego i jest przekazywana z procesu do usługi, zostanie przekazana jako wartość. Aby została zwrócona zaktualizowana wartość, należy również zadeklarować ją jako zmienną wyjściową. Jeśli typ złożony jest współużytkowanym obiektem biznesowym, nie trzeba zwracać go jako typu wyjściowego, ponieważ aktualizacje wprowadzane w usłudze staną się widoczne dla każdego, kto korzysta ze współużytkowanego obiektu biznesowego.
  • Zawsze należy używać tej samej nazwy i tego samego typu dla zbioru zmiennych wejściowych i wyjściowych związanych z danymi przekazywanymi, przetwarzanymi i zwracanymi.