2017-01-26 7 views
1

NetSuite RESTletで検索と処理を行い、その結果をポートレットに表示しています。すべてがうまくいきます。ただし、処理に時間がかかる場合は、実際に何か起こっていることをクライアントにフィードバックしたいと思います。そうする最良の方法は何でしょうか?検索を分割して呼び出し間でフィードバックを提供することができますが、それは不要なガバナンスにつながります。suitscriptのリセレット処理中にフィードバックを提供しますか?

私の検索コードです。 (ボイラープレート)。私はRESTletを再度呼び出してレコード数をコールバックすることを考えましたが、auth paramsを送信する必要があります。何故ですか?

これについてはどのような方法が最適ですか?

function doWork() { 
    // do the search 
    var accountSearch = search.create({ 
     type: search.Type.CUSTOMER, 
     columns: searchColumns, 
     filters: searchFilters 
    }); 
    // GOVERNANCE: 5 
    var searchResultsPagedData = accountSearch.runPaged({ 
     'pageSize': 1000 
    }); 

    if (searchResultsPagedData && searchResultsPagedData.count > 0) { 
     var foundIDs = []; 
     for (var pageIndex = 0; pageIndex < searchResultsPagedData.pageRanges.length; pageIndex++) { 
      var pageRange = searchResultsPagedData.pageRanges[pageIndex]; 
      if (pageRange.index >= max) 
       break; 

      var searchPage = searchResultsPagedData.fetch({ index: pageRange.index }); 

      // THIS IS WHAT I HAD IN MIND 
      var jsonText = JSON.stringify({ "recordType": "resultCallback", "index": pageRange.index }); 
      var restletUrl = url.resolveScript({ 
       scriptId: 'customscript_script_id', 
       deploymentId: 'customdeploy_deploy_id', 
      }); 


      var response = https.post({ 
       url: restletUrl, 
       body: jsonText 
      }); 
      log.debug({ 
       title: 'response', 
       details: response 
      }) 


      // Iterate over the list of results on the current page 
      searchPage.data.forEach(function (result) { 
       // Process the individual result 
       var internalid = result.id; 
       // etc etc 
      }); 
     }; 
    } 
    var returnJson = { 
     'accountslength': records.length, 
     'contactlength': contactRecords.length, 
     'accounts': records, 
     'contacts': contactRecords 
    }; 

    return returnJson; 
} 

レスポンスを教えてください。

"type":"http.ClientResponse","code":401 

答えて

2

私は通常、このようなことを2つの部分で行います。

まず、ターゲットセットをクライアントに返します。これにより、負荷の大きさを知ることができます。

次に、各ターゲットレコードをスイートレットまたはレシートに1つずつ送信します。 各ターゲットが処理され、ガバナンスの問題に遭遇する確率を減らすことができます。

+0

これは方法になると思います私は一度に1つのレコードに対してバッチでそれを行うだろうが、処理する必要があります。ありがとう。 – ehcanadian

0

ユーザーにフィードバックするためにスイートレットを使用してみましたか?

+0

私はSuiteletを使用していますが、http: – ehcanadian

0

レコードの更新後に更新されるカウンタ(100レコードのうち10レコードが処理される)を使用してカスタムレコードを作成し、x秒ごとにポートレットチェックを行うことができます。

+0

複数のユーザーがポートレット/レセプタクルにアクセスすると、その動作はどのようになりますか? – ehcanadian

+0

複数のユーザーがRestletを使用でき、自分の進捗状況を表示したい場合は、私が言及したことを忘れていましたが、通常、タイムアウトやガバナンスの問題に遭遇したかどうかをチェックしたいと思うかもしれませんが、通常はRestletは大規模なアップデートには使用されません。 –

関連する問題