前言
在数字化高度普及的时代,企事业机关单位在日常工作中会产生大量的文档,例如医院制度汇编,企业知识共享库等。针对这些文档性的东西,手工纸质化去管理是非常消耗工作量的,并且纸质化查阅难,易损耗,所以电子化管理显得尤为重要。
【springboot+elasticsearch+neo4j+vue+activiti】实现数字知识库管理系统。
一、项目概要
- springboot、vue前后端分离技术。
- 先进的富文本编辑器,满足word一键粘贴百分之百格式还原,支持视频、图文等。
- 全文检索elasticsearch,达到简单快速的结果搜索。
- neo4j知识图谱,智能分析。
- activiti工作流申请审核机制。
- 团队共享协作,常用文档收藏,热门文档排行。
二、相关技术点
1.富文本编辑器
应用当前最流行的富文本编辑器TinyMCE,支持从word、wps等一键复制粘贴,百分之百效果还原,更可以做到自定义格式设置。
<template>
<div class="tinymce-editor">
<Editor v-model="editorValue" :init="editorInit" :disabled="disabled" @onClick="handleClick" />
</div>
</template>
2.全文检索
可根据文档的任意关键字进行全文检索知识,效果如同“百度一下”,简单快速的搜集到自己所要查询的知识,解决了纸质化时代的繁琐流程。
3.知识图谱
知识图谱可视化归类,支持同作者文档的采集,同类型文档的采集,做到智能化、网格化推荐。
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
</dependency>
public boolean isNeo4jOpen() {
try (Session session = neo4jDriver.session()) {
logger.debug("连接成功:" + session.isOpen());
return session.isOpen();
} catch (Exception e) {
logger.error("neo4J连接异常: "+e.getMessage());
}
return false;
}
public StatementResult excuteCypherSql(String cypherSql) {
StatementResult result = null;
try (Session session = neo4jDriver.session()) {
logger.debug("CypherSql : "+cypherSql);
result = session.run(cypherSql);
session.close();
} catch (Exception e) {
logger.error("CypherSql执行异常: "+e.getMessage());
throw e;
}
return result;
}
4.工作流
此系统集成了activiti工作流引擎,遵循文档发起者提交->负责人审批的规范化流程。
//获取bpmnModel对象
BpmnModel bpmnModel = repositoryService.getBpmnModel(historicProcessInstance.getProcessDefinitionId());
Process process = bpmnModel.getProcesses().get(0);
Collection<FlowElement> flowElements = process.getFlowElements();
Map<String, String> map = new HashMap<>();
for (FlowElement flowElement : flowElements) {
//判断是否是连线
if (flowElement instanceof SequenceFlow) {
SequenceFlow sequenceFlow = (SequenceFlow) flowElement;
String ref = sequenceFlow.getSourceRef();
String targetRef = sequenceFlow.getTargetRef();
map.put(ref + targetRef, sequenceFlow.getId());
}
}
List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(instanceId)
.list();
Set<String> keyList = new HashSet<>();
for (HistoricActivityInstance i : list) {
for (HistoricActivityInstance j : list) {
if (i != j) {
keyList.add(i.getActivityId() + j.getActivityId());
}
}
}
总结
精准全面的搜索能力,统一化管理,此套知识库管理系统以科学的方法论并且通过实际项目锤炼做到了很好的赋能效应,解决了企事业数字资产的良性全生命周期管理。源码获取链接:+Q:2500564056