netsuite
Panoramica sul tipo di script
Ricerca…
introduzione
Si creano le personalizzazioni di SuiteScript utilizzando un sistema basato su eventi. Si definiscono vari tipi di record di script, ognuno dei quali ha un proprio insieme univoco di eventi e nel proprio file di origine, si definiscono le funzioni che verranno richiamate per gestire tali eventi nel momento in cui si verificano.
Gli script sono uno dei componenti principali con cui progetterai e costruirai le tue applicazioni. L'obiettivo di questo articolo è semplicemente quello di familiarizzare con i tipi di script e gli eventi disponibili.
Lo script client
Lo script client è uno dei più comuni e complessi tipi di script disponibili. Come suggerisce il nome, lo script client viene eseguito nel browser, cioè sul lato client. È l'unico tipo di script che viene eseguito sul lato client; tutti gli altri verranno eseguiti sul lato server di NetSuite.
L'uso principale dello script client è per rispondere alle interazioni dell'utente con i moduli di registrazione nell'interfaccia utente di NetSuite.
Non appena l'utente carica un modulo di registrazione in modalità Modifica, viene pageInit
un evento pageInit
che è possibile utilizzare per eseguire il codice non appena il modulo viene inizializzato, prima che l'utente possa interagire con esso.
Ogni volta che l'utente modifica qualsiasi campo nel modulo, verrà attivata una serie di eventi:
- Viene generato un evento di convalida Campo di
validateField
che ci consente di convalidare il valore che l'utente sta tentando di immettere nel campo. Possiamo usare questo per accettare o impedire che il cambiamento avvenga. -
fieldChanged
eventofieldChanged
che ci consente di rispondere al nuovo valore nel campo. - Infine, un evento
postSourcing
dopo che tutti i campi dipendenti hanno anche acquisito i loro valori. Questo ci consente di rispondere al cambiamento e di assicurarci che stiamo lavorando con tutti i dati corretti.
Questa serie di eventi si attiva indipendentemente dal fatto che l'utente stia modificando un campo corpo o un campo sottolista.
Quando l'utente apporta modifiche alle linee di sottolista, verrà attivata un'altra serie di eventi:
- Un evento
lineInit
vienelineInit
ogni volta che l'utente seleziona inizialmente una linea nuova o esistente, prima che sia in grado di apportare modifiche ai campi sulla linea. - Ogni volta che l'utente fa clic sul pulsante Aggiungi per aggiungere una nuova riga, viene
validateLine
un eventovalidateLine
che consente di verificare che l'intera riga sia valida e possa essere aggiunta al record. - Ogni volta che l'utente fa clic sul pulsante Inserisci per aggiungere una nuova riga sopra una esistente, viene
validateInsert
un eventovalidateInsert
, che funziona esattamente come l'eventovalidateLine
. - Allo stesso modo, ogni volta che l'utente tenta di rimuovere una linea, viene
validateDelete
unvalidateDelete
che consente di consentire o negare la rimozione della linea. - [Solo SuiteScript 1.0] Infine, dopo che l'evento di convalida appropriato ha avuto esito positivo, se la modifica apportata alla linea ha anche apportato una modifica all'importo totale di una transazione, viene
recalc
un evento direcalc
che consente di rispondere alla variazione di importo della nostra transazione. - [Solo SuiteScript 2.0] Infine, dopo il successo dell'evento di convalida appropriato, viene
sublistChanged
un eventosublistChanged
per consentirci di rispondere alla modifica della linea completata.
Infine, quando l'utente fa clic sul pulsante Salva sul record, viene saveRecord
un evento saveRecord
che consente di verificare se il record è valido e può essere salvato. Possiamo impedire che il salvataggio si verifichi o consentirgli di procedere con questo evento.
Lo script Client ha di gran lunga la maggior parte degli eventi di qualsiasi tipo di Script e la relazione più complessa tra questi eventi.
Lo script degli eventi utente
Strettamente correlato allo script client è lo script evento utente. Gli eventi di questo tipo di script vengono nuovamente attivati quando un record viene caricato o salvato, ma viene eseguito sul lato server. In quanto tale, non può essere utilizzato per rispondere immediatamente alle modifiche sul campo, ma non è limitato ai soli utenti che interagiscono con il record su un modulo.
Gli script degli eventi utente verranno eseguiti indipendentemente da dove viene il carico o la richiesta di invio, indipendentemente dal fatto che si tratti di un utente che lavora nell'interfaccia utente, di un'integrazione di terze parti o di un altro script interno che effettua la richiesta.
Ogni volta che un processo o un utente tenta di leggere un record dal database, viene attivato l'evento beforeLoad
dell'evento utente. Possiamo usarlo per pre-elaborare i dati, impostare valori predefiniti o manipolare il modulo di interfaccia utente prima che l'utente lo veda.
Una volta che un processo o un utente tenta di inviare un record al database, che si tratti della creazione di un nuovo record, della modifica di un record esistente o della cancellazione di un record, si verifica la seguente sequenza:
- Innanzitutto, prima che la richiesta
beforeSubmit
effettivamente al database, vienebeforeSubmit
un eventobeforeSubmit
. Possiamo usare questo evento, ad esempio, per ripulire il record prima che entri nel database. - La richiesta viene inviata al database e il record viene creato / modificato / cancellato di conseguenza.
- Al termine dell'elaborazione del database, viene
afterSubmit
un eventoafterSubmit
. Possiamo utilizzare questo evento, ad esempio, per inviare notifiche via email di modifiche o per sincronizzarci con sistemi integrati di terze parti.
Puoi anche guardare questa serie di video che aiutano a visualizzare gli eventi di questo tipo di script.
The Scheduled e Map / Reduce Scripts
Esistono due tipi di script che possiamo sfruttare per eseguire l'elaborazione in background su un intervallo regolare specifico; questi sono gli script Programmato e Mappa / Riduci . Si noti che il tipo di script Mappa / Riduci è disponibile solo in SuiteScript 2.0. Lo script programmato è disponibile per 1.0 e 2.0.
Lo script pianificato ha solo un singolo evento di execute
che viene attivato in qualsiasi pianificazione definita. Ad esempio, potresti voler eseguire uno script notturno che applica i pagamenti alle fatture o uno script orario che sincronizza i dati con un sistema esterno. Quando arriva l'intervallo di tempo, NetSuite attiva questo evento di execute
nello script Programmato.
Lo script Mappa / Riduci funziona in modo simile, ma una volta attivato, interrompe l'elaborazione in quattro fasi distinte:
- La fase
getInputData
è dove raccogli tutti i dati di input necessari per completare il processo di business. È possibile utilizzare questa fase per eseguire ricerche, leggere record e impacchettare i dati in una struttura di dati decifrabile. - NetSuite passa automaticamente i risultati della fase
getInputData
alla seconda fase, chiamatamap
. Questa fase è responsabile del raggruppamento logico dei dati di input per l'elaborazione. Ad esempio, se stai applicando i pagamenti alle fatture, potresti voler raggruppare prima le fatture per Cliente. - I risultati della fase
map
vengono quindi passati alla fase direduce
, che è il luogo in cui avviene l'elaborazione effettiva. Questo è dove vorresti, mantenendo il nostro esempio, applicare effettivamente i Pagamenti alle Fatture. - Infine, viene invocata una fase di
summary
che contiene i dati relativi ai risultati di tutte le elaborazioni effettuate nelle tre fasi precedenti. È possibile utilizzare questo per generare report o inviare e-mail che l'elaborazione è completa.
Il vantaggio principale dello script Map / Reduce è che NetSuite eseguirà automaticamente il parallelismo dell'elaborazione su più code, se disponibile.
Entrambi questi tipi di script hanno un limite di governance estremamente ampio, quindi è possibile utilizzarli anche per l'elaborazione di massa o in genere per processi in background di lunga durata.
L'intervallo più breve di questi tipi di script può essere configurato per l'esecuzione ogni 15 minuti.
Entrambi questi tipi di script possono anche essere richiamati su richiesta dagli utenti o da altri script, se necessario.
Gli script Suitelet e Portlet
Spesso vorremmo costruire pagine di interfaccia utente personalizzate in NetSuite; entra nella Suitelet. Lo script Suitelet è progettato per la creazione di pagine dell'interfaccia utente personalizzate interne. Le pagine possono essere in formato HTML, oppure possono utilizzare le API di UI Builder di NetSuite per costruire moduli che seguano l'aspetto di NetSuite.
Quando viene distribuito, Suitelet riceve il proprio URL univoco. La Suitelet ha quindi un singolo evento di render
che viene chiamato ogni volta che l'URL viene colpito con una richiesta HTTP GET
o POST
. In genere, la risposta alla GET
richiesta sarebbe quella di rendere la forma stessa, e quindi la forma sarebbe POST
a se stesso per l'elaborazione dei dati del modulo.
Possiamo anche sfruttare Suitelets per costruire progressioni dell'interfaccia utente in stile wizard utilizzando i componenti dell'interfaccia utente "Assistente" di NetSuite.
I portlet sono estremamente simili a Suitelet, tranne per il fatto che sono specificamente utilizzati per creare widget dashboard personalizzati piuttosto che pagine personalizzate complete. Oltre a questo, i due tipi di script funzionano in modo molto simile.
The RESTlet
Gli RESTlet ci consentono di creare endpoint personalizzati basati su REST in NetSuite; quindi, RESTlet costituisce la spina dorsale di quasi ogni integrazione in NetSuite.
RESTlet fornisce gestori di eventi individuali per quattro dei metodi di richiesta HTTP più comunemente utilizzati:
-
GET
-
POST
-
PUT
-
DELETE
Quando un RESTlet riceve una richiesta, instraderà la richiesta alla funzione di gestore eventi appropriata in base al metodo di richiesta HTTP utilizzato.
L'autenticazione su un RESTlet può essere eseguita tramite sessione utente, intestazioni HTTP o token OAuth.
Lo script di aggiornamento di massa
Utilizzando lo script di aggiornamento di massa, possiamo creare aggiornamenti di massa personalizzati per gli utenti. Funziona esattamente come un normale aggiornamento di massa, in cui l'utente seleziona il tipo di aggiornamento di massa, crea una ricerca che restituisce i record da aggiornare e quindi ogni risultato di ricerca viene passato singolarmente nello script personalizzato di aggiornamento di massa.
Lo script fornisce un unico each
gestore di eventi che riceve l'ID e registrare tipo interno del record che deve essere aggiornata.
Gli script di aggiornamento di massa devono essere attivati manualmente dagli utenti tramite l'interfaccia standard di Mass Update.
Gli script di aggiornamento di massa hanno un limite di governance estremamente elevato e sono destinati all'elaborazione in blocco personalizzata di uso comune.
Lo script di azione del flusso di lavoro
I flussi di lavoro possono essere alquanto limitati nella loro funzionalità; ad esempio, i flussi di lavoro non possono interagire con gli elementi pubblicitari. Il tipo di script Action del flusso di lavoro è destinato ad essere richiamato da un flusso di lavoro per aggiungere funzionalità di scripting per realizzare ciò che il flusso di lavoro stesso non può.
Le azioni del flusso di lavoro hanno un singolo gestore di eventi onAction
che verrà richiamato dal flusso di lavoro.
Lo script di installazione del pacchetto
Infine, abbiamo il tipo di script Installazione bundle, che fornisce diversi eventi che ci consentono di interagire con l'installazione, l'aggiornamento e la disinstallazione di un particolare pacchetto. Questo è un tipo di script incontrato raramente, ma è importante essere comunque a conoscenza.
L'installazione del pacchetto include i seguenti gestori di eventi, che dovrebbero essere abbastanza auto-esplicativi:
-
beforeInstall
-
afterInstall
-
beforeUpdate
-
afterUpdate
-
beforeUninstall