使用AEM Workflow集成自适应表单与数据库 submit-forms-to-database-using-forms-portal
automated forms conversion服务(AFCS)允许您将非交互式PDF表单、Acro表单或基于XFA的PDF表单转换为自适应表单。 启动转换过程时,您可以选择生成带数据绑定或不带数据绑定的自适应表单。
如果选择生成无数据绑定的自适应表单,则可以在转换后将已转换的自适应表单与表单数据模型、XML架构或JSON架构集成。 对于表单数据模型,您需要手动将自适应表单字段与表单数据模型绑定。 但是,如果生成具有数据绑定的自适应表单,则转换服务会自动将自适应表单与JSON架构相关联,并在自适应表单中的可用字段与JSON架构之间创建数据绑定。 然后,您可以将自适应表单与所选的数据库集成,在表单中填写数据并将其提交到数据库。 同样,成功与数据库集成后,您可以在转换后的自适应表单中配置字段,以从数据库中检索值并预填充自适应表单字段。
下图描述了将已转换的自适应表单与数据库集成的不同阶段:
本文介绍了成功执行所有这些集成阶段的分步说明。
先决条件 pre-requisites
- 设置AEM 6.4或6.5创作实例
- 为您的AEM实例安装最新的Service Pack
- 最新版本的AEM Forms附加组件包
- 配置Automated forms conversion服务
- 设置数据库。 示例实施中使用的数据库是MySQL 5.6.24。但是,您可以将转换后的自适应表单与所选的任何数据库集成。
自适应表单示例 sample-adaptive-form
要执行用例以使用AEM工作流将转换后的自适应表单与数据库集成,请下载以下示例PDF文件。
您可以使用以下地址下载示例“联系我们”表单:
PDF文件用作Automated forms conversion服务(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,选择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。 从 Read Service 和 Write Service 下拉列表中选择 get 和 insert。 指定读取服务的参数并点按 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服务(AFCS)将 联系我们表单转换为具有数据绑定的自适应表单。 确保在生成自适应表单时未选中 Generate adaptive form(s) without data bindings 复选框。
具有JSON绑定的
选择在 Forms & Documents 的 output 文件夹中提供的转换后的 联系我们表单,然后点按 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 字段中创建的表单数据模型,并从 Service 下拉列表中选择 insert。
-
在 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
执行以下步骤,将自适应表单提交到您在上一节中创建的工作流模型:
-
选择可在 Forms & Documents 的 output 文件夹中找到的已转换的“联系我们”表单,然后点按 Edit。
-
通过点按 Form Container,然后点按 打开自适应表单属性。
-
在 Submission 部分中,从 Submit Action 下拉列表中选择 Invoke an AEM workflow,选择您在上一部分中创建的工作流模型,并在 Data File Path 字段中指定 data.xml。
-
点按 以保存属性。
-
点按 Preview,在自适应表单字段中输入值,然后点按 Submit。 提交值现在显示在MYSQL数据库表中,而不是 crx-repository 中。
配置自适应表单以预填充数据库中的值
执行以下步骤来配置自适应表单,以根据表中定义的主键从MYSQL数据库预填充值(本例中为Email):
-
点按自适应表单中的 电子邮件 字段,然后点按 。
-
点按 Create 并从 When 部分的 Select State 下拉列表中选择 is changed。
-
在 Then 部分中,选择 Invoke Service 和 get 作为您在此文章的上一部分中创建的表单数据模型的服务。
-
在 Input 部分中选择 电子邮件,在 Output 部分中选择表单数据模型的其余三个字段:名称、电话号码 和 问题描述。 点按 Done 以保存设置。
因此,您可以基于MYSQL数据库中的现有电子邮件条目,在自适应表单的 Preview 模式下预填充其余三个字段的值。 例如,如果您在 电子邮件 字段(基于本文的准备表单数据模型部分中的现有数据)中指定aya.tan@xyz.com并以跳出字段的方式指定,则其余三个字段 姓名、电话号码 和 问题描述 会自动显示在自适应表单中。
您可以使用以下方式下载示例转换后的自适应表单: