Adresowanie

Adresowanie jest obsługiwane we wszystkich widokach znajdujących się w bibliotece narzędziowej Interfejs użytkownika, w tym w widokach zagnieżdżonych w innych widokach, które zostały zdefiniowane na stronie Interfejs użytkownika.

Schemat adresowania jest hierarchiczną strukturą drzewa, której katalog główny został zdefiniowany jako / w najwyższym położeniu na wyświetlanej stronie. Struktura schematu adresowania jest podobna do struktury używanej w przypadku katalogu. W miarę ładowania strony są dodawane kolejne węzły drzewa.

Dostępne są dwa podstawowe typy węzłów: Kontener i Element. Węzły kontenerowe zawierają inne węzły, takie jak elementy, widoki i inne węzły kontenerowe.
Ograniczenie: Widoki znajdujące się w nieaktualnej bibliotece narzędziowej Formatki nie są adresowalne przy użyciu opisanego schematu adresowania.

Zwykle adresowanie jest używane w widokach interfejsu użytkownika wtedy, gdy istnieją funkcje wywoływane przez zdarzenia widoków lub formuły używane w niektórych widokach. Funkcje można podawać jako dane wstawiane, tak jak w bloku skryptu JavaScript niestandardowego kodu HTML na stronie lub tak jak w sekcji Wstawiany skrypt JavaScript we właściwościach Zachowanie widoku.

Style adresowania

Obsługiwane są style adresowania względnego oraz bezwzględnego. Jeśli odwołanie rozpoczyna się od znaku /, jest to odwołanie bezwzględne (np. rozpoczynające się od głównego poziomu drzewa widoku). Pominięcie / na początku ścieżki oznacza "from where I am". Użycie .. w odwołaniu powoduje powrót o poziom, tak jak w drzewie katalogów z plikami.

W formule odwołania są przetwarzane, począwszy od punktu odwołania pola, którego formuła jest ustawiana:
  • Odwołania do pól znajdujących się na tym samym poziomie co bieżące pole są wykonywane przy użyciu nazwy pola (bez znaku / na początku odwołania).
  • Pola o jednym poziomie mogą być przywoływane jako ../FieldOneLevelAboveMe.
  • Pola, które są dwoma poziomami powyżej, są przywoływane jako ../../FieldOneLevelAboveMe, itd.
  • W niektórych przypadkach może być wygodne adresowanie względne korzystające ze ścieżki ../.

Metody JavaScript do uzyskiwania dostępu do widoków

Z niestandardowego kodu HTML
Aby uzyskać dostęp do widoku w bloku JavaScript , należy użyć widoku globalnego strony i jego metody page.ui.get(ControlId path) . Na przykład: użytkownik ma widok Tekst o nazwie Text1 , a w celu sprawdzania poprawności ma mieć dostęp do niego w funkcji wywołanej z zdarzenia On click przycisku. Aby to zrobić, należy użyć kodu podobnego do poniższego przykładu:
var myTextField = page.ui.get("/Text1");
myTextField.getValue() // returns the value in the text field
myTextField.focus() // would set the focus to the text field.
Ze wstawianego kodu JavaScript widoku
Aby uzyskać dostęp do widoku z funkcji zawartej w widoku kontenerowym, należy użyć jednej z następującej opcji:
bpmEventHelper.ui.getView(ControlId [, thisview])
thisview.ui.get(ControlId)
Gdzie: zmienna thisview została zdefiniowana w widoku kontenerowym.
Na przykład można powiedzieć, że zdefiniowano widok kontenera, który zawiera dwa widoki o nazwach Text1 i Select1 oraz, w celu sprawdzania poprawności, dostęp do dwóch zagnieżdżonych widoków z funkcji validateControls wywołanej z zdarzenia On click przycisku w widoku nadrzędnym. Aby uzyskać dostęp do widoków, w sekcji wstawianego kodu JavaScript właściwości Zachowanie widoku kontenera należy umieścić kod podobny do kodu z następującego przykładu:
var thisview = this; // required

this.validateControls = function(button)
{
    var textControl = bpmEventHelper.ui.getView("Text1", thisview);
    var selectControl =  thisview.ui.get("Select1");
    textControl.getValue(); // returns the value of the SPARK control in 
    this coach view with the ControlId "Text1"
    selectControl.getSelectedItem(); // returns the selected value in the 
    SPARK control in this coach view with the ControlId "Select1"
}
		
Na przykład, aby uzyskać dostęp do widoku tekstowego FirstName w widoku Address , należy go rozwiązać, używając adresu bezwzględnego, w następujący sposób:
"/Address/FirstName" or "${Address}.ui.get('FirstName')"
W formułach
W formułach można odwoływać się do widoków przy użyciu następującej składni:
  • ${FieldName} odnosi się do widoku, którego control id = FieldName.
  • @{FieldName} odnosi się do wartości widoku, którego control id = FieldName.
  • ${FieldName).getValue() i @{FieldName} są równoważne.

Nieadresowalne widoki układu

Widoki, które są używane wyłącznie na potrzeby układu, należy pomijać w adresie. Na przykład można rozwiązać problem z widokiem FirstName , który jest zagnieżdżony w widoku VerticalLayout , używając adresu /FirstName , a nie /VerticalLayout/FirstName.
Wskazówka: Aby wykluczyć nieadresowalny niestandardowy widok kontenera z adresu, należy ustawić następującą właściwość na wartość true w funkcji load widoku niestandardowego w wstawionej sekcji JavaScript w sekcji Zachowanie:
this.constructor.prototype.IS_ADDRESS_INVISIBLE = true;

Adresowalne widoki niestandardowe

Podczas tworzenia widoku niestandardowego, który ma być widokiem adresowalnym, należy wywołać następującą funkcję w metodzie load:
bpmEventHelper.ui.loadView(this)
Jeśli widokiem niestandardowym jest pole treści, zamiast tego należy wywołać następującą funkcję:
bpmEventHelper.ui.loadContainer(this)
W funkcji unload widoku należy wywołać odpowiednią funkcję:
bpmEventHelper.ui.unloadView(this)
LUB
bpmEventHelper.ui.unloadContainer(this)

Odwołania do równorzędnych pól w tabelach

Jeśli w tabeli są używane formuły, można uzyskać dostęp do pól w wierszu my przy użyciu składni, w której po nazwie pola występuje znak =. Na przykład można powiedzieć, że zdefiniowano widoki Quantity (Integer), Cost (Decimal) i Total (Decimal) w tabeli. Wartość widoku Total można określić, korzystając z następującego wzoru:
@{Quantity=} * @{Cost=}
Należy zauważyć, że powiązanie danych nie jest wymagane dla widoku Total , co oznacza, że w tabeli nie jest wymagane żadne pole danych.

Funkcje programu pomocy

Na przykład istnieje możliwość użycia funkcji programu pomocy getParent i getSibling w przestrzeni nazw bpmext.ui.View. W tym przykładzie łatwo można uzyskać widok kontenerowy lub widok równorzędny bez znajomości całej hierarchii.

Na przykład można powiedzieć, że istnieje widok kontenera o nazwie CV, który zawiera dwa widoki o nazwach Button1 i Button2. Zakładając, że btn1View jest obiektem bpmext.ui.View dla produktu Button1, można uzyskać dostęp do produktu CV przy użyciu produktu btn1View.ui.get(“CV”) lub btn1View.ui.getParent();. Produkt Button2 można uzyskać za pomocą programu bt1View.ui.getSibling(“Button2”).