概念︰設計
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) 存取設定的指令碼中,只會傳回一個實例,且無法保證會傳回哪個實例。應禁止使用者使用相同的顯示名稱建立同級彈性設定。