1. 用 WebDAV 文档创建知识库

现在我们实现 Onboarding 应用程序的一个核心功能:创建一个知识库管理系统。

文件和文档由系统中的 WebdavDocumentWrapper 实体表示。实体中包含 WebdavDocument 的引用,这是文档的描述(由扩展组件提供),以及文档归属部门实体的引用。具有管理员权限的用户可以通过专门的视图管理文档列表,包括创建、修改或删除。主要的功能点有:

  • WebdavDocumentWrapper 实体,与 WebdavDocumentDepartment 实体关联。

  • 实体对应的数据库表。

  • 实体的 CRUD 视图。

创建 WebdavDocumentWrapper 实体

首先我们创建 WebdavDocumentWrapper 实体。

入门教程的 2. 简单的增删改查 部分有创建实体的详细介绍。

Jmix 工具窗口中,点击 Newadd)→ JPA Entity。在 Class 字段输入 WebdavDocumentWrapper

WebdavDocumentWrapper 实体有以下属性:

  • description - String 类型。

  • department - Department 类型。

  • webdavDocument - WebdavDocument 类型:

    webdav document attr

切换到底部的 Text tab 可以看到由设计器生成的实体类源码:

webdav document text

创建 CRUD 视图

现在为 WebdavDocumentWrapper 实体创建 CRUD 视图。

点击实体设计器的顶部操作面板的 Views → Create view

向导的第一步中,选择 Entity list and detail views 模板。点击 Next

后续两步中,使用推荐的设置即可。

Entity list view fetch plan 步骤中,添加 webdavDocumentdepartment 属性:

create doc wrapper list fetch

这样可以确保 WebdavDocumentDepartment 的实体引用能与根实体 WebdavDocumentWrapper 一同加载并显示在列表视图中。

如果一个属性不在 fetch plan 中,Studio 不会在生成的视图中为该属性创建可视化组件。

点击 Next

Entity detail view fetch plan 步骤中,这些属性会自动添加。点击 Next

Localizable messages 步骤中,修改列表视图的本地化消息值为 Knowledge base,并点击 Create

create doc wrapper list lmessage

Studio 会自动生成两个视图:WebdavDocumentWrapper.listWebdavDocumentWrapper.detail,并且打开其对应的源码。

运行应用程序

创建实体和 CRUD 视图后,我们可以运行应用程序并查看新添加的功能。 点击主工具栏的 Debugstart debugger)按钮

在启动应用程序之前,Studio 会将项目数据模型与数据库结构进行比较。在创建新实体后,Studio 会自动生成 Liquibase changelog,以反映相关的数据库修改情况(例如创建 WEBDAV_DOCUMENT_WRAPPER 表):

db wd wrapper

点击 Save and run

Studio 会在数据库上执行 changelog,然后构建和运行应用程序。

应用程序启动并运行后,使用浏览器打开 http://localhost:8080 ,然后用 admin/admin 登录。

从主菜单中选择 Knowledge base。打开 Webdav document wrapper.list 视图。点击 Create 打开 Webdav document wrappers.detail 视图。除了文件描述的文本控件外,还可以看到有 DepartmentWebdav document 实体选择器。

wd wrapper detail blank

可以点击选择器控件中的省略号按钮来选择 WebDAV 文档。此时会打开由扩展组件提供的 WebDAV 文档 视图窗口。从 WebDAV 文档的表格中选择一行,或上传新的文档,然后向下滚动可以看到 Select 按钮:

wd wrapper detail select doc

选择了文档后,点击 Select。选择器控件会显示 WebDAV 文档的 id:

wb doc id picker

点击 OK。WebDAV 文档的 id 也会显示在表格中:

wb doc id data grid

可以看到,在这个阶段处理 WebDAV 文档并不是很方便。将文档上传到应用程序需要很多步骤,上传后,我们只能看到文档标识符,而看不到任何有关文档的其他信息。在下一节中,我们将利用扩展组件提供的 UI 组件,并改善 Knowledge Base 视图的 UI。

总结

在本节中,我们创建了应用程序的基本功能:知识库管理系统。

我们了解到:

  • WebDAV 扩展组件提供 WebdavDocument 实体,用以表示 WebDAV 文档。通过该实体可以使用 Microsoft Word 和 Excel 等外部应用程序编辑和查看文档、管理文档版本,以及控制特定文档的访问权限。

  • 默认情况下,在详情视图中使用 entityPicker 组件选择实体的引用。单击 WebDAV document 控件的省略号按钮将打开扩展组件提供的标准 WebDAV 文档视图