netsuite
Przegląd typów skryptów
Szukaj…
Wprowadzenie
Dostosowania SuiteScript tworzy się za pomocą systemu sterowanego zdarzeniami. Definiujesz różne typy rekordów skryptów, z których każdy ma swój własny unikalny zestaw zdarzeń, aw swoim pliku źródłowym definiujesz funkcje, które będą wywoływane w celu obsługi tych zdarzeń w momencie ich wystąpienia.
Skrypty są jednym z podstawowych składników, z którymi będziesz projektować i budować swoje aplikacje. Celem tego artykułu jest jedynie zapoznanie się z dostępnymi rodzajami skryptów i zdarzeniami.
Skrypt klienta
Skrypt klienta jest jednym z najczęściej używanych i złożonych typów skryptów dostępnych dla Ciebie. Jak sama nazwa wskazuje, skrypt klienta działa w przeglądarce, tj. Po stronie klienta. Jest to jedyny typ skryptu, który działa po stronie klienta; wszystkie pozostałe będą wykonywane po stronie serwera NetSuite.
Podstawowym zastosowaniem Skryptu klienta jest reagowanie na interakcje użytkownika za pomocą formularzy rekordów w interfejsie użytkownika NetSuite.
Gdy tylko użytkownik załaduje formularz rekordu w trybie edycji, pageInit
jest zdarzenie pageInit
, którego możemy użyć do uruchomienia kodu podczas inicjalizacji formularza, zanim użytkownik będzie mógł z nim współdziałać.
Za każdym razem, gdy użytkownik zmieni dowolne pole w formularzu, wywoła się seria zdarzeń:
-
validateField
zdarzenievalidateField
, które pozwala nam zweryfikować wartość, którą użytkownik próbuje wprowadzić w polu. Możemy to wykorzystać, aby zaakceptować lub zapobiec zmianie. - Następnie
fieldChanged
zdarzeniefieldChanged
, które pozwala nam zareagować na nową wartość w polu. - Wreszcie zdarzenie
postSourcing
uruchamiane po tym, jak wszystkie pola zależne równieżpostSourcing
swoje wartości Dzięki temu możemy zareagować na zmianę i upewnić się, że pracujemy ze wszystkimi poprawnymi danymi.
Ta seria zdarzeń jest uruchamiana bez względu na to, czy użytkownik zmienia pole treści, czy pole podlisty.
Gdy użytkownik wprowadza zmiany w liniach listy podrzędnej, zostanie uruchomiona kolejna seria zdarzeń:
- Zdarzenie
lineInit
jest uruchamiane za każdym razem, gdy użytkownik początkowo wybierze nową lub istniejącą linię, zanim będzie mógł dokonać zmian w polach linii. - Za każdym razem, gdy użytkownik kliknie przycisk Dodaj , aby dodać nowy wiersz, uruchamiane jest zdarzenie
validateLine
, które pozwala nam sprawdzić, czy cały wiersz jest prawidłowy i czy można go dodać do rekordu. - Ilekroć użytkownik kliknie przycisk Wstaw , aby dodać nowy wiersz powyżej istniejącego, uruchamiane jest zdarzenie
validateInsert
, które działa dokładnie tak samo, jak zdarzenievalidateLine
. - Podobnie, ilekroć użytkownik próbuje usunąć linię, uruchamiana jest funkcja
validateDelete
która pozwala albo zezwolić na usunięcie linii, albo ją odmówić. - [SuiteScript 1.0 tylko] Wreszcie, po odpowiednim wydarzeniem walidacja powiedzie się, jeśli zmiana na linii dokonuje również zmiany do łącznej kwoty transakcji, a następnie
recalc
zdarzenie jest zwolniony, który pozwala nam reagować na zmiany w ilości naszych transakcja. - [Tylko SuiteScript 2.0] Wreszcie, po
sublistChanged
zdarzeniu sprawdzającym poprawność,sublistChanged
jest zdarzeniesublistChanged
, aby umożliwić nam zareagowanie na zakończoną zmianę wiersza.
Wreszcie, gdy użytkownik kliknie przycisk Zapisz na rekordzie, saveRecord
jest zdarzenie saveRecord
, które pozwala nam sprawdzić, czy rekord jest prawidłowy i czy można go zapisać. Możemy albo zapobiec zapisaniu, albo pozwolić, aby kontynuowało to zdarzenie.
Skrypt klienta ma zdecydowanie najwięcej zdarzeń dowolnego typu skryptu i najbardziej złożoną relację między tymi zdarzeniami.
Skrypt zdarzenia użytkownika
Skrypt klienta jest ściśle powiązany ze skryptem zdarzenia użytkownika. Zdarzenia tego typu skryptu są ponownie uruchamiane, gdy rekord jest ładowany lub zapisywany, ale zamiast tego działa po stronie serwera. W związku z tym nie można go użyć do natychmiastowej reakcji na zmiany w polu, ale nie ogranicza się on tylko do użytkowników wchodzących w interakcję z rekordem w formularzu.
Skrypty zdarzeń użytkownika będą uruchamiane bez względu na to, skąd pochodzi żądanie ładowania lub wysyłania, niezależnie od tego, czy jest to użytkownik pracujący w interfejsie użytkownika, integracja innej firmy, czy inny wewnętrzny skrypt wysyłający żądanie.
Ilekroć proces lub użytkownik próbuje odczytać rekord z bazy danych, wyzwalane jest zdarzenie beforeLoad
zdarzenia użytkownika. Możemy to wykorzystać do wstępnego przetwarzania danych, ustawienia wartości domyślnych lub manipulowania formularzem interfejsu użytkownika, zanim użytkownik go zobaczy.
Gdy proces lub użytkownik spróbuje przesłać rekord do bazy danych, niezależnie od tego, czy jest to utworzenie nowego rekordu, edycja istniejącego rekordu, czy usunięcie rekordu, następuje następująca sekwencja:
- Po pierwsze, zanim żądanie faktycznie
beforeSubmit
do bazy danych, zostaniebeforeSubmit
zdarzeniebeforeSubmit
. Możemy wykorzystać to zdarzenie na przykład do wyczyszczenia rekordu, zanim znajdzie się on w bazie danych. - Żądanie jest wysyłane do bazy danych, a rekord jest odpowiednio tworzony / modyfikowany / usuwany.
- Po zakończeniu przetwarzania bazy danych
afterSubmit
zdarzenieafterSubmit
. Możemy wykorzystać to wydarzenie na przykład do wysyłania powiadomień e-mail o zmianach lub do synchronizacji ze zintegrowanymi systemami innych firm.
Możesz także obejrzeć tę serię filmów, które pomagają w wizualizacji wydarzeń tego typu skryptów.
Skrypty Zaplanowane i Mapuj / Zmniejsz
Istnieją dwa rodzaje skryptów, które możemy wykorzystać do uruchamiania przetwarzania w tle w określonych, regularnych odstępach czasu; są to skrypty Zaplanowane i Mapuj / Zmniejsz . Zauważ, że typ skryptu Mapuj / Zmniejsz jest dostępny tylko w SuiteScript 2.0. Zaplanowany skrypt jest dostępny zarówno dla wersji 1.0, jak i 2.0.
Zaplanowany skrypt ma tylko jedno zdarzenie execute
, które jest uruchamiane w dowolnym zdefiniowanym harmonogramie. Na przykład możesz chcieć uruchomić skrypt nocny, który stosuje płatności do faktur, lub skrypt godzinny, który synchronizuje dane z systemem zewnętrznym. Kiedy upłynie przedział czasu, NetSuite uruchamia to zdarzenie execute
w skrypcie Zaplanowanego.
Skrypt Map / Reduce działa podobnie, ale po uruchomieniu uruchamia przetwarzanie na cztery odrębne fazy:
- Faza
getInputData
polega na zebraniu wszystkich danych wejściowych potrzebnych do ukończenia procesu biznesowego. Możesz wykorzystać tę fazę do wyszukiwania, odczytywania rekordów i pakowania danych w odszyfrowalną strukturę danych. - NetSuite automatycznie przekazuje wyniki fazy
getInputData
do drugiej fazy, zwanejmap
. Ta faza odpowiada za logiczne grupowanie danych wejściowych w celu ich przetworzenia. Na przykład, jeśli stosujesz płatności do faktur, możesz najpierw zgrupować faktury według klienta. - Wyniki fazy
map
są następnie przekazywane do fazyreduce
, czyli tam, gdzie ma miejsce faktyczne przetwarzanie. W tym miejscu, zgodnie z naszym przykładem, faktycznie zastosujesz Płatności do faktur. - Na koniec wywoływana jest faza
summary
która zawiera dane dotyczące wyników całego przetwarzania w poprzednich trzech fazach. Możesz użyć tego do generowania raportów lub wysyłania wiadomości e-mail o zakończeniu przetwarzania.
Główną zaletą skryptu Map / Reduce jest to, że NetSuite automatycznie równolegle przetwarza przetwarzanie w wielu kolejkach, jeśli są dostępne.
Oba te typy skryptów mają wyjątkowo duży limit zarządzania, więc można ich również używać do masowego przetwarzania lub ogólnie długotrwałych procesów w tle.
Najkrótszy interwał, który można skonfigurować dla każdego z tych typów skryptów, co 15 minut.
Oba typy skryptów mogą być wywoływane na żądanie przez użytkowników lub w razie potrzeby przez inne skrypty.
Skrypty suitelet i portletów
Często będziemy chcieli budować niestandardowe strony interfejsu użytkownika w NetSuite; wejdź do Suitelet. Skrypt Suitelet jest przeznaczony do budowania wewnętrznych, niestandardowych stron interfejsu użytkownika. Strony mogą mieć dowolny format HTML lub mogą wykorzystywać interfejsy API NetSuite UI Builder do konstruowania formularzy zgodnych z wyglądem i stylem NetSuite.
Po wdrożeniu Suitelet otrzymuje swój własny unikalny adres URL. Suitelet ma wówczas pojedyncze zdarzenie render
, które jest wywoływane za każdym razem, gdy ten adres URL zostanie trafiony żądaniem HTTP GET
lub POST
. Zazwyczaj, gdy odpowiedź na GET
żądanie byłoby uczynić samej formy, po czym formę będzie POST
z powrotem do siebie do przetwarzania danych formularza.
Możemy również wykorzystać Suitelets do tworzenia progresji interfejsu użytkownika w stylu kreatora przy użyciu komponentów NetSuite „Assistant” interfejsu użytkownika.
Portlety są bardzo podobne do Suitelets, z tym wyjątkiem, że są one specjalnie używane do tworzenia niestandardowych widżetów pulpitu nawigacyjnego zamiast pełnych niestandardowych stron. Poza tym oba typy skryptów działają bardzo podobnie.
RESTlet
RESTlety pozwalają nam budować niestandardowe punkty końcowe oparte na REST w NetSuite; dlatego RESTlety stanowią kręgosłup niemal każdej integracji z NetSuite.
RESTlety zapewniają obsługę poszczególnych zdarzeń dla czterech najczęściej używanych metod żądań HTTP:
-
GET
-
POST
-
PUT
-
DELETE
Gdy RESTlet odbiera żądanie, kieruje je do odpowiedniej funkcji obsługi zdarzeń w oparciu o zastosowaną metodę żądania HTTP.
Uwierzytelnianie za pomocą RESTletu można wykonać za pomocą sesji użytkownika, nagłówków HTTP lub tokenów OAuth.
Skrypt aktualizacji zbiorczej
Korzystając ze skryptu aktualizacji zbiorczej, możemy tworzyć niestandardowe aktualizacje zbiorcze dla użytkowników. Działa to tak jak normalna aktualizacja zbiorcza, w której użytkownik wybiera typ aktualizacji zbiorczej, buduje wyszukiwanie, które zwraca rekordy do aktualizacji, a następnie każdy wynik wyszukiwania jest przekazywany indywidualnie do niestandardowego skryptu aktualizacji zbiorczej.
Skrypt zapewnia pojedynczy each
obsługi zdarzeń, który odbiera wewnętrzny identyfikator i nagrać typ rekordu, który ma zostać zaktualizowany.
Skrypty masowej aktualizacji muszą być uruchamiane ręcznie przez użytkowników za pośrednictwem standardowego interfejsu masowej aktualizacji.
Skrypty masowej aktualizacji mają masowo wysoki limit zarządzania i są przeznaczone do często używanych niestandardowych przetwarzania zbiorczego.
Skrypt akcji przepływu pracy
Przepływy pracy mogą być nieco ograniczone pod względem funkcjonalności; na przykład przepływy pracy nie mogą wchodzić w interakcje z elementami zamówienia. Typ skryptu Akcja przepływu pracy ma być wywoływany przez przepływ pracy w celu dodania funkcji skryptowej, aby osiągnąć to, czego sam przepływ pracy nie może.
Akcje przepływu pracy mają jedną procedurę obsługi zdarzeń onAction
, która zostanie wywołana przez przepływ pracy.
Skrypt instalacji pakietu
Wreszcie mamy typ skryptu instalacji pakietu, który zapewnia kilka zdarzeń, które pozwalają nam na interakcję z instalacją, aktualizacją i odinstalowaniem konkretnego pakietu. Jest to rzadko spotykany typ skryptu, ale należy go jednak pamiętać.
Instalacja pakietu obejmuje następujące procedury obsługi zdarzeń, które powinny być dość zrozumiałe:
-
beforeInstall
-
afterInstall
-
beforeUpdate
-
afterUpdate
-
beforeUninstall