從適用性表單叫用表單資料模型服務的API

概覽

AEM Forms可讓表單作者從最適化表單欄位中叫用在表單資料模型中設定的服務,進一步簡化並增強表單填寫體驗。 若要叫用資料模型服務,您可以在可視化編輯器中建立規則,或使用規則編輯器的代碼編輯器中的guidelib.dataIntegrationUtils.executeOperation API指定JavaScript。

本檔案著重於使用guidelib.dataIntegrationUtils.executeOperation API來叫用服務來編寫JavaScript。

使用API

guidelib.dataIntegrationUtils.executeOperation API從適用性表單欄位內叫用服務。 API語法如下:

guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs)

guidelib.dataIntegrationUtils.executeOperation API的結構指定了有關服務操作的詳細資訊。 結構的語法如下。

var operationInfo = {
formDataModelId,
operationTitle,
operationName
};
var inputs = {
inputField1,
inputFieldN
};
var outputs = {
outputField1,
outputFieldN
}

API結構會指定服務操作的下列詳細資訊。

參數 說明
operationInfo 用於指定表單資料模型標識符、操作標題和操作名稱的結構
formDataModelId 指定表單資料模型的儲存庫路徑,包括其名稱
operationName 指定要執行的服務操作的名稱
inputs 將一個或多個表單對象映射到服務操作的輸入參數
Outputs 映射一個或多個表單對象以從服務操作輸出值以填充表單欄位
success 根據服務操作的輸入參數返回值。 這是用作回調函式的可選參數。
failure 如果成功回呼函式無法根據輸入引數顯示輸出值,則顯示錯誤訊息。 這是用作回調函式的可選參數。

調用服務的示例指令碼

以下示例指令碼使用guidelib.dataIntegrationUtils.executeOperation API調用employeeAccount表單資料模型中配置的getAccountById服務操作。

getAccountById操作將employeeID表單欄位中的值作為empId參數的輸入,並返回相應員工的員工名稱、帳號和帳戶餘額。 輸出值會填入指定的表單欄位中。 例如, name引數中的值會填入fullName表單元素中,以及account表單元素中accountNumber引數的值。

var operationInfo = {
"formDataModelId": "/content/dam/formsanddocuments-fdm/employeeAccount",
"operationName": "getAccountDetails"
};
var inputs = {
"empid" : employeeID
};
var outputs = {
"name" : fullName,
"accountNumber" : account,
"balance" : balance
};
guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs);

使用API搭配回呼函式

您也可以使用具有回撥函式的guidelib.dataIntegrationUtils.executeOperation API叫用表單資料模型服務。 API語法如下:

guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs, callbackFunction)

回呼函式可以有successfailure回呼函式。

具有成功和失敗回呼函式的指令碼示例

以下示例指令碼使用guidelib.dataIntegrationUtils.executeOperation API調用employeeOrder表單資料模型中配置的GETOrder服務操作。

GETOrder操作將Order ID表單欄位中的值作為orderId參數的輸入,並在success回調函式中返回訂單量值。 如果success回呼函式未傳回訂單量, failure回呼函式會顯示Error occured訊息。

注意

如果您使用success回呼函式,則輸出值不會填入指定的表單欄位中。

var operationInfo = {
    "formDataModelId": "/content/dam/formsanddocuments-fdm/employeeOrder",
    "operationTitle": "GETOrder",
    "operationName": "GETOrder"
};
var inputs = {
    "orderId" : Order ID
};
var outputs = {};
var success = function (wsdlOutput, textStatus, jqXHR) {
order_quantity.value = JSON.parse(wsdlOutput).quantity;
 };
var failure = function(){
alert('Error occured');
};
guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs, success, failure);

本頁內容