從調適型表單叫用表單資料模型服務的API api-to-invoke-form-data-model-service-from-adaptive-forms

Adobe 建議使用新式且可擴充的資料擷取核心元件,用來建立新的最適化表單將最適化表單新增到 AEM Sites 頁面。這些元件代表最適化表單建立方面的重大進步,可確保令人印象深刻的使用者體驗。本文會介紹使用基礎元件編寫最適化表單的舊方法。

概觀 overview

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

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

使用API using-the-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
如果success回呼函式無法根據輸入引數顯示輸出值,則顯示錯誤訊息。 這是選用引數,用來做為回呼函式。

用於叫用服務的範例指令碼 sample-script-to-invoke-a-service

下列範例指令碼使用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 using-the-api-callback

您也可以使用guidelib.dataIntegrationUtils.executeOperation API搭配回呼函式來叫用表單資料模型服務。 API語法如下:

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

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

包含成功和失敗回呼函式的範例指令碼 callback-function-success-failure

下列範例指令碼使用guidelib.dataIntegrationUtils.executeOperation API來叫用在employeeOrder表單資料模型中設定的GETOrder服務作業。

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

NOTE
如果您使用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);
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2