Przykład: łączenie formatek w usłudze personelu

W tym przykładzie pokazano, jak można połączyć formatkę, za pomocą której firma świadcząca usługi gastronomiczne może wyszukiwać dostawców.

Aby można było utworzyć łącznik przebiegający od formatki na diagramie usługi personelu, formatka musi zawierać widok formatki, który z kolei musi zawierać element sterujący uruchamiający zdarzenie graniczne. Dowolny widok formatki uruchamiający zdarzenie graniczne, który został dodany do formatki, może zostać wybrany jako zdarzenie graniczne, a następnie połączony jako takie zdarzenie w przepływie sekwencji.

Zdarzenia graniczne są określane przy użyciu ustawienia Może wywołać zdarzenie graniczne na karcie Przegląd w widoku formatki. Domyślnie zdarzenie graniczne jest uruchamiane przez standardowy element sterujący Przycisk.

W tym przykładzie pokazano, jak można skonfigurować formatkę, aby była wykonywana w pętli i aby przechodziła do końca usługi. W przypadku połączenia formatki w pętli z tą samą formatką, na przykład w usłudze wyszukiwania, w czasie wykonywania są odświeżane tylko dane wyświetlane na stronie (a nie cała strona). To przyczynia się do usprawnienia pracy użytkowników.
Wskazówka: Inicjowanie danych jest konieczne, gdy formatka wraca przy użyciu pętli do tej samej formatki po wykonaniu logiki (np. zadania skryptu). Jeśli logika, która jest wykonywana przed przekazaniem sterowania do formatki, spowoduje, że właściwość lub zmienna będzie niezainicjowana (będzie mieć wartość NULL), po wysłaniu formatki może wystąpić błąd wykonywania w usłudze personelu. Aby zapobiec występowaniu takich błędów wykonywania, można zainicjować zmienne przed powrotem do formatki przy użyciu pętli. Na przykład:
  • Jeśli istnieje zmienna quoteApprovers i jest używana tradycyjna usługa personelu, przed powrotem do formatki należy użyć następującego kodu w skrypcie serwera:
        if(!tw.local.quoteApprovers) {
    tw.local.quoteApprovers = new tw.object.listOf.toolkit.IBM.Employee();
    }
  • Jeśli istnieje zmienna quoteApprovers i jest używana usługa personelu po stronie klienta, przed powrotem do formatki należy użyć następującego kodu w skrypcie po stronie klienta:
    if(!tw.local.quoteApprovers) {
    tw.local.quoteApprovers = {};
    }
Zadania wstępne dla tego przykładu:
Przegląd czynności opisanych w tym przykładzie:

Otwórz usługę personelu Formularz dostawcy i wykonaj następujące kroki:
  1. Na karcie Zmienne dodaj następującą zmienną lokalną do danych wejściowych i wyjściowych:
    • supplier - jako Typ zmiennej wybierz obiekt biznesowy Dostawca.
  2. Tworzenie formatki Wysyłanie danych dostawcy
    1. Na karcie Diagram dodaj formatkę do kanwy.
      • Jeśli jest używana tradycyjna usługa personelu, przeciągnij formatkę na kanwę i nadaj jej nazwę Wysyłanie danych dostawcy.
      • Jeśli jest używana usługa personelu po stronie klienta, wybierz wygenerowaną formatkę i nadaj jej nazwę Wysyłanie danych dostawcy.
    2. Na karcie Formatki wybierz formatkę i przeciągnij sekcję pionową na kanwę.
    3. Przeciągnij widok Informacje o dostawcy z palety (w sekcji Bez znaczników) na kanwę. Zostaną otwarte właściwości widoku.
    4. W polu Powiązanie wybierz zmienną wejściową supplier (utworzoną w kroku 1).
    5. Przeciągnij element sterujący Przycisk z palety do sekcji pionowej i nadaj mu nazwę Wyszukiwanie dostawcy.
    6. Wybierz przycisk OK, który został wcześniej wygenerowany, i nadaj mu nazwę Wyślij.
  3. Skonfiguruj skrypt Wyszukiwanie dostawcy i przepływ sekwencji. Jeśli jest używana tradycyjna usługa personelu, skrypt Wyszukiwanie dostawcy jest skryptem serwera. Jeśli jest używana usługa personelu po stronie klienta, skrypt Wyszukiwanie dostawcy jest skryptem po stronie klienta.
    1. Na karcie Diagram przeciągnij komponent Skrypt na kanwę i nadaj mu nazwę Wyszukiwanie dostawcy.
    2. We właściwościach w sekcji Implementacja podaj skrypt (podobny do poniższego przykładu) dla funkcji wyszukiwania dostawcy:
      if (tw.local.supplier.ID == "1234") {
          tw.local.supplier.Name = "Restauracja Jana";
          tw.local.supplier.address = "1 jakaśUlica, jakieśMiasto, jakieśWojewództwo";
      } else if (tw.local.supplier.ID == "2345") {
          tw.local.supplier.Name = "Piekarnia Joanny";
          tw.local.supplier.address = "2 jakaśUlica, jakieśMiasto, jakieśWojewództwo";
      }
    3. Na diagramie połącz komponent Zdarzenie początkowe z formatką Wysyłanie danych dostawcy. Następnie połącz formatkę Wysyłanie danych dostawcy ze skryptem Wyszukiwanie dostawcy. Na koniec połącz skrypt z powrotem z formatką Wysyłanie danych dostawcy, aby utworzyć pętlę.
    4. Wybierz linię przebiegającą od formatki Wysyłanie danych dostawcy do skryptu Wyszukiwanie dostawcy. Zostaną otwarte właściwości linii.
    5. W polu Powiązanie stanu końcowego kliknij przycisk Wybierz, a następnie wybierz przycisk Wyszukiwanie dostawcy (utworzony w kroku 3).
    6. Połącz formatkę Wysyłanie danych klienta z komponentem Zdarzenie końcowe, a następnie wybierz linię połączenia. Zostaną otwarte właściwości linii.
    7. W polu Powiązanie stanu końcowego kliknij przycisk Wybierz, a następnie wybierz przycisk Wyślij (utworzony w kroku 2).
  4. Zapisz zmiany i uruchom usługę. Zostanie otwarte osobne okno przeglądarki WWW z wyświetloną formatką.
  5. Przetestuj opcje aplikacji.
    1. W polu Identyfikator wpisz wartość 1234 lub 2345, a następnie kliknij przycisk Wyszukiwanie dostawcy. Zostanie zwrócona nazwa i dane adresowe odpowiedniego dostawcy.
    2. Aby zakończyć proces, kliknij przycisk Wyślij. Usługa personelu jest zakończona.

Przykładowe artefakty

Przed rozpoczęciem wykonywania przykładu utwórz artefakty wymienione w poniższych tabelach.
Wskazówka: w przypadku właściwości, które nie są określone, zaakceptuj ustawienia domyślne.
Tabela 1. Obiekty danych biznesowych
Nazwa Parametry
Dostawca Identyfikator (String)

Nazwa (String)
Adres (String)

Tabela 2. Usługa Ajax
Nazwa Zawartość
Wyszukiwanie identyfikatora dostawcy Komponent Skrypt z dodanym skryptem na potrzeby opcji wyszukiwania, który jest podobny do poniższego przykładu:
tw.local.results = new tw.object.listOf.String();

Packages.java.lang.System.out.println("tw.local.text: " + tw.local.text);
Packages.java.lang.System.out.flush();

if (tw.local.text.charAt(0) == '1') {
    tw.local.results[0] = "1234";
} else if (tw.local.text.charAt(0) == '2') {
    tw.local.results[0] = "2345";
} else {/*

	*/
}
Tabela 3. Widoki formatek
Nazwa Zawartość
Informacje o dostawcy Elementy sterujące Tekst: Identyfikator dostawcy, Nazwa i Adres
  • Właściwości elementu Identyfikator dostawcy:
    • Powiązanie: Dostawca.Identyfikator
    • Włącz automatyczne uzupełnianie: Włączone
    • Usługa automatycznego uzupełniania: Wyszukiwanie identyfikatora dostawcy (usługa Ajax)
  • Właściwości elementu Nazwa:
    • Powiązanie: Dostawca.Nazwa
  • Właściwości elementu Adres:
    • Powiązanie: Dostawca.Adres

Tabela 4. Usługa personelu
Nazwa Właściwości
Formularz dostawcy Usługę personelu należy skonfigurować, wykonując kroki podane w tym przykładzie.