跳至主要內容
Adaptive Planning
上次更新時間 :2023-06-23
概念︰設計

概念︰設計

CCDS API 旨在協助整合操作人員連至資料來源、在資料來源內建立物件、剖析 XML、轉換日期,以及在建立資料來源時經常利用的項目。

名稱空間

JavaScript 引擎可讓您存取內建的
Adaptive Planning
透過「adaptive」名稱空間或「ai」整合 (
Adaptive Planning
) 名稱空間 (別名)。這類似於熱門的 JavaScript 程式庫,像是 jQuery (https://jquery.com/)。
// JavaScript short namespace example. ai.log.logError('this is a log'); // JavaScript long namespace example. adaptive.log.logError('this is a log');
在根「
ai
」名稱空間之下,公開了許多核心函數,以允許 JavaScript 與網際網路互動,以及
Adaptive Planning
Discovery/Integration 功能這些公開 JavaScript API 的模型是使用 Node.js (https://nodejs.org/) API 為指南所建立的。

函數

函數 get 和 set 資料可使 API 保持一致,提供封裝,以及明確允許 setter 和 getter。函數也提供 C# 物件的封裝,僅公開 JavaScript 語言功能,並防止不必要跨越 JavaScript / C# 界限,以改善效能。getter 的字首為 get,而 setter 的字首為 set。
var isEnabled= item.getIsEnabled(); item.setIsEnabled(true);

函數環境定義

CCDS 呼叫的每個函數都會採用 Context 物件。環境定義包含唯讀物件可協助處理。
function importData(context) { var tableId = context.getTableId(); var tables = context.getDataSource().getTables(); var setting = context.getDataSource().getSetting('password'); }
環境定義由從 C# 傳入的物件所組成。為改善效能,我們將每個物件封裝在一個 JavaScript 物件中,以避免在 JavaScript 中公開 C# 物件。這允許管理跨越 JavaScript / C# 界限的通訊。例如,當要求表格的環境定義時,C# 物件會傳回包裝在 JavaScript 物件中的值。如果有對象階層,我們會將每個層級包裝在一個 JavaScript 物件中。當要求表格中的欄時,我們會傳回 JavaScript 包裝的物件清單。

限制

以下限制適用於執行中的 CCDS 指令碼流程階段作業。
設定
說明
預設值
可配置的 AppSetting?
可配置的用戶設定?
堆積上限 (MB)
V8 引擎可取用的 RAM 數量。
800
CPU 時間限制
V8 引擎可使用 CPU 資源的時間量。
10 分鐘
執行時間長度限制
無論 V8 引擎是否積極使用 CPU 資源,它都可以執行的時間量。
60 分鐘
網路呼叫之間的延遲
1 秒
每秒記錄數的限制
每秒可從指令碼建立的記錄數目上限。
5
每小時記錄數的限制
每小時可從指令碼建立的記錄數目上限。
1000
網路用量限制 (MB)
指令碼可透過網路傳送和接收的上限 (MB)。
5 GB
非同步指令碼服務要求之間的毫秒數
用於對任務服務與指令碼執行器流程之間的流量進行節流。如果指令碼執行器流程能夠跟上任務服務的要求,則等候時間會降至 0 毫秒。
200 毫秒
每個要求的指令碼結果頁面上限
任務服務可從指令碼執行器的存放庫要求的資料頁數。
50
頁面大小上限
任務服務將在每個資料頁面中要求的資料列數
10000
以下限制適用於 CCDS 指令碼集區管理員。
設定
說明
預設值
可配置的 AppSetting?
可配置的用戶設定?
指令碼集區大小上限
同時執行的指令碼流程數上限。
100
指令碼集區大小下限
任一時間可執行的指令碼流程數下限 (用於「預熱」指令碼執行器流程)。
0
指令碼集區等候逾時
指令碼執行器流程的要求可排入佇列的時間上限。
180 秒
指令碼集區佇列大小上限
指令碼執行器流程的等候要求數上限。
1000

其他限制︰

  • 若未在指令碼中使用 ai.https.sax.parser 方法,則用於剖析的 XML 檔案大小會有限制。大小上限不明,但為了參考,可剖析具有 100 mb 堆積大小的 10 MB 檔案。我們建議對大型檔案使用 ai.https.sax.parser。
  • 指令碼無法存取
    Adaptive Planning
    網路
  • 不支援 HTTP,僅支援 HTTPS。

已知問題

  • 在 importData/importStructure 期間,資料來源會呼叫 testConnection。在 CCDS 中,這表示兩個個別的指令碼執行器流程。有可能成功建立第一個流程以執行 testConnection。執行 importData/importStructure 的第二個流程可能會排入集區管理員的佇列中,而最終會逾時,然後失敗。
  • 同級彈性設定可有相同的顯示名稱。因此,在透過 getSetting(displayName) 存取設定的指令碼中,只會傳回一個實例,且無法保證會傳回哪個實例。應禁止使用者使用相同的顯示名稱建立同級彈性設定。