用于从自适应表单调用表单数据模型服务的API

概述

AEM Forms允许表单作者通过从自适应表单字段中调用在表单数据模型中配置的服务,进一步简化和增强表单填充体验。 要调用数据模型服务,您可以在可视编辑器中创建规则,或使用 guidelib.dataIntegrationUtils.executeOperation 代码编辑器中的API 规则编辑器.

本文档重点介绍如何使用 guidelib.dataIntegrationUtils.executeOperation 用于调用服务的API。

使用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 getAccountByIdemployeeAccount 表单数据模型。

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);

将API与回调函数结合使用

您还可以使用 guidelib.dataIntegrationUtils.executeOperation 具有回调函数的API。 API语法如下所示:

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

回调函数可以 successfailure 回调函数。

包含成功和失败回调函数的示例脚本

以下示例脚本使用 guidelib.dataIntegrationUtils.executeOperation 用于调用的API GETOrderemployeeOrder 表单数据模型。

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);

在此页面上