Come fermare lo script Map/Reduce in NetSuite
Mappa/Riduci script. Non li amiamo? Eseguono complesse attività di elaborazione dei dati su set di dati di grandi dimensioni. Suddividono set di dati di grandi dimensioni in blocchi più piccoli per elaborarli in parallelo. Sono la soluzione a molti problemi. Ma come fermarli?
Molte volte ti ritroverai in una situazione in cui una particolare mappa/riduzione deve essere arrestata il prima possibile, per liberare la coda, riavviare la distribuzione dopo un aggiornamento del codice o per ridurre al minimo i danni causati dall'esecuzione corrente.
NetSuite ti consente di interrompere istantaneamente lo script Map/Reduce, ma a condizione che non sia ancora in esecuzione. Puoi anche interrompere l'esecuzione della distribuzione disattivando il record dello script. In base alla mia esperienza, potrebbero essere necessari dai 5 ai 25 minuti prima che la distribuzione si interrompa. Non ideale.
L'idea
Mi è venuta l'idea di saltare ogni fase dello script Map/Reduce utilizzando il record personalizzato. Lo script leggerà il valore di quel record all'inizio di ogni fase per determinare se è necessario eseguire una logica. Saltare tutta la logica non solo ridurrebbe drasticamente i tempi di esecuzione, ma impedirebbe anche qualsiasi modifica ai dati dell'account NetSuite.
La soluzione
Inizia definendo un nuovo record personalizzato. Deve avere due campi personalizzati:
- Numero intero
- Casella di controllo
Nota: NetSuite consente anche di selezionare il campo "Distribuzione script", ma nonostante i miei migliori sforzi, il campo non mostrava alcuna distribuzione effettiva tra cui scegliere.
Il passaggio successivo prevede la codifica. Dobbiamo creare una funzione e inserirla in qualsiasi script che deve essere saltato. Richiede i moduli " N/runtime " e " N/search " per essere eseguito. Lo scopo della funzione è trovare un'istanza di record personalizzato, in cui il valore del campo intero corrisponde all'ID della distribuzione Map/Reduce attualmente in esecuzione e il campo della casella di controllo è selezionato:
L'intero script Map/Reduce sarà simile a questo:
Come puoi vedere, ogni fase di Map/Reduce eseguirà la skipCurrentStage()funzione per vedere se la distribuzione attualmente in esecuzione è stata contrassegnata con un record personalizzato. Se la funzione restituisce true, l'ulteriore logica di una particolare fase dello script verrà saltata.
Nota: la soluzione di cui sopra potrebbe non funzionare se si dispone di più processori SuiteCloud e si esegue la stessa distribuzione di script in parallelo.
Riepilogo
Come accennato in precedenza, questa soluzione è ideale per ridurre i tempi di esecuzione saltando qualsiasi logica inclusa nel file. Con l'aiuto di un record personalizzato e di poche righe di codice, puoi saltare ogni fase dello script e impedire qualsiasi modifica ai dati del tuo account NetSuite. Questa soluzione può farti risparmiare tempo prezioso e prevenire potenziali danni, quindi provala e vedi come funziona per te.

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































