使用 AEM 工作流实现自适应表单与数据库集成

automated forms conversion服务允许您将非交互式PDF表单、Acro表单或基于XFA的PDF表单转换为自适应表单。 启动转换过程时,您可以选择生成带有或不带数据绑定的自适应表单。

如果选择生成不带数据绑定的自适应表单,则转换后可以将转换后的自适应表单与表单数据模型、XML模式或JSON模式集成。 对于表单数据模型,您需要手动将自适应表单字段与表单数据模型绑定。 但是,如果您生成具有数据绑定的自适应表单,转换服务会自动将自适应表单与JSON模式关联,并在自适应表单和JSON模式中可用的字段之间创建数据绑定。 然后,您可以将自适应表单与您选择的数据库集成,在表单中填写数据,并将其提交到数据库。 同样,在成功与数据库集成后,您可以配置转换的自适应表单中的字段,从数据库检索值并预填自适应表单字段。

下图描述了将转换的自适应表单与数据库集成的不同阶段:

数据库集成

本文描述了成功执行所有这些集成阶段的分步说明。

先决条件

  • 设置AEM 6.4或6.5作者实例
  • 为AEM实例安装最新的Service Pack
  • 最新版本的AEM Forms加载项包
  • 配置Automated forms conversion服务
  • 设置数据库。 示例实现中使用的数据库是MySQL 5.6.24。但是,可以将转换后的自适应表单与您选择的任何数据库集成。

自适应表单示例

要执行用例以使用AEM工作流将转换的自适应表单与数据库集成,请下载以下范例PDF文件。

您可以使用以下方式下载示例联系我们表单:

获取文件

PDF文件用作Automated forms conversion服务的输入。 服务将此文件转换为自适应表单。 下图以PDF格式描述了示例联系人表单。

示例贷款申请表

安装mysql-connector-java-5.1.39-bin.jar文件

对所有作者实例和发布实例执行以下步骤以安装mysql-connector-java-5.1.39-bin.jar文件:

  1. 导航到http://server:port/system/console/depfinder并搜索com.mysql.jdbc包。
  2. 在“导出依据”列中,检查包是否由任何捆绑导出。 如果包未由任何包导出,请继续。
  3. 导航到http://server:port/system/console/bundles并单击​Install/Update
  4. 单击​Choose File​并浏览以选择mysql-connector-java-5.1.39-bin.jar文件。 此外,选择​Start Bundle​和​Refresh Packages​复选框。
  5. 单击​Install​或​Update。 完成后,重新启动服务器。
  6. (仅限Windows)关闭操作系统的系统防火墙。

为表单型号准备数据

AEM Forms数据集成允许您配置和连接不同的数据源。 在使用转换过程生成自适应表单后,您可以根据表单数据模型、XSD或JSON模式定义表单模型。 您可以使用数据库、Microsoft Dynamics或任何其他第三方服务创建表单数据模型。

本教程使用MySQL数据库作为源创建表单数据模型。 在模式库中创建模式,并根据自适应表单中可用的字段将​contacts​表添加到。

示例数据mysql

可以使用以下DDL语句在数据库中创建​contacts​表。

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实例与数据库之间的连接

执行以下配置步骤以在AEM实例和MYSQL数据库之间创建连接:

  1. 转到位于http://server:port/system/console/configMgr的AEM Web控制台配置页。

  2. 查找并单击以在Web控制台配置的编辑模式下打开​Apache Sling Connection Pooled DataSource。 如下表所述,指定属性的值:

    属性

    数据源名称

    用于从数据源池过滤驱动程序的数据源名称。

    JDBC驱动程序类

    com.mysql.jdbc.Driver

    JDBC连接URI

    jdbc:mysql://[host]:[port]/[模式名]

    用户名

    对数据库表进行身份验证和执行操作的用户名

    密码

    与用户名关联的口令

    事务隔离

    READ_COMMITTED

    最大活动连接数

    1000

    最大空闲连接数

    100

    最小空闲连接数

    10

    初始大小

    10

    最大等待

    100000

    借阅测试

    已选中

    空闲时测试

    已选中

    验证查询

    示例值为SELECT 1(mysql)、从dual(oracle)、SELECT 1(MS Sql Server)(validationQuery)中选择1

    验证查询超时

    10000

创建表单数据模型

将MYSQL配置为数据源后,请执行以下步骤以创建表单数据模型:

  1. 在AEM作者实例中,导航到​Forms > Data Integrations

  2. 点按 Create > Form Data Model.

  3. 在​Create Form Data Model​向导中,指定​workflow_submit​作为表单数据模型的名称。 点按 Next.

  4. 选择您在上一节中配置的MYSQL数据源,然后点按​Create

  5. 点按​Edit​并展开左窗格中列出的数据源以选择​contacts​表、get​和​insert​服务,然后点按​Add Selected

    示例数据mysql

  6. 在右窗格中选择数据模型对象,然后点按​Edit Properties。 从​Read Service​和​Write Service​下拉列表中选择​get​和​insert。 指定读取服务的参数,然后点按​Done

  7. 在​Services​选项卡中,选择​get​服务并点按​Edit Properties。 选择​Output Model Object,禁用​Return array​切换,然后点按​Done

  8. 选择​Insert​服务并点按​Edit Properties。 选择​Input Model Object​并点按​Done

  9. 点按​Save​以保存表单数据模型。

您可以使用以下方式下载示例表单数据模型:

获取文件

生成具有JSON绑定的自适应表单

使用[Automated forms conversion服务将联系我们表单转换为具有数据绑定的自适应表单。 ](convert-existing-forms-to-adaptive-forms.md)确保在生成自适应表单时不选中​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数据

执行以下步骤以创建工作流模型,将自适应表单数据提交到数据库:

  1. 打开工作流模型控制台。 默认URL为https://server:port/libs/cq/workflow/admin/console/content/models.html/etc/workflow/models

  2. 选择​Create,然后选择​Create Model。 出现​Add Workflow Model​对话框。

  3. 输入​Title​和​Name(可选)。 例如,workflow_json_submit。 点按​Done​以创建模型。

  4. 选择工作流模型并点按​Edit​以在编辑模式下打开模型。 点按+并将​Invoke Form Data Model Service​步骤添加到工作流模型。

  5. 点按​Invoke Form Data Model Service​步骤,然后点按配置

  6. 在​Form Data Model​选项卡中,选择您在​Form Data Model path​字段中创建的表单数据模型,然后从​Service​下拉列表中选择​insert

  7. 在​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​字段的值。

  8. 在​Service Arguments​部分,为表单数据模型参数提供以下值:

    调用表单数据模型服务

    请注意,表单数据模型字段(例如,contactus点名)已映射到​afData.afBoundData.data.name1,它指提交的自适应表单的JSON模式绑定。

配置自适应表单提交

执行以下步骤,将自适应表单提交到您在上一节中创建的工作流模型:

  1. 在​Forms & Documents​的​output​文件夹中选择已转换的“联系我们”表单,然后点按​Edit

  2. 点按​Form Container​然后点按配置,打开自适应表单属性。

  3. 在​Submission​部分,从​Submit Action​下拉列表中选择​Invoke an AEM workflow,选择您在上一节中创建的工作流模型,并在​Data File Path​字段中指定​data.xml

  4. 点按保存以保存属性。

  5. 点按​Preview,在自适应表单字段中输入值,然后点按​Submit。 提交的值现在显示在MYSQL数据库表中,而不是​crx-repository

配置自适应表单以从数据库预填值

执行以下步骤,根据表中定义的主键(本例中为“电子邮件”)配置自适应表单以预填MYSQL数据库中的值:

  1. 点按自适应表单中的​电子邮件​字段,然后点按编辑规则

  2. 点按​Create​并从​When​部分的​Select State​下拉列表中选择​is changed

  3. 在​Then​部分,选择​Invoke Service​和​get​作为您在本文上一节中创建的表单数据模型的服务。

  4. 在​Input​部分选择​电子邮件,在​Output​部分选择表单数据模型的其余三个字段:名称电话号码​和​问题说明。 点按​Done​以保存设置。

    配置电子邮件预填设置

    因此,根据MYSQL数据库中现有的电子邮件条目,您可以在自适应表单的​Preview​模式中预填其余三个字段的值。 例如,如果在​电子邮件​字段中指定aya.tan@xyz.com(基于本文准备表单数据模型部分中的现有数据)并跳出字段,则其余三个字段​名称电话号码​和​问题description​在自适应表单中自动显示。

您可以使用以下方式下载转换的自适应表单示例:

获取文件

在此页面上