使用AEM Workflow集成自适应表单与数据库 submit-forms-to-database-using-forms-portal
利用自动表单转换服务(AFCS),您可以将非交互式PDF表单、Acro表单或基于XFA的PDF表单转换为自适应表单。 启动转换过程时,您可以选择生成带数据绑定或不带数据绑定的自适应表单。
如果选择生成无数据绑定的自适应表单,则可以在转换后将已转换的自适应表单与表单数据模型、XML架构或JSON架构集成。 对于表单数据模型,您需要手动将自适应表单字段与表单数据模型绑定。 但是,如果生成具有数据绑定的自适应表单,则转换服务会自动将自适应表单与JSON架构相关联,并在自适应表单中的可用字段与JSON架构之间创建数据绑定。 然后,您可以将自适应表单与所选的数据库集成,在表单中填写数据并将其提交到数据库。 同样,成功与数据库集成后,您可以在转换后的自适应表单中配置字段,以从数据库中检索值并预填充自适应表单字段。
下图描述了将已转换的自适应表单与数据库集成的不同阶段:
本文介绍了成功执行所有这些集成阶段的分步说明。
先决条件 pre-requisites
- 设置AEM 6.5或AEM 6.5 LTS创作实例
- 为您的AEM实例安装最新的Service Pack
- 最新版本的AEM Forms附加组件包
- 配置自动表单转换服务
- 设置数据库。 示例实施中使用的数据库是MySQL 5.6.24。但是,您可以将转换后的自适应表单与所选的任何数据库集成。
自适应表单示例 sample-adaptive-form
要执行用例以使用AEM工作流将转换后的自适应表单与数据库集成,请下载以下示例PDF文件。
您可以使用以下地址下载示例“联系我们”表单:
PDF文件用作自动表单转换服务(AFCS)的输入。 服务会将此文件转换为自适应表单。 下图展示了PDF格式的示例联系我们表单。
安装mysql-connector-java-5.1.39-bin.jar文件 install-mysql-connector-java-file
在所有创作实例和发布实例上执行以下步骤,安装mysql-connector-java-5.1.39-bin.jar文件:
- 导航到
http://server:port/system/console/depfinder并搜索com.mysql.jdbc包。 - 在“导出方式”列中,检查包是否由任何捆绑导出。 如果包未由任何捆绑包导出,请继续。
- 导航到
http://server:port/system/console/bundles并单击Install/Update。 - 单击 Choose File 并浏览以选择mysql-connector-java-5.1.39-bin.jar文件。 此外,选中 Start Bundle 和 Refresh Packages 复选框。
- 单击 Install 或Update。 完成后,重新启动服务器。
- (仅限Windows)关闭操作系统的系统防火墙。
为表单模型准备数据 prepare-data-for-form-model
AEM Forms数据集成允许您配置并连接到不同的数据源。 使用转换过程生成自适应表单后,您可以根据表单数据模型、XSD或JSON架构定义表单模型。 您可以使用数据库、Microsoft Dynamics或任何其他第三方服务来创建表单数据模型。
本教程使用MySQL数据库作为创建表单数据模型的源。 在数据库中创建架构,并根据自适应表单中可用的字段将 contactus 表添加到架构中。
您可以使用以下DDL语句在数据库中创建 contactus 表。
CREATE TABLE `contactus` (
`name` varchar(45) NOT NULL,
`email` varchar(45) NOT NULL,
`phonenumber` varchar(10) DEFAULT NULL,
`issuedesc` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
配置AEM实例与数据库之间的连接 configure-connection-between-aem-instance-and-database
执行以下配置步骤以创建AEM实例与MYSQL数据库之间的连接:
-
转到
http://server:port/system/console/configMgr处的AEM Web控制台配置页面。 -
在Web控制台配置中,查找并单击以编辑模式打开Apache Sling Connection Pooled DataSource。 按照下表所述指定属性的值:
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 8-row-2 9-row-2 10-row-2 11-row-2 12-row-2 13-row-2 14-row-2 15-row-2 html-authored 属性 值 数据源名称 用于从数据源池筛选驱动程序的数据源名称。 JDBC驱动程序类 com.mysql.jdbc.Driver JDBC连接URI jdbc//[主机]:[端口]/[架构名称] 用户名 用于对数据库表进行身份验证和执行操作的用户名 密码 与用户名关联的密码 事务隔离 读取已提交 最大活动连接数 1000 最大空闲连接数 100 最小空闲连接数 10 初始大小 10 最大等待 100000 借阅测试 已选中 空闲时测试 已选中 验证查询 示例值为SELECT 1(mysql),从dual(oracle)中选择1,从SELECT 1(MS Sql Server) (validationQuery) 验证查询超时 10000
创建表单数据模型 create-form-data-model
将MYSQL配置为数据源后,请执行以下步骤以创建表单数据模型:
-
在AEM创作实例中,导航到Forms > Data Integrations。
-
点按Create > Form Data Model。
-
在 Create Form Data Model 向导中,将 workflow_submit 指定为表单数据模型的名称。 点按Next。
-
选择您在上一部分中配置的MYSQL数据源,然后点按Create。
-
点按 Edit 并展开左窗格中列出的数据源以选择 contactus 表、get和 insert 服务,然后点按Add Selected。
-
在右窗格中选择数据模型对象,然后点按Edit Properties。 从 get 和 insert 下拉列表中选择 Read Service 和Write Service。 指定读取服务的参数并点按Done。
-
在 Services 选项卡中,选择 get 服务并点按Edit Properties。 选择Output Model Object,禁用 Return array 切换功能,然后点按Done。
-
选择 Insert 服务并点按Edit Properties。 选择 Input Model Object 并点按Done。
-
点按 Save 以保存表单数据模型。
您可以使用以下内容下载示例表单数据模型:
生成具有JSON绑定的自适应表单 generate-adaptive-forms-with-json-binding
使用自动表单转换服务(AFCS)将 联系我们表单转换为具有数据绑定的自适应表单。 确保在生成自适应表单时未选中 Generate adaptive form(s) without data bindings 复选框。
具有JSON绑定的
选择在 的 文件夹中提供的转换后的 output 联系我们表单Forms & Documents,然后点按Edit。 点按Preview,在自适应表单字段中输入值,然后点按Submit。
登录到 crx-repository 并导航到/content/forms/fp/admin/submit/data,以查看JSON格式提交的值。 以下是您提交转换后的 联系我们 自适应表单时JSON格式的示例数据:
{
"afData": {
"afUnboundData": {
"data": {}
},
"afBoundData": {
"data": {
"name1": "Gloria",
"email": "abc@xyz.com",
"phone_number": "2346578965",
"issue_description": "Test message"
}
},
"afSubmissionInfo": {
"computedMetaInfo": {},
"stateOverrides": {},
"signers": {},
"afPath": "/content/dam/formsanddocuments/docs_conversion/output/sample_form_json",
"afSubmissionTime": "20191204014007"
}
}
}
您需要立即创建一个工作流模型,以便能够处理此数据,并使用在前几节中创建的表单数据模型将其提交到MYSQL数据库。
创建工作流模型以处理JSON数据 create-workflow-model
执行以下步骤来创建工作流模型,将自适应表单数据提交到数据库:
-
打开工作流模型控制台。 默认 URL 为
https://server:port/libs/cq/workflow/admin/console/content/models.html/etc/workflow/models。 -
选择Create,然后选择Create Model。 出现 Add Workflow Model 对话框。
-
输入 Title 和Name(可选)。 例如,workflow_json_submit。 点按 Done 以创建模型。
-
选择工作流模型并点按 Edit 以在编辑模式下打开该模型。 点按+并将 Invoke Form Data Model Service 步骤添加到工作流模型。
-
点按 Invoke Form Data Model Service 步骤,然后点按
。
-
在 Form Data Model 选项卡中,选择已在 Form Data Model path 字段中创建的表单数据模型,并从 insert 下拉列表中选择Service。
-
在 Input for Service 选项卡中,从下拉列表中选择Provide input data using literal, variable, or a workflow metadata, and a JSON file,选中 Map input fields from input JSON 复选框,选择Relative to payload,并提供 data.xml 作为 Select input JSON document using 字段的值。
-
在 Service Arguments 节中,为表单数据模型参数提供以下值:
请注意,表单数据模型字段(例如,contactact点名称)映射到afData.afBoundData.data.name1,该字段引用了所提交自适应表单的JSON架构绑定。
配置自适应表单提交 configure-adaptive-form-submission
执行以下步骤,将自适应表单提交到您在上一节中创建的工作流模型:
-
选择可在 output 的 Forms & Documents 文件夹中找到的已转换的“联系我们”表单,然后点按Edit。
-
通过点按Form Container,然后点按
打开自适应表单属性。
-
在 Submission 部分中,从 Invoke an AEM workflow 下拉列表中选择Submit Action,选择您在上一部分中创建的工作流模型,并在字段中指定 data.xml Data File Path。
-
点按
以保存属性。
-
点按Preview,在自适应表单字段中输入值,然后点按Submit。 提交值现在显示在MYSQL数据库表中,而不是 crx-repository 中。
配置自适应表单以预填充数据库中的值
执行以下步骤来配置自适应表单,以根据表中定义的主键从MYSQL数据库预填充值(本例中为Email):
-
点按自适应表单中的 电子邮件 字段,然后点按
。
-
点按 Create 并从 is changed 部分的 Select State 下拉列表中选择When。
-
在 Then 部分中,选择 Invoke Service 和 get 作为您在此文章的上一部分中创建的表单数据模型的服务。
-
在 部分中选择 电子邮件Input,在 部分中选择表单数据模型的其余三个字段: 名称 、 电话号码 和 问题描述Output。 点按 Done 以保存设置。
因此,您可以基于MYSQL数据库中的现有电子邮件条目,在自适应表单的 Preview 模式下预填充其余三个字段的值。 例如,如果您在 电子邮件 字段(基于本文的准备表单数据模型部分中的现有数据)中指定aya.tan@xyz.com并以跳出字段的方式指定,则其余三个字段姓名、电话号码和 问题描述 会自动显示在自适应表单中。
您可以使用以下方式下载示例转换后的自适应表单: