基于数据源的预填充和提交工作流建议(用于生成自适应表单) recommended-data-source-btased-prefill-and-submit-workflows-for-adaptive-forms
您可以对通过Automated forms conversion服务(AFCS)转换的自适应表单使用以下任何数据源:
- 表单数据模型、OData或任何其他第三方服务
- JSON架构
- XSD架构
根据数据源,您可以选择生成带或不带数据模型的自适应表单。
本文介绍了在选择数据源并使用转换服务生成自适应表单后,用于预填充字段值和提交选项的推荐工作流。
有关Automated forms conversion服务(AFCS)的更多信息,请参阅以下文章:
本文提供的信息基于这样一种假设,即任何阅读者都具备自适应表单概念的基本知识。
先决条件 pre-requisites
自适应表单示例 sample-adaptive-form
要执行用例以预填自适应表单中的字段值并将它们提交到数据源,请下载以下示例PDF文件。
贷款申请表示例
PDF文件用作Automated forms conversion服务(AFCS)的输入。 服务会将此文件转换为自适应表单。 下图以PDF格式描述了示例贷款申请。
为表单模型准备数据 prepare-data-for-form-model
AEM Forms数据集成允许您配置并连接到不同的数据源。 使用转换过程生成自适应表单后,您可以根据表单数据模型、XSD或JSON架构定义表单模型。 您可以使用数据库、Microsoft Dynamics或任何其他第三方服务来创建表单数据模型。
本教程使用MySQL数据库作为创建表单数据模型的源。 在数据库中创建 loanapplication 架构,并根据自适应表单中可用的字段将 applicator 表添加到架构中。
您可以使用以下DDL语句在数据库中创建 申请人 表。
CREATE TABLE `applicant` (
`name` varchar(45) DEFAULT NULL,
`address` varchar(45) DEFAULT NULL,
`phonenumber` int(11) NOT NULL,
`email` varchar(45) DEFAULT NULL,
`occupation` varchar(45) DEFAULT NULL,
`annualsalary` varchar(45) DEFAULT NULL,
`familymembers` int(11) DEFAULT NULL,
PRIMARY KEY (`phonenumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
如果使用XSD架构作为表单模型来执行用例,请创建包含以下文本的XSD文件:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="http://adobe.com/sample.xsd"
xmlns="http://adobe.com/sample.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="sample" type="SampleType"/>
<xs:complexType name="SampleType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="phonenumber" type="xs:int"/>
<xs:element name="email" type="xs:string"/>
<xs:element name="occupation" type="xs:string"/>
<xs:element name="annualsalary" type="xs:string"/>
<xs:element name="familymembers" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
或者将XSD架构下载到本地文件系统。
示例贷款申请XSD架构
有关将XSD架构用作自适应表单中的表单模型的详细信息,请参阅使用XML架构创建自适应表单。
如果您使用JSON架构作为表单模型来执行用例,请创建包含以下文本的JSON文件:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"loanapplication": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"address": {
"type": "string"
},
"phonenumber": {
"type": "number"
},
"email": {
"type": "string"
},
"occupation": {
"type": "string"
},
"annualsalary": {
"type": "string"
},
"familymembers": {
"type": "number"
}
}
}
},
"type": "object",
"properties": {
"employee": {
"$ref": "#/definitions/loanapplication"
}
}
}
或者将JSON架构下载到本地文件系统。
示例贷款应用程序JSON架构
有关在自适应表单中使用JSON架构作为表单模型的更多信息,请参阅使用JSON架构创建自适应表单。
生成无数据绑定的自适应表单 generate-adaptive-forms-with-no-data-binding
使用Automated forms conversion服务将 示例贷款申请表单转换为无数据绑定的自适应表单。 确保选中 Generate adaptive form(s) without data bindings 复选框以生成无数据绑定的自适应表单。
生成无数据绑定的自适应表单后,为该自适应表单选择数据源:
使用数据库、OData或任何第三方服务作为数据源 sqldatasource
用例:使用Automated forms conversion服务(AFCS)生成无数据绑定的自适应表单,并将MYSQL数据库配置为数据源。 手动将自适应表单字段绑定到表单数据模型实体,并使用 Form Data Model Prefill Service 选项预填充字段值。 您使用 Submit using Form Data Model 选项提交自适应表单。
在执行用例之前:
根据用例,创建 loanapplication 表单数据模型并将读取服务参数绑定到 Literal 值。 电话号码文字值必须是在MySQL数据库的 申请人 架构中配置的记录之一。 服务使用该值作为参数从数据源获取详细信息。 您还可以从 Binding To 下拉列表中选择用户配置文件属性或请求属性
执行以下步骤:
-
选择 output 文件夹中提供的转换后的 示例贷款申请表,然后点按 Properties。
-
点按 Form Model 选项卡,从 Select From 下拉列表中选择 Form Data Model,然后点按 Select Form Data Model 以选择 贷款应用程序 表单数据模型。 点按 Save & Close 以保存表单。
-
选择 示例贷款申请表 并点按 Edit。
-
在 Content 选项卡中,点按配置图标:
-
在 Basic 部分中,从 Prefill Service 下拉列表中选择 Form Data Model Prefill service。
-
在 Submission 部分中,从 Submit Action 下拉列表中选择 Submit using Form Data Model。
-
使用 Data Model to submit 字段选择数据模型。
-
点按
-
-
点按“申请人姓名”文本框并选择
- 在“绑定引用”字段中,选择 申请人 > 名称,然后点按
- 在“绑定引用”字段中,选择 申请人 > 名称,然后点按
-
点按 Preview 以查看预填充的自适应表单字段值。
-
修改字段值(如有必要),并提交自适应表单。 字段值将提交到MySQL数据库。 您可以刷新数据库中的 申请人 表以查看表中更新的值。
用例: 使用Automated forms conversion服务(AFCS)生成无数据绑定的自适应表单,并将MYSQL数据库配置为数据源。 您可以使用规则编辑器绑定自适应表单字段以预填字段值。 如有必要,请修改字段值,并将数据提交到crx-repository。
执行以下步骤以使用规则编辑器调用表单数据模型服务来绑定自适应表单中的字段和预填充值:
-
选择 output 文件夹中的 示例贷款申请表,然后点按 Edit。
-
在 Content 选项卡中,点按配置图标:
在 Basic 部分中,从 Prefill Service 下拉列表中选择 Form Data Model Prefill service。
-
点按 Applicant Name 文本框并点按 Edit Rules。
-
点按“规则编辑器”页面上的 Create。
-
在 Rule Editor 页面上:
-
选择“申请人姓名”文本框的州。 例如,is initialized,当您在 Preview 模式下呈现表单时,这将导致执行 Then 条件。
-
在 Then 部分中,从 Select Action 下拉列表中选择 Invoke Service。 Forms实例上的所有服务都将显示在下拉列表中。
-
从列出表单数据模型的部分中选择 Get 服务。 输入字段显示 phonenumber,它是为 申请人 数据模型定义的主键。 系统会根据此字段检索和预填充输出部分中字段的自适应表单中的值。
-
使用输出部分创建自适应表单字段与表单数据模型实体的绑定。 例如,用 name 实体绑定 Applicant Name 自适应表单字段。
-
点击 Done。在规则编辑器页面上再次点按 Done。
-
-
点按 Preview 以查看预填充的自适应表单字段值。
note note NOTE 请确保在与自适应表单关联的表单数据模型中,get 服务属性的 Return Array 属性设置为OFF。 -
修改字段值(如有必要),并提交自适应表单。 提交的数据可在crx-repository中的以下位置找到:
http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder
使用JSON架构作为数据源 jsondatasource
用例: 使用Automated forms conversion服务(AFCS)生成无数据绑定的自适应表单,并将JSON架构配置为数据源。 您手动将自适应表单字段绑定到JSON架构,并使用 预览数据 选项预填充字段值。 如有必要,请修改字段值,并将数据提交到crx-repository。
在执行用例之前,请确保您具有:
执行以下步骤:
-
选择 输出 文件夹中可用的已转换的 示例贷款申请表单,然后点按 Properties。
-
点按 Form Model 选项卡,从 Select From 下拉列表中选择 Schema,然后点按 Select Schema 以上传保存在本地文件系统上的 demo.schema JSON 架构。 点按 Save & Close 以保存表单。
-
选择 示例贷款申请表 并点按 Edit。
-
点按“申请人姓名”文本框并选择
在“绑定引用”字段中,选择 申请人 > 名称,然后点按
-
再次选择 output 文件夹中提供的转换的 示例贷款申请表,然后选择 Preview > Preview with Data。
下载示例数据文件
-
修改字段值(如有必要),并提交自适应表单。 提交的数据可在crx-repository中的以下位置找到:
http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder
使用XSD架构作为数据源 xsddatasource
用例: 使用Automated forms conversion服务(AFCS)生成无数据绑定的自适应表单,并将XSD架构配置为数据源。 您手动将自适应表单字段绑定到XSD架构,并使用 带有数据的预览 预填充字段值。 如有必要,请修改字段值,并将数据提交到crx-repository。
在执行用例之前,请确保您具有:
执行以下步骤:
-
选择 output 文件夹中提供的转换后的 示例贷款申请表,然后点按 Properties。
-
点按 Form Model 选项卡,从 Select From 下拉列表中选择 Schema,然后点按 Select Schema 以上传保存在本地文件系统上的 loanapplication XSD架构。 为XSD架构选择根元素并点按 Save & Close 以保存表单。
-
选择 示例贷款申请表 并点按 Edit。
-
点按“申请人姓名”文本框并选择
在“绑定引用”字段中,选择 申请人 > 名称,然后点按 -
再次选择 输出 文件夹中提供的转换后的 贷款申请表单,然后选择 Preview > Preview with Data。
下载示例数据文件
-
修改字段值(如有必要),并提交自适应表单。 提交的数据可在crx-repository中的以下位置找到:
http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder
生成具有JSON绑定的自适应表单 generate-adaptive-forms-with-json-binding
使用Automated forms conversion服务(AFCS)将 示例贷款申请表单转换为具有数据绑定的自适应表单。 确保在生成自适应表单时未选中 Generate adaptive form(s) without data bindings 复选框。
具有JSON绑定的
使用JSON架构作为数据源 jsonwithdatabinding
用例: 使用Automated forms conversion服务(AFCS)生成具有JSON数据绑定的自适应表单。 预填服务和表单提交无缝运行。 您不需要任何配置步骤。
在执行用例之前,请确保您具有带有数据绑定的自适应表单。
执行以下步骤:
-
再次选择 output 文件夹中提供的转换的 示例贷款申请表,然后选择 Preview > Preview with Data。
下载示例数据文件
-
修改字段值(如有必要),并提交自适应表单。 提交的数据可在crx-repository中的以下位置找到:
http://host name:port/crx/de/index.jsp#/content/forms/fp/admin/submit/data/latest file available in the folder
将提交的自适应表单JSON数据转换为XML格式 convert-submitted-adaptive-form-data-to-xml
在自适应表单字段中输入值并提交时,数据在crx存储库中以JSON格式提供。 您可以使用org.apache.sling.commons.json.xml API或以下示例代码将JSON数据的格式转换为XML:
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;
import org.apache.sling.commons.json.xml.XML;
public class ConversionUtils {
public static String jsonToXML(String jsonString) throws JSONException {
//https://sling.apache.org/apidocs/sling5/org/apache/sling/commons/json/xml/XML.html#toString(java.lang.Object)
//jar - http://maven.ibiblio.org/maven2/org/apache/sling/org.apache.sling.commons.json/2.0.18/
//Note: Need to extract boundData part before converting to XML
return XML.toString(new JSONObject(jsonString));
}
}