【教程】第八章:知识库——学海无涯

news/2025/3/9 10:43:24/文章来源:https://www.cnblogs.com/nocobase/p/18613195

8.1 欢迎来到新的一章

在本章中,我们将深入学习如何构建一个知识库。这将是一个综合性的模块,帮助我们管理和组织文档、任务和信息。通过设计和创建一个树形结构的文档表,我们将实现对文档的状态、附件和关联任务的高效管理。

8.2 数据库设计初探

8.2.1 基础设计与文档表的创建

首先,我们从一个简单的数据库设计开始,为知识库构建一个“文档表”来记录所有文档的信息。文档表包括以下关键字段:

  1. 标题 (Title):这是文档的名称,使用单行文本格式。
  2. 内容 (Content):文档的详细内容,使用支持 Markdown 的多行文本格式。
  3. 文档状态 (Status):用于标记文档的当前状态,包括草稿、已发布、已归档和已删除四个选项。
  4. 附件 (Attachment):可添加文件和图片等附件,丰富文档内容。
  5. 关联任务 (Related Task):这是一个多对一关系字段,用于将文档与某个任务关联,方便任务管理中的文档引用。

我们也将随着功能扩展,在文档管理系统中逐步添加其他字段。

8.2.2 树形结构的构建与目录管理

树结构表(由树表插件提供),树形结构,其中每个数据项都可以有一个或多个子项,而这些子项又可以有自己的子项。

为确保文档的组织和层次,我们的文档表选择树结构表,这样便于实现父子关系的分类管理。创建树结构表时,系统自动生成以下字段:

  • 父记录 ID:用于记录当前文档的上级文档。
  • 父记录:多对一字段,帮助我们实现父子关联关系。
  • 子记录:一对多字段,便于查看某个文档下的所有子文档。

这几个字段用来维护一张树结构表的目录层级,所以不建议修改。

同时我们需要创建与任务表的关联关系(多对一),带上反向关联,方便我们需要时,在任务关联弹窗内创建文档列表。

8.3 创建文档管理页面

8.3.1 新建文档管理菜单

在系统的主菜单中,添加一个新的页面——“文档管理”,并选择合适的图标。然后,为我们的文档表创建一个表格区块。在表格区块中添加基本的增、删、改、查操作,并录入几条测试数据来测试数据表的设计是否正常。

练习

  1. 尝试在文档管理页面添加一个名为“文档 1”的父文档。
  2. 为“文档 1”添加一个子文档,命名为“第一章”。

8.3.2 转换为树表格视图

我知道你可能疑惑,为什么不是目录树结构?

默认情况下,表格区块会显示为普通表格视图,我们来手动开启:

  1. 点击表格区块右上角 > 树表格。

    你会发现勾选的一瞬间,树表格下方多了“展开全部”的开关。

    同时刚才创建的 “第一章” 消失了。

  2. 点击树表格下方的激活“展开全部”选项。

    此时,我们会看到文档的父子结构显示得更加直观,可以轻松查看并展开所有层级文档。

    我们顺手追加 “添加子记录” 操作。

树表转换成功!

8.3.3 “添加子记录” 配置

我们绘制一下添加需要的基本内容。注意这个时候如果我们勾选了父记录字段,会发现默认是 “只读(不可编辑)” 状态,因为我们默认是在当前文档下创建的。

任务数据太多的话,你可能会觉得分配关联任务特别麻烦,我们可以给任务筛选设置一个默认值,就让它等于父记录关联的任务吧。

默认值可能没有即时生效,我们关闭再点击看看,已经自动填充啦~

8.4 配置表单模板与任务关联

8.4.1 创建表格和表单模板

为了便于后续管理,我们将文档的表格、创建和编辑表单保存为模板,以便在其他页面复用。

8.4.2 文档表格区块复制展示

在任务表的查看弹窗中,添加一个新的标签页——“文档”。在该标签页中,添加表单区块 > 其他记录 > 文档表 >“复制模板”> 点击将我们之前创建的文档表单模板引入。(切记选择 复制模板

这种方式便于所有文档列表的创建。

8.4.3 任务关联改造

由于我们是复制的外部表格模板,并没有和任务表关联。你会发现展示出了全部的文档数据,肯定不是我们预期的效果。

这种情况比较常见,如果我们没有创建对应关系字段,又需要展示关联数据的话,就需要对二者做手动关联。(切记我们采用复制模板,不要选择引用模板,不然我们做的所有更改会同步到其他表格区块!)

  • 数据展示关联

我们点击表格区块右上角,“设置数据范围”为:

【任务/ID】= 【当前弹窗记录/ID】

成功,目前表格内留下来的文档都会是我们任务所绑定的。

  • 添加表单区块关联。

进入添加区块:

对于关联任务表字段,设置默认值 >【上级弹窗记录】。

上级弹窗 属于我们所在任务数据的“查看”操作中,会直接绑定对应的任务数据。

我们设置只读(阅读模式),代表在当前弹窗内,只能绑定当前任务。

搞定!现在新增、展示都会是所在任务关联的文档啦。

细心的你可以补充一下 “编辑”、“添加子任务”里面的关联筛选。

为了让树结构更加清晰明显,操作列更整齐美观点,我们把标题挪至第一列。

8.5 文档管理中的筛选与搜索

8.5.1 添加筛选区块

我们顺便给文档表增加筛选功能吧。

  • 在文档管理页面添加一个筛选区块。
  • 选择筛选中的表单,拖到最上面。
  • 勾选标题、状态、任务表字段等作为筛选条件。
  • 添加“筛选”和“重置”操作。

这个表单就是我们的搜索框,方便在输入关键词后快速查找相关文档。

8.5.2 连接数据区块

这个时候你会发现点击之后没效果,我们还需要最后一步:具备搜索功能的区块之间互相连接。

  • 我们点击区块右上角配置 > 连接数据区块。

    里面提供了可被连接的区块。因为我们创建的是文档表单,所以它会搜索所有关联文档表的数据区块(本页只有一个),并作为选项呈现出来。也不用担心分不清楚,我们鼠标挪到上面时,屏幕视角也会自动集中到对应区块上。
    
  • 点击开启需要被连接的区块,测试搜索。

通过点击筛选区块的右上角配置按钮,将筛选区块与文档表的主数据区块连接。这样,每次在筛选区块中设置条件后,表格区块会根据条件自动更新结果。

8.6 知识库权限设置

为确保文档安全和管理规范,可以根据角色为文档库分配权限。不同角色的用户可以根据权限配置,对文档进行查看、编辑或删除操作。

不过我们接下来会改造文档表,加上新闻、任务公告的功能,权限可以放开一点哦。

8.7 小结与下一步

在本章中,我们创建了一个基本的知识库,包括文档表、树形结构和与任务的关联展示。通过为文档添加筛选区块和模板复用,我们实现了高效的文档管理。

接下来,我们将进入下一章,学习如何搭建一个包含数据分析图表,重要信息展示的个人仪表盘!


继续探索,尽情发挥你的创造力!如果遇到问题,不要忘了随时可以查阅 NocoBase 官方文档 或加入 NocoBase 社区 进行讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/854438.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【YashanDB知识库】如何处理yasql输入交互模式下单行字符总量超过限制4000字节

现象 在yasql执行sql语句后报错:YASQL-00021 input line overflow (>4000 byte at line 4)原因 yasql在交互模式模式下单行字符总量限制4000字节,超出该限制即报错。 交互式模式下,yasql会显示一个提示符,通常是 SQL>,等待用户输入命令, 用户执行的每个命令都会立即…

Fiddler连接mumu模拟器抓包

主要介绍mumu模拟器如何设置 一、模拟器下载fiddler证书 保持本机 fiddler 运行状态 模拟器打开 localhost:8888(端口号),点击下载证书二、安装证书信任 路径:模拟器-网络和互联网-互联网-网络偏好设置 安装证书,选择下载好的 fiddler 证书即可三、开启手动代理 修改网络设…

编写 Java 单元测试最佳实践

在软件开发中,单元测试是保障代码质量的重要环节。对于程序员而言,它不仅提高了代码的稳定性和可维护性,还能帮助企业快速响应市场变化。然而,很多开发团队对单元测试的理解和实践并不深入。而腾讯云 AI 代码助手能够基于代码逻辑自动生成单元测试,减少手动编写测试代码的…

OCR数据集生成项目TextRecognitionDataGenerator

1、开源OCR数据集生成项目TextRecognitionDataGenerator 该项目通过 Python实现,可以通过 pip 安装: 终端: pip install trdg 然后在终端中输入以下命令: 终端:trdg -c 1000 -w 5 就可以生成如下图片,其中 -c 参数表示生成图片的数量, -w 表示图片中单词的个数。参考: …

virtualbox下host-only模型网络宿主机与虚拟机ping不通解决方法

环境介绍: 宿主机: centos 虚拟机:在virtualbox里安装的win7 Ping不通的原因: 宿主机(host)ping不通虚拟机(guest):一般是虚拟机里的windows系统防火墙没有关闭导致的 虚拟机(guest)ping不通宿主机(host):检查“默认网关”是否与virtualbox里设置的host-only的地址一致,一…

Python字符串及正则表达式(十):字符串常用操作、字符串编码转换

前言:在编程的世界里,字符串无处不在。它们是构建用户界面、存储数据、进行通信的基础元素。无论是财务系统的总账报表、电子游戏的比赛结果,还是火车站的列车时刻表,这些信息最终都需要以文本的形式呈现给用户。这些文本的背后,是程序经过精确计算、逻辑判断和数据整理的…

5款工作中好用备忘录软件推荐,好用的记事本工具分享

1、Windows系统自带sticky notes 又叫“便笺”,是Win系统自带的便笺工具。在应用程序中即可找到,打开它,就能在电脑桌面上看到。 是单个的彩色便利贴显示,可以把保存简单的文字和图片,用于简单的信息记录没问题。 但是不支持设置待办日程提醒,也无法一直悬挂在电脑桌面上…

VMware-克隆虚拟机

vmware中的完整克隆是基于指定的虚拟机克隆出相同的一份出来,不必再安装。 但是我们要保证几个地方不能一样,一个是主机名称(hostname),一个是虚拟网卡设备mac地址,还有就是是ip地址和UUID。所以我们在克隆后要对这四个地方进行修改。 这里以centos为例 1.首先进行“完全…

数据库查询相应指标

首先要看下是哪个指标 先在触发指标之前打开F12,然后触发指标 然后拿这个h5_view_fp_dur去指标列表去查https://weikezhijia.feishu.cn/sheets/BIvxsKZhHhzpC6tDyoLcPE50n4d?sheet=1mcgOb 然后去数据库里找这个库比如这里要查的是rum_view这个表,然后再写相应的SQL语句

能不能实现图片懒加载?

方案一:clientHeight、scrollTop 和 offsetTop 首先给图片一个占位资源: <img src="default.jpg" data-src="http://www.xxx.com/target.jpg" /> 接着,通过监听 scroll 事件来判断图片是否到达视口: let img = document.getElementsByTagName("…

UOS给deb包签名

跳过打包过程,主要记录签名1.在应用商城下载 “证书工具” 2. 打开一个终端,生成证书// 如果没有账号,就去注册一个就可以了,UOS官网:https://www.chinauos.com cert-tool -username="UOS帐号" -password="UOS密码" 3. 对打包好的deb安装包做签名,签…