AEM Forms可讓表單作者從最適化表單欄位中叫用在表單資料模型中設定的服務,進一步簡化並增強表單填寫體驗。 若要叫用資料模型服務,您可以在視覺編輯器中建立規則,或使用 guidelib.dataIntegrationUtils.executeOperation
API(位於 規則編輯器.
本檔案著重於使用 guidelib.dataIntegrationUtils.executeOperation
叫用服務的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
叫用 getAccountById
在中配置的服務操作 employeeAccount
表單資料模型。
此 getAccountById
操作會採用 employeeID
表單欄位作為輸入 empId
參數和返回相應員工的員工名稱、帳號和帳戶餘額。 輸出值會填入指定的表單欄位中。 例如, name
引數會填入 fullName
表單元素和值 accountNumber
引數 account
表單元素。
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);
您也可以使用 guidelib.dataIntegrationUtils.executeOperation
具有回撥函式的API。 API語法如下:
guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs, callbackFunction)
回叫函式可以 success
和 failure
回呼函式。
下列範例指令碼使用 guidelib.dataIntegrationUtils.executeOperation
叫用 GETOrder
在中配置的服務操作 employeeOrder
表單資料模型。
此 GETOrder
操作會採用 Order ID
表單欄位作為輸入 orderId
引數並傳回訂單數量值(位於 success
回呼函式。 若 success
callback函式不會傳回訂購量, 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);