前言
在數字化高度普及的時代,企事業機關單位在日常工作中會產生大量的文件,例如醫院制度彙編,企業知識共享庫等。針對這些文件性的東西,手工紙質化去管理是非常消耗工作量的,並且紙質化查閱難,易損耗,所以電子化管理顯得尤為重要。
【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