automated forms conversion服务允许您将非交互式PDF表单、Acro表单或基于XFA的PDF表单转换为自适应表单。 启动转换过程时,您可以选择生成具有或不具有数据绑定的自适应表单。
如果选择生成不带数据绑定的自适应表单,则可以在转换后将转换后的自适应表单与表单数据模型、XML架构或JSON架构相集成。 对于表单数据模型,您需要使用表单数据模型手动绑定自适应表单字段。 但是,如果您生成具有数据绑定的自适应表单,则转换服务会自动将自适应表单与JSON模式关联,并在自适应表单和JSON模式中可用的字段之间创建数据绑定。 然后,您可以将自适应表单与您选择的数据库相集成,在表单中填写数据,并将其提交到数据库。 同样,成功与数据库集成后,您可以配置转换的自适应表单中的字段,以从数据库中检索值并预填自适应表单字段。
下图描述了将已转换的自适应表单与数据库集成的不同阶段:
本文介绍了成功执行所有这些集成阶段的分步说明。
要执行用例以使用AEM工作流将转换后的自适应表单与数据库集成,请下载以下示例PDF文件。
您可以使用以下方式下载示例联系我们表单:
PDF文件用作Automated forms conversion服务的输入。 该服务将此文件转换为自适应表单。 下图描述了PDF格式的联系方式表单示例。
对所有创作实例和发布实例执行以下步骤,以安装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。AEM Forms数据集成允许您配置不同的数据源并将其连接到不同的数据源。 使用转换过程生成自适应表单后,您可以根据表单数据模型、XSD或JSON架构定义表单模型。 您可以使用数据库、Microsoft Dynamics或任何其他第三方服务来创建表单数据模型。
本教程使用MySQL数据库作为创建表单数据模型的源。 在数据库中创建架构,并根据自适应表单中可用的字段将contacts表添加到架构中。
可以使用以下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实例与MYSQL数据库之间创建连接:
转到位于http://server:port/system/console/configMgr
的AEM Web控制台配置页面。
在“Web控制台配置”的编辑模式下,找到并单击以打开Apache Sling Connection Pooled DataSource。 指定属性的值,如下表所述:
属性 | 值 |
---|---|
数据源名称 |
用于从数据源池筛选驱动程序的数据源名称。 |
JDBC驱动程序类 |
com.mysql.jdbc.Driver |
JDBC连接URI |
jdbc:mysql://[host]:[port]/[schema_name] |
用户名 |
对数据库表进行身份验证和执行操作的用户名 |
密码 |
与用户名关联的密码 |
事务隔离 |
READ_COMMITTED |
最大活动连接数 |
1000 |
最大空闲连接数 |
100 |
最小空闲连接 |
10 |
初始大小 |
10 |
最大等待 |
100000 |
借用测试 |
已选中 |
空闲时测试 |
已选中 |
验证查询 |
示例值包括:SELECT 1(mysql)、从dual(oracle)中选择1、SELECT 1(MS Sql Server)(validationQuery) |
验证查询超时 |
10000 |
将MYSQL配置为数据源后,请执行以下步骤以创建表单数据模型:
在AEM创作实例中,导航到Forms > Data Integrations。
点按 Create > Form Data Model.
在Create Form Data Model向导中,指定workflow_submit作为表单数据模型的名称。 点按 Next.
选择您在上一部分中配置的MYSQL数据源,然后点按Create。
点按Edit并展开左窗格中列出的数据源,以选择contacts表、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以保存表单数据模型。
您可以使用以下方式下载示例表单数据模型:
使用Automated forms conversion服务将 联系我们表单转换为具有数据绑定的自适应表单。 确保在生成自适应表单时不选中Generate adaptive form(s) without data bindings复选框。
选择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数据库。
执行以下步骤以创建工作流模型,将自适应表单数据提交到数据库:
打开“工作流模型”控制台。 默认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部分中,为表单数据模型参数提供以下值:
请注意,表单数据模型字段(例如,contactus点名称)已映射到afData.afBoundData.data.name1,该字段是指提交的自适应表单的JSON架构绑定。
执行以下步骤,将自适应表单提交到您在上一部分中创建的工作流模型:
选择Forms & Documents的output文件夹中提供的已转换的“联系我们”表单,然后点按Edit。
点按Form Container,然后点按,以打开自适应表单属性。
在Submission部分中,从Submit Action下拉列表中选择Invoke an AEM workflow,选择在上一部分中创建的工作流模型,然后在Data File Path字段中指定data.xml。
点按以保存属性。
点按Preview,在自适应表单字段中输入值,然后点按Submit。 现在,提交的值显示在MYSQL数据库表中,而不是crx-repository中。
请执行以下步骤,以根据表中定义的主键值(本例中为“电子邮件”)配置自适应表单,从MYSQL数据库中预填充值:
点按自适应表单中的E-mail字段,然后点按。
点按Create,然后从When部分的Select State下拉列表中选择is changed。
在Then部分中,选择Invoke Service和get作为您在本文上一部分中创建的表单数据模型的服务。
在Input部分中选择E-mail,在Output部分选择表单数据模型的其余三个字段:名称、电话号码和问题说明。 点按Done以保存设置。
因此,根据MYSQL数据库中的现有电子邮件条目,您可以在自适应表单的Preview模式下预填其余三个字段的值。 例如,如果您在E-mail字段中指定aya.tan@xyz.com(基于本文Prepare form data model部分中的现有数据)并跳出该字段,则其余三个字段(Name、电话号码和问题说明)会自动显示在自适应表单中。
您可以使用以下方式下载已转换的自适应表单示例: