1. 用 WebDAV 文档创建知识库

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

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

  • WebdavDocumentWrapper 实体,与 WebdavDocument 和 Department 实体关联。

  • 实体对应的数据库表。

  • 实体的 CRUD 视图。

创建 WebdavDocumentWrapper 实体

首先我们创建 WebdavDocumentWrapper 实体。

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

在 Jmix 工具窗口中,点击 New(add)→ 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 步骤中,添加 webdavDocument 和 department 属性:

create doc wrapper list fetch

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

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

点击 Next。

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

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

create doc wrapper list lmessage

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

运行应用程序

创建实体和 CRUD 视图后,我们可以运行应用程序并查看新添加的功能。 点击主工具栏的 Debug(start 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 视图。除了文件描述的文本控件外,还可以看到有 Department 和 Webdav 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 文档。通过该实体可以使用外部应用程序编辑和查看文档、管理文档版本,以及控制特定文档的访问权限。

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