使用 AEM 工作流实现自适应表单与数据库集成 submit-forms-to-database-using-forms-portal
automated forms conversion服务允许您将非交互式PDF表单、Acro表单或基于XFA的PDF表单转换为自适应表单。 启动转换过程时,您可以选择生成带有或不带有数据绑定的自适应表单。
如果选择生成不带数据绑定的自适应表单,则可以在转换后将转换后的自适应表单与表单数据模型、XML架构或JSON架构集成。 对于表单数据模型,您需要手动将自适应表单字段与表单数据模型绑定。 但是,如果生成带有数据绑定的自适应表单,转换服务会自动将自适应表单与JSON架构相关联,并在自适应表单中可用的字段与JSON架构之间创建数据绑定。 然后,您可以将自适应表单与所选数据库集成,在表单中填写数据,然后将其提交到数据库。 同样,成功与数据库集成后,您可以在转换后的自适应表单中配置字段,以从数据库中检索值并预填充自适应表单字段。
下图描述了将已转换的自适应表单与数据库集成的不同阶段:
本文介绍了成功执行所有这些集成阶段的分步说明。
先决条件 pre-requisites
- 设置AEM 6.4或6.5创作实例
- 安装 最新Service Pack (对于您的AEM实例)
- 最新版本的AEM Forms附加组件包
- 配置 automated forms conversion服务
- 设置数据库。 示例实施中使用的数据库是MySQL 5.6.24。但是,您可以将转换后的自适应表单与所选的任何数据库集成。
自适应表单示例 sample-adaptive-form
要执行用例以使用AEM工作流将转换后的自适应表单与数据库集成,请下载以下示例PDF文件。
您可以使用以下地址下载示例联系我们表单:
PDF文件用作Automated forms conversion服务的输入。 服务会将此文件转换为自适应表单。 下图描述了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数据库作为创建表单数据模型的源。 在数据库中创建架构并添加 contactact 表根据自适应表单中可用的字段添加到架构。
您可以使用以下DDL语句创建 contactact 表中的数据。
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数据库之间的连接:
-
转到AEM Web Console的“配置”页,网址为
http://server:port/system/console/configMgr
. -
查找并单击以打开 Apache Sling Connection Pooled DataSource 在“Web控制台配置”的编辑模式下。 按照下表中的说明指定属性的值:
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//[主机]:[端口]/[模式名称] 用户名 用于对数据库表进行身份验证和执行操作的用户名 密码 与用户名关联的密码 事务隔离 READ_COMMITTED 最大活动连接数 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 并展开左侧窗格中列出的数据源以选择 contactact 表格, 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
使用 要转换的Automated forms conversion服务 此 联系我们表单 到具有数据绑定的自适应表单。 确保不选择 Generate adaptive form(s) without data bindings 复选框。
选择已转换的 联系我们表单 中提供 output 文件夹位置 Forms & Documents 并点按 Edit. 点按 Preview,在自适应表单字段中输入值并点按 Submit.
登录 crx存储库 并导航到 /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 部分,为表单数据模型参数提供以下值:
请注意,表单数据模型字段(例如,接触点名称)将映射到 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存储库.
配置自适应表单以预填充数据库中的值
执行以下步骤来配置自适应表单,以根据表中定义的主键从MYSQL数据库中预填充值(本例中为Email):
-
点按 电子邮件 自适应表单中的字段并点按 .
-
点按 Create 并选择 is changed 从 Select State 中的下拉列表 When 部分。
-
在 Then 部分,选择 Invoke Service 和 get 作为您在本文前一部分中创建的表单数据模型的服务。
-
选择 电子邮件 在 Input 以及表单数据模型的其余三个字段, 名称, 电话号码、和 问题描述 在 Output 部分。 点按 Done 以保存设置。
因此,您可以根据MYSQL数据库中的现有Email条目,预填充 Preview 自适应表单的模式。 aya.tan@xyz.com例如,如果您在 电子邮件 字段(基于中的现有数据) 准备表单数据模型 部分)和跳出字段,其余三个字段, 名称, 电话号码、和 问题描述 在自适应表单中自动显示。
您可以使用以下内容下载示例转换后的自适应表单: