수색…


소개

이벤트 중심 시스템을 사용하여 SuiteScript 사용자 정의를 생성합니다. 각각의 고유 한 이벤트 세트가있는 다양한 유형의 스크립트 레코드를 정의하고 소스 파일에서 해당 이벤트를 처리 할 때 호출 될 함수를 정의합니다.

스크립트는 응용 프로그램을 설계하고 빌드하는 기본 구성 요소 중 하나입니다. 이 기사의 목표는 사용 가능한 스크립트 유형 및 이벤트에 대해 알면됩니다.

클라이언트 스크립트

클라이언트 스크립트는보다 일반적으로 사용되는 복잡한 스크립트 유형 중 하나입니다. 이름에서 알 수 있듯이 클라이언트 스크립트는 브라우저에서 실행됩니다 (예 : 클라이언트 측). 이것은 클라이언트 측에서 실행되는 유일한 스크립트 유형입니다. 다른 모든 것은 NetSuite의 서버 측에서 실행됩니다.

클라이언트 스크립트의 주요 용도는 NetSuite UI 내의 레코드 양식과의 사용자 상호 작용에 응답하는 것입니다.

사용자가 편집 모드에서 레코드 폼을로드하자마자 사용자가 폼과 상호 작용하기 전에 폼이 초기화 될 때 코드를 실행하는 데 사용할 수있는 pageInit 이벤트가 발생합니다.

그런 다음 사용자가 양식의 필드를 변경하면 일련의 이벤트가 실행됩니다.

  1. validateField 이벤트가 발생하면 사용자가 필드에 입력하려는 값의 유효성을 검사 할 수 있습니다. 이를 사용하여 변경 사항을 수락하거나 금지 할 수 있습니다.
  2. fieldChanged 이벤트가 발생하면 필드의 새 값에 응답 할 수 있습니다.
  3. 마지막으로, postSourcing 이벤트는 모든 종속 필드가 해당 값에서 소스 된 후에 시작됩니다. 이것은 우리가 변화에 대응하고 우리가 올바른 모든 데이터와 작동하는지 확인 할 수 있습니다.

이 일련의 이벤트는 사용자가 본문 필드 또는 하위 목록 필드를 변경하는지 여부에 관계없이 시작됩니다.

사용자가 하위 목록 행을 변경하면 다른 일련의 이벤트가 트리거됩니다.

  1. lineInit 이벤트는 사용자가 처음에 새로운 행이나 기존 행을 선택할 때마다 시작되어 행의 필드를 변경할 수 있습니다.
  2. 사용자가 추가 버튼을 클릭하여 새 행을 추가 할 때마다 validateLine 이벤트가 발생하여 전체 행이 유효하고 레코드에 추가 될 수 있는지 확인할 수 있습니다.
  3. 사용자가 삽입 버튼을 클릭하여 기존 버튼 위에 새 라인을 추가 할 때마다 validateInsert 이벤트가 발생합니다.이 이벤트는 validateLine 이벤트와 똑같이 작동합니다.
  4. 마찬가지로 사용자가 행을 제거하려고 할 때마다 행의 제거를 허용하거나 거부 할 수있는 validateDelete 가 실행됩니다.
  5. [SuiteScript 1.0에만 해당] 마지막으로 적절한 유효성 검사 이벤트가 성공한 후 줄 변경이 트랜잭션 총량의 변경에 영향을 recalc 경우 recalc 이벤트가 발생하여 우리 회사의 금액 변경에 응답 할 수 있습니다 트랜잭션.
  6. 마지막으로 적절한 유효성 검사 이벤트가 성공하면 sublistChanged 이벤트가 발생하여 완료된 행 변경에 응답 할 수 있습니다.

마지막으로 사용자가 레코드의 저장 버튼을 클릭하면 saveRecord 이벤트가 발생하여 레코드가 유효한지 저장할 수 있는지 여부를 확인할 수 있습니다. 저장을 방지하거나이 이벤트를 진행할 수 있습니다.

클라이언트 스크립트는 모든 스크립트 유형의 이벤트와 그 이벤트 간의 가장 복잡한 관계를 가지고 있습니다.

사용자 이벤트 스크립트

Client Script와 밀접하게 관련된 것은 User Event Script입니다. 이 스크립트 유형의 이벤트는 레코드가로드되거나 저장 될 때 다시 시작되지만 대신 서버 측에서 실행됩니다. 따라서 필드 변경에 즉시 응답하는 데 사용할 수 없지만 양식의 레코드와 상호 작용하는 사용자 만이 아닙니다.

사용자 이벤트 스크립트는로드 또는 제출 요청의 출처, UI에서 작업중인 사용자, 제 3 자 통합 또는 요청을하는 다른 내부 스크립트에 관계없이 실행됩니다.

프로세스 나 사용자가 데이터베이스에서 레코드를 읽으려고 할 때마다 User Event의 beforeLoad 이벤트가 트리거됩니다. 이를 사용하여 데이터를 사전 처리하거나, 기본값을 설정하거나, 사용자가보기 전에 UI 양식을 조작 할 수 있습니다.

프로세스 또는 사용자가 새 레코드 작성, 기존 레코드 편집 또는 레코드 h 제 여부와 상관없이 데이터베이스에 레코드를 제출하려고 시도하면 다음 순서가 발생합니다.

  1. 먼저 요청이 실제로 데이터베이스에 전달되기 전에 beforeSubmit 이벤트가 발생합니다. 예를 들어이 이벤트를 사용하여 데이터베이스에 들어가기 전에 레코드를 정리할 수 있습니다.
  2. 요청이 데이터베이스로 전송되고 그에 따라 레코드가 작성 / 수정 / 삭제됩니다.
  3. 데이터베이스 처리가 완료되면 afterSubmit 이벤트가 발생합니다. 예를 들어이 이벤트를 사용하여 변경 사항에 대한 전자 메일 알림을 보내거나 통합 된 타사 시스템과 동기화 할 수 있습니다.

이 스크립트 유형의 이벤트를 시각화하는 데 도움 이되는 일련의 비디오 를 볼 수도 있습니다.

예약 및 맵핑 / 축소 스크립트

특정 일정 간격으로 백그라운드 처리를 실행하는 데 사용할 수있는 두 가지 유형의 스크립트가 있습니다. 이것들은 ScheduledMap / Reduce 스크립트입니다. Map / Reduce 스크립트 유형은 SuiteScript 2.0에서만 사용할 수 있습니다. 예약 된 스크립트는 1.0 및 2.0에서 사용할 수 있습니다.

예약 된 스크립트에는 정의한 일정에 따라 트리거되는 단일 execute 이벤트 만 있습니다. 예를 들어, 송장에 지불을 적용하는 야간 스크립트 나 외부 시스템과 데이터를 동기화하는 매시간 스크립트를 실행할 수 있습니다. 시간 간격이되면 NetSuite는 예약 된 스크립트에서이 execute 이벤트를 execute 합니다.

Map / Reduce 스크립트는 비슷하게 작동하지만 일단 트리거되면 처리를 네 단계로 나눕니다.

  1. getInputData 단계는 비즈니스 프로세스를 완료하는 데 필요한 모든 입력 데이터를 수집하는 단계입니다. 이 단계를 사용하여 검색을 수행하고, 레코드를 읽고, 데이터를 해독 가능한 데이터 구조로 패키징 할 수 있습니다.
  2. NetSuite는 getInputData 단계의 결과를 map 이라는 두 번째 단계로 자동 전달합니다. 이 단계에서는 입력 데이터를 논리적으로 그룹화하여 처리합니다. 예를 들어, 인보이스에 지불을 적용하는 경우 고객이 먼저 인보이스를 그룹화 할 수 있습니다.
  3. map 단계의 결과는 실제 처리가 이루어지는 reduce 단계로 전달됩니다. 이 예제를 통해 실제로 송장에 지불을 적용 할 수 있습니다.
  4. 마지막으로 이전 단계의 모든 처리 결과에 관한 데이터가 포함 된 summary 단계가 호출됩니다. 이를 사용하여 보고서를 생성하거나 처리가 완료된 전자 메일을 보낼 수 있습니다.

Map / Reduce 스크립트의 가장 큰 장점은 NetSuite가 여러 대기열에서 처리를 자동으로 병렬 처리한다는 것입니다 (사용 가능한 경우).

이 두 스크립트 유형 모두 거버넌스 제한이 매우 크기 때문에 일괄 처리 또는 일반적으로 장기 실행 백그라운드 프로세스에 사용할 수 있습니다.

이 스크립트 유형 중 가장 짧은 간격은 매 15 분마다 실행되도록 구성 할 수 있습니다.

이러한 스크립트 유형은 필요에 따라 사용자 또는 다른 스크립트에 의해 필요할 때 호출 할 수도 있습니다.

스위트 릿 및 포틀릿 스크립트

종종 우리는 NetSuite에서 맞춤 UI 페이지를 만들고 싶습니다. Suitelet을 입력하십시오. Suitelet 스크립트는 내부의 사용자 정의 UI 페이지를 작성하도록 설계되었습니다. 페이지는 자유형 HTML 일 수도 있고 NetSuite의 UI 빌더 API를 활용하여 NetSuite의 모양과 느낌을 따르는 양식을 구성 할 수도 있습니다.

배포시 Suitelet은 고유 한 URL을받습니다. 스위트 렛에는 HTTP GET 또는 POST 요청으로 URL에 도달 할 때마다 호출되는 단일 render 이벤트가 있습니다. 일반적으로 GET 요청에 대한 응답은 양식 자체를 렌더링 한 다음 양식을 다시 POST 하여 양식 데이터를 처리합니다.

우리는 또한 Suitelets을 활용하여 NetSuite의 "Assistant"UI 구성 요소를 사용하여 마법사 스타일의 UI 진행을 구축 할 수 있습니다.

포틀릿은 전체 사용자 정의 페이지가 아닌 사용자 정의 대시 보드 위젯을 작성하는 데 사용된다는 점을 제외하면 Suitelets과 매우 유사합니다. 그것 이외의 두 스크립트 유형은 매우 비슷하게 작동합니다.

RESTlet

RESTlets를 사용하여 NetSuite에 사용자 정의 REST 기반 끝점을 작성할 수 있습니다. 따라서 RESTlet은 NetSuite에 거의 모든 통합의 백본을 형성합니다.

RESTlet은 가장 일반적으로 사용되는 네 가지 HTTP 요청 방법에 대한 개별 이벤트 처리기를 제공합니다.

  • GET
  • POST
  • PUT
  • DELETE

RESTlet은 요청을 받으면 사용 된 HTTP 요청 방법에 따라 적절한 이벤트 처리기 기능으로 요청을 라우팅합니다.

RESTlet에 대한 인증은 사용자 세션, HTTP 헤더 또는 OAuth 토큰을 통해 수행 할 수 있습니다.

대량 업데이트 스크립트

대량 업데이트 스크립트를 사용하여 사용자가 수행 할 수있는 사용자 지정 대량 업데이트를 구축 할 수 있습니다. 이 기능은 사용자가 대량 업데이트 유형을 선택하고 업데이트 할 레코드를 반환하는 검색을 작성한 다음 각 검색 결과를 사용자 정의 대량 업데이트 스크립트에 개별적으로 전달하는 일반 대량 업데이트와 동일하게 작동합니다.

스크립트는 하나의 제공 each 갱신 될 레코드의 내부 ID 기록 입력을 수신 이벤트 핸들러.

대량 업데이트 스크립트는 표준 대량 업데이트 인터페이스를 통해 사용자가 수동으로 트리거해야합니다.

대량 업데이트 스크립트는 거버넌스 한도가 매우 높으며 일반적으로 사용되는 사용자 지정 대량 처리를위한 것입니다.

워크 플로 작업 스크립트

워크 플로의 기능은 다소 제한 될 수 있습니다. 예를 들어 워크 플로는 광고 항목과 상호 작용할 수 없습니다. 워크 플로 작업 스크립트 유형은 워크 플로 자체에서 수행 할 수없는 작업을 수행하기 위해 스크립팅 기능을 추가하기 위해 워크 플로에 의해 호출되도록 만들어졌습니다.

워크 플로 액션에는 워크 플로에서 호출 할 단일 onAction 이벤트 처리기가 있습니다.

번들 설치 스크립트

마지막으로 특정 번들의 설치, 업데이트 및 제거와 상호 작용할 수있는 여러 이벤트를 제공하는 번들 설치 스크립트 유형이 있습니다. 이것은 드물게 발생하는 스크립트 유형이지만 그럼에도 불구하고주의해야 할 중요한 점입니다.

Bundle 설치에는 다음 이벤트 처리기가 포함되어 있습니다. 이는 상당히 자명합니다.

  • beforeInstall
  • afterInstall
  • beforeUpdate
  • afterUpdate
  • beforeUninstall


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow