Удобен метод за пропускане на стартиращ скрипт.

Карта/намаляване на скриптове. Не ги ли обичаме? Те изпълняват сложни задачи за обработка на данни върху големи набори от данни. Те разбиват големи масиви от данни на по-малки части, за да ги обработват паралелно. Те са решение на много проблеми. Но как да ги спрем?

Много пъти ще се окажете в ситуация, в която определено Map/Reduce трябва да бъде спряно възможно най-скоро, или за да освободите опашката, да рестартирате внедряването след някаква актуализация на кода или да минимизирате щетите, причинени от текущото изпълнение.

NetSuite ви позволява незабавно да спрете скрипта Map/Reduce, но стига да не работи още. Можете също така да спрете изпълнението на внедряването, като деактивирате записа на скрипт. От моя опит може да отнеме между 5 и 25 минути, за да спре разполагането. Не е идеален.

Идеята

Хрумна ми идея да пропусна всеки етап от скрипта Map/Reduce, като използвам персонализиран запис. Скриптът ще прочете стойността на този запис в началото на всеки етап, за да определи дали трябва да се изпълни някаква логика. Пропускането на цялата логика не само би намалило драматично времето за изпълнение, но също така би предотвратило всякакви промени в данните на акаунта в NetSuite.

Решението

Започнете с дефиниране на нов потребителски запис. Трябва да има две персонализирани полета:

  • 👉 Цяло число
  • 👉 Кутия за отметка

Integer ще съдържа вътрешен идентификатор на внедряването, което искате да бъде засегнато. Квадратчето за отметка ще маркира записа като активен.

Забележка: NetSuite също така позволява да бъде избрано полето „Внедряване на скрипт“, но въпреки всичките ми усилия полето не показва никакви реални внедрявания, от които да избирате.

Следващата стъпка включва кодиране. Трябва да създадем функция и да я поставим във всеки скрипт, който трябва да бъде пропуснат. Изисква модули „N/runtime“ и „N/search“, за да работи. Целта на функцията е да намери екземпляр на персонализиран запис, където стойността на целочисленото поле съвпада с ID на текущо изпълняваното внедряване Map/Reduce и е избрано полето за отметка:

Целият скрипт Map/Reduce ще изглежда подобно на това:

Както можете да видите, всеки етап от Map/Reduce ще изпълни функцията skipCurrentStage(), за да види дали изпълняваното в момента внедряване е маркирано с персонализиран запис. Ако функцията върне true, допълнителната логика на конкретен етап на скрипта ще бъде пропусната.

Забележка: решението по-горе може да не работи, ако имате повече процесори SuiteCloud и изпълнявате едно и също внедряване на скрипт паралелно.

Резюме

Както бе споменато по-горе, това решение е идеално за съкращаване на времето за изпълнение чрез пропускане на всяка логика, включена във файла. С помощта на персонализиран запис и няколко реда код можете да пропуснете всеки етап от скрипта и да предотвратите всякакви промени в данните на вашия акаунт в NetSuite. Това решение може да ви спести ценно време и да предотврати потенциални щети, така че опитайте го и вижте как работи за вас.