使用物件的 dataApi 動作與函式方法來呼叫綁定在頁面上的 Dataverse 自訂 API 。
備註
動作與函式方法在共享 dataApi 合約中為可選。 有些主機沒有實作這些方法,所以呼叫前請確認該方法是否存在。 有方法存在並不代表該操作綁定在頁面上、執行時啟用,或是目前使用者被允許。 與連接器方法不同,這些方法不會投擲預期失敗;結果 ok: false 是錯誤代碼。 明確處理結果 ok 和 error 屬性。
listBoundActions 當啟用該發現時,回傳目前執行時設定允許的動作與函式;但這並不保證目前使用者擁有執行所有列出操作所需的 Dataverse 權限。
| 方法 | Description |
|---|---|
executeAction |
以動作呼叫綁定在頁面上的 Dataverse 自訂 API。 |
executeFunction |
以函式方式呼叫綁定在頁面上的 Dataverse 自訂 API。 |
listBoundActions |
列出綁定在頁面上的 Dataverse 自訂 API(動作與函式)。 |
executeAction 方法
呼叫一個 Dataverse 自訂 API,創作者將其綁定為動作(可能改變資料的訊息)。
Parameters
為這個所需參數設定一個值。
| Name | 類型 | Description |
|---|---|---|
request |
DataverseActionRequest | 呼叫動作及其輸入參數。 |
DataverseActionRequest
| Name | 類型 | Description |
|---|---|---|
name |
string |
自訂 API 的唯一名稱,前綴為 publisher,例如 new_ApproveExpenseReport。 |
parameters |
object |
(可選)動作所需的輸入參數,並以唯一參數名稱作為鍵。 |
boundTo |
object |
(可選)一個用於實體綁定動作的目標列參考(entityNameid和 )。 全域(未綁定)動作則省略。 |
Returns
一個包含 DataverseActionResult 的承諾。 此方法絕不會拋出預期失敗(例如 403 權限錯誤、400 錯誤參數,或操作未綁定或未啟用)——請檢查該 ok 屬性。
資料逆行動結果
| Name | 類型 | Description |
|---|---|---|
ok |
boolean |
表示行動是否成功。 |
status |
number |
Dataverse 回傳的 HTTP 狀態碼,或 0 在沒有 HTTP 狀態可用時。
0狀態可能表示執行時在發送呼叫前拒絕了該呼叫(例如,not_enabled, not_bound, wrong_operation_kindinvalid_parameternot_permitted或invalid_bound_to),請求在沒有 HTTP 回應的情況下失敗,或結果未知(indeterminate為 )。true 使用 error.code 並 indeterminate 區分這些案例。 |
outputs |
object |
動作回傳的輸出參數,並以唯一名稱鍵結。 空的表示沒有輸出的行動。 |
indeterminate |
boolean |
(可選) true 當逾時或其他派遣後失敗表示伺服器可能已提交該動作時;不要自動重試。 |
error |
object |
(可選)當 ok 為 時 false,錯誤詳細說明,包括機讀 code 與淨化 message。
code是 not_enabled、 not_bound、 invalid_parameterindeterminateinvalid_bound_tonot_permittedwrong_operation_kind或 network,或是動作的 HTTP 狀態碼(例如 "404"),當 Dataverse 回傳錯誤回應或"0"沒有 HTTP 狀態時,會以字串形式呈現。
not_permitted 表示該動作或函式不在環境的生成頁面允許清單中——它不會顯示目前使用者是否擁有 Dataverse 執行權限。 權限失敗通常會像錯誤代碼"403"一樣出現status: 403;如果主機無法判斷 HTTP 狀態,則會回傳status: 0。 |
executeAction 範例
if (!dataApi.executeAction) {
throw new Error("executeAction isn't available on this page.");
}
const result = await dataApi.executeAction({
name: "new_ApproveExpenseReport",
parameters: { comments: "Approved by manager" },
boundTo: { entityName: "new_expensereport", id: "30dc51e9-947d-47d8-ad48-4fc48fba4a95" },
});
if (result.ok) {
console.log(result.outputs);
}
else {
console.log(result.error?.code);
}
executeFunction 方法
呼叫一個 Dataverse 自訂 API,創作者將其綁定為函式(一個唯讀訊息,帶有 GET 語意)。
Parameters
為這個所需參數設定一個值。
| Name | 類型 | Description |
|---|---|---|
request |
DataverseFunctionRequest | 調用函式及其輸入參數。 |
DataverseFunctionRequest
| Name | 類型 | Description |
|---|---|---|
name |
string |
自訂 API 的唯一名稱,前綴為 publisher,例如 new_GetExchangeRate。 |
parameters |
object |
(可選)函式所需的輸入參數,並以唯一參數名稱作為鍵。 |
boundTo |
object |
(可選)實體綁定函數的目標列參考(entityNameid和 )。 全域(未綁定)函數則省略。 |
Returns
一個包含 DataverseActionResult 的承諾。 與 相同executeAction,此方法從不拋出預期失敗——請檢查屬性。ok
executeFunction 範例
if (!dataApi.executeFunction) {
throw new Error("executeFunction isn't available on this page.");
}
const result = await dataApi.executeFunction({
name: "new_GetExchangeRate",
parameters: { currencyCode: "EUR" },
});
if (result.ok) {
console.log(result.outputs);
}
listBoundActions 方法
列出創作者綁定到頁面的 Dataverse 自訂 API(動作與函式)。
Parameters
None.
Returns
一個包含 DataverseActionInfo 條目陣列的承諾。 當執行時未啟用發現,會回傳一個空陣列。
資料行動資訊
DataverseActionInfo 反映的是頁面製作者對此動作或函式的綁定,而非即時的 Dataverse 元資料。 不要用它來建立輸入表單或驗證輸出——請驗證參數需求和輸出形狀是否符合實際的 Dataverse 自訂 API 定義。
| Name | 類型 | Description |
|---|---|---|
name |
string |
Dataverse 自訂 API 唯一(邏輯上)的名稱。 |
displayName |
string |
自訂 API 的顯示名稱。 |
isFunction |
boolean |
true 如果 Dataverse 的自訂 API 是函式(唯讀); false 如果是行動,包括這個數值在綁定時間未被記錄。 |
bindingType |
string |
裝訂類型: "Global" 或 "Entity"。 |
boundEntityLogicalName |
string |
(可選)當 bindingType 為 "Entity"時,動作或函式所綁定的表。 |
parameters |
Object[] |
當 Dataverse 自訂 API 綁定到頁面時,輸入參數記錄,每個參數都帶有 a name 和 declaredKind。
type總是且"unknown"optional總是——false兩者都不反映 Dataverse 自訂 API 的實際元資料。 |
outputs |
Object[] |
總是空的陣列。 綁定發現不會記錄輸出參數。 |
listBoundActions 範例
const actions = await dataApi.listBoundActions?.();