Davinci 是一個 DVaaS(Data Visualization as a Service)平台解決方案,面向業務人員/資料工程師/資料分析師/資料科學家,緻力于提供一站式資料可視化解決方案
Davinci源碼位址:
https://github.com/edp963/davinci
Davinci源碼大概分為三部分:
- 采用React的前端工程
- 采用Spring Boot的後端工程
- 采用Jekyll + Minmal Mistakes的文檔工程,用來介紹Davinci的使用者操作方法
本篇文章将介紹如何對Davinci後端部分的代碼進行開發
筆者環境:
系統:Windows10 64位
Davinci:davinci-0.3.0-beta.8
Idea版本:2016.1.1
java版本:jdk1.8.0_131
maven版本:3.5.0
mysql版本:5.7.28
phantomjs版本:2.1.1(windows)
一,代碼擷取
下載下傳Davinci源碼,源碼位址文章開頭已經給出;下載下傳完後去掉一些沒有必要的檔案:
- 清空
檔案夾,該檔案夾存放的是前端打包後的檔案,用于打包整個工程的,開發後端過程中用不上;打包整個Davinci工程的時候會用到這個檔案夾,是以隻清空,不删除davinci-ui
- 删除
檔案夾,該檔案夾是用于開發使用者說明文檔靜态網站的工程,跟後端工程無關,開發使用者說明文檔的方法可以看筆者的另外一篇文章:Davinci可視化平台 —— Jekyll+Minimal Mistakes的使用者手冊工程本地打包釋出docs
- 删除
檔案夾,該檔案夾是前端部分的開發代碼,開發後端過程中用不上,如何開發前端部分代碼可以看筆者的另外一篇文章:Davinci可視化平台 ——前端部分代碼開發webapp
Davinci可視化平台 —— 導入idea,利用idea開發後端部分代碼一,代碼擷取二、工程目錄結構三,建立Davinci資料庫模型四,項目導入idea五,啟動項目六,Swagger七,打包
二、工程目錄結構
使用者配置在項目根目錄 /config/ 下,項目啟動腳本和更新更新檔腳本在項目根目錄 /bin/ 下, 後端代碼及核心配置在 server/ 目錄下, 日志在項目根目錄 /log/ 下
1,腳本
├── bin # 腳本目錄
├── migration # 較大版本變動遷移腳本目錄
├── patch # 資料庫更新檔
├── 001_beta5.sql # 已釋出更新檔(命名規則:“序列_版本”)
└── beta.sql # 當期未釋出更新檔(固定名稱)
├── build.sh
├── davinci.sql # 完整系統資料庫腳本(包含所有更新檔)
├── initdb.bat # 針對 Windows 環境的初始化資料庫批處理腳本
├── initdb.sh # 針對 Linux、Mac 環境的初始化資料庫 Shell 腳本
├── phantom.js # 截圖腳本(未來版本将不再使用)
├── restart-server.sh # 針對 Linux、Mac 環境的重新開機服務腳本
├── run.bat # 針對 Windows 環境的服務啟停核心腳本
├── start.bat # 針對 Windows 環境的服務啟動腳本
├── start-server.sh # 針對 Linux、Mac 環境的服務啟動腳本
├── stop.bat # 針對 Windows 環境的服務停止腳本
└── stop-server.sh # 針對 Linux、Mac 環境的服務停止腳本
2,使用者配置
使用者配置
├── config # 使用者配置目錄
├── application.yml.example # 應用配置模闆
├── datasource_driver.yml.example # 自定義資料源配置模闆
└── logback.xml # 日志配置
3,server代碼
├── server # Server 代碼根目錄
├── src # 源碼
├── main
├── java
└── edp
├── core # 核心配置及通用代碼
├── davinci # Davinci 業務代碼
├── DavinciServerApplication # 系統啟動類
└── SwaggerConfiguration # Swagger 配置類
└── resources
├── generator
├── mybatis # mybatis mapping 目錄
├── templates # 郵件、Sql 模闆目錄
├── application.yml # 系統核心配置檔案
└── banner.txt
└── test # 測試代碼目錄
└── pom.xml # Davinci Server maven 配置檔案,繼承自項目根目錄pom.xml
4,日志
日志目錄
├── logs # 日志根目錄
├── sys # 系統日志目錄
└── user # 使用者日志目錄
├── opt # 使用者記錄檔
└── sql # 使用者Sql日志
三,建立Davinci資料庫模型
Davinci的開發者已經将建立資料模型的檔案寫好,放到了bin目錄下,檔案名是
bin/davinci.sql
,利用該sql可以快速的在mysql中建立運作davinci的資料模型
執行指令:
參數說明:
- -P:mysql資料庫端口
- -h:mysql資料庫ip位址
- -u:登陸的msql資料庫的使用者名
- -p:通過密碼登陸
- davinci:建立的資料庫的名稱,可自定義
- D:\Davinci\bin\davinci.sql:davinci.sql檔案在本機的絕對路徑
執行以上指令後,控制台會提示輸入該使用者的密碼,鍵入密碼後等待指令完成即可;指令執行完後,該mysql下會自動建立davinci資料庫
四,項目導入idea
1,打開idea啟動頁
如下:
如果已經打開某個項目,關閉目前項目即可:
2,導入項目
選擇剛剛下載下傳好的代碼(davinci源碼不要放到帶用中文的路徑中)
選擇jdk1.8
點選Finish
3,配置idea的maven環境
選擇maven路徑
選擇maven的settings.xml檔案路徑
選擇好後,maven開始下載下傳相關依賴,慢慢等…導入完成
4,platform添加tools.jar
項目有的地方用到了tools.jar包裡面的類,是以要添加這個jar包,添加方法:
選擇
jdk1.8
安裝目錄下
lib
檔案夾下的
tools.jar
點選OK确定
5,安裝lombok插件
重新開機idea
五,啟動項目
1,複制application.yml
将config目錄下的application.yml.example複制一份,并重命名為
application.yml
2,修改application.yml資料庫配置
- url配置修改:mysql資料庫的連接配接配置,注意将ip、端口和資料庫名配置正确,如果要連接配接的mysql資料庫版本5.5.45+、 5.6.26+ 或者 5.7.6+,在連接配接串最後加上
,不然在連接配接mysql資料庫的時候一直會有一個SSL相關的警告&useSSL=false
- username:mysql資料庫登陸名
- password:mysql資料庫登陸密碼
3,修改application.yml郵件配置
郵件配置用于注冊使用者的時候,通過郵件服務給注冊郵箱發送注冊郵件
如何配置的話,看Davinci源碼的
docs
檔案夾的說明文檔,docs檔案夾是使用者操作說明檔案夾,在文章開頭筆者說這個沒有用,可以删了,如果真的删了再重新解壓下之前下載下傳的zip包吧,參考
davinci/docs/zh/1.1-deployment.md
這個文章:
4,修改application.yml截圖配置
截圖配置是用在定時任務上,davinci支援定時的截取某個圖表視圖的頁面,并發送到指定郵箱,截圖功能需要配置外部的工具,是以如果要用這個功能就需要安裝phantomjs截圖工具,如果不用這個功能,這裡可以不配置,首先安裝
phantomjs
,自行百度;然後将
phantomjs.exe
的絕對位址複制到
screenshot.phantomjs_path
這個配置上
5,idea添加啟動配置
自定義名字
啟動類是
server/src/main/java/edp/DavinciServerApplication.java
添加環境變量,添加一個環境變量
DAVINCI3_HOME
,值為本項目的絕對路徑
6,啟動
啟動成功
六,Swagger
該項目有內建swagger2,swagger-ui的連結為:
http://localhost:8080/swagger-ui.html
關于如何将Swagger接口導入到yapi上,可以看筆者的另外一篇文章:Spring Boot 1.5.8內建Swagger2 + YApi —— Swagger接口資訊導入YApi
七,打包
1,打完整release包
首先将前端部分代碼打包,将打包好的檔案複制到
davinci-ui
目錄下,然後在根目錄下運作:
mvn clean package
打好的包在
assemby/target
目錄下
2,單獨打server部分的包
進入
server
目錄在,在該目錄下執行:
mvn clean package
打好的包在
server/target
目錄下
GitHub
筆者已将修改好的davinci後端部分代碼上傳到了
git
,連結:
https://github.com/huzhen-v5/davinci-server