从自适应表单调用表单数据模型服务的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表单元素中,而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调用在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);

在此页面上