前言
本文依舊基于EOS8.3進行描述。
在上一篇文章《EOS8.3精簡版安裝》中,我們了解到普元預編譯好的EOS的精簡版壓縮包,安裝后,只能進行低開,而無法高開。
EOS精簡版的高開方式是使用EOS開發工具提供的IDE,創建一個精簡應用,然后就可以進行高開了。
本篇文章將一步步記錄下我如何創建一個EOS的精簡應用。
安裝EOS開發工具
EOS只是一個縮寫,這個體系下有很多東西,所以,千萬不要把EOS理解為好像JEECG或若依那樣就是一個簡單的開發框架,那格局就太小了。
現在我就要用到EOS提供的開發工具IDE 。
IDE:集成開發環境,一般我們開發軟件都會用到ide,比如eclipse , idea, vscode 等等。普元EOS也提供了一個專門用于開發EOS應用的ide。
不用意外,正如上圖展示的,EOS的IDE其實就是在eclipse的基礎上提供了若干用于EOS開發的插件。所以,EOS IDE的使用對于JAVA程序員并不困難,學習門檻很低。
獲取EOS開發工具的介質
EOS開發工具的介質是一個 zip格式的壓縮文件,EOS_Platform_8.3.1_Private_Medium_Develop.zip?
獲取介質請撥通普元熱線電話?400-820-5821, 向普元工作人員申請即可。
解壓安裝
介質下載后,解壓到 d:/primeton/eos-8.3-dev 文件夾。
為什么是 d盤?其實就是最后一個分區。
為什么是d:/primeton/eos-8.3-dev這個文件夾?這個開發工具下其實有很多東西,除了ide,還有自帶的數據庫、maven、redis,以及EOS相關的服務應用,這些程序的某些配置文件似乎對解壓路徑有所要求。我這里也不深究這個問題了,反正采用這個路徑會減少很多運行中的麻煩。
從上圖可以看到,EOS開發工具下并非只提供了ide,很多東西是為了微服務版本的EOS應用開發的。本文章是記錄EOS精簡應用的開發,就不對EOS開發工具的其他東西做解釋了。
啟動ide
EOS ide的啟動需要先準備好JAVA環境,版本要求是 jdk1.8?。EOS開發工具并沒有提供jdk,請自行安裝。
同時還要配置好 maven,在EOS開發工具文件夾下,可以看到有maven 文件夾,一定要使用EOS提供的maven,因為EOS開發中需要很多普元提供的依賴,這些都需要到普元的maven倉庫拉取。EOS提供的maven的settings.xml文件中已經配置好了依賴倉庫,沒有這些配置是無法編譯EOS項目的。
運行?D:\primeton\eos-8.3-dev\ide\eclipse\eclipse.exe 文件,實現ide的啟動。
ide啟動后,可以看到就是一個eclipse,當然,細心看到話也會發現,處處都滲透著EOS和普元的痕跡,因為這個eclipse已經被安裝了很多EOS的插件。
ide的首選項中配置java環境
在菜單中選擇 窗口 -- 首選項,打開ide的首選項窗口,選擇java - 已安裝的JRE?選項。
配置自己電腦上JDK1.8?
然后再選擇 java - 已安裝的JRE - 執行環境,選中 JavaSE-1.8 ,然后勾選剛剛安裝的jre選項。
配置maven環境:
依舊是在ide的首選項窗口,選擇 maven - User Settings ,然后在右側 User Settings文本框,選擇ide提供的maven下的settings.xml文件,然后點擊 Update Settings 按鈕。
最后點擊應用并關閉,完成ide首選項的編輯。
這樣就為ide配置好了java和maven環境。
創建精簡應用
在ide中,點擊菜單項 文件 - 新建 - EOS項目,打開新建EOS項目的窗口。
在這個窗口,我們看到可以選擇4種項目類型,我們不解釋后面3種,直接選中精簡應用,點擊下一步,下一步,就完成EOS精簡應用的創建了。
當然,操作的時候步驟慢一點,先點擊一次下一步,打開進入第一個配置窗口如下,我們可以直接采用默認項,當然也可以修改一下這些配置項。
這里我將 項目名稱修改為 express08,端口修改為 28018。項目名稱就是ide中顯示的項目名稱,端口是精簡應用編譯運行后,在瀏覽器中請求時的端口,比如我現在修改為 28018,以后我啟動項目的時候就要輸入??http://127.0.0.1:28018 來訪問了。
關于應用名稱和應用所在系統編碼,這兩項最好別動,修改了可能會有預想不到的麻煩,反正咱先聽話好了。
然后點擊完成,之后要耐心等待一段時間。
這段時間的時候,我們可以看到左側已經出現了 express08 這個項目。
同時,在ide下面找到進度標簽按鈕,點擊會打開進度窗口,可以看到類似下圖這樣的執行過程。這是創建精簡應用的過程,在這個過程中會先創建出項目的結構,然后調用maven對項目進行預編譯,會拉取項目所需的依賴。
這個過程如果有問題,大概率是 1 java環境沒配置好,2 maven沒配置好。 那么就回到本文的前面“解壓安裝”這一節,看看如何配置。
經過耐心等待后,當進度不再有新動態的時候,一切歸于平靜,新的生命誕生了。
項目結構
展開express08項目,可以看到結構如上圖,簡單對這個結構解釋一下。
首先,可以確定express08是一個Maven兩層的父子項目。
父項目就是 express08,這個項目的pom.xml中可以看到express08也有父項目,如下面的xml配置信息所示。
同時可以看到,其下有4個子模塊,分別是 model api core boot,這4個,當然,模塊的名字不是這么簡單,前面還有 com.primeton.eos.express08 這么有一大串,我懶得打字了,閱讀者知道啥意思就可以了。
再之后可以看到pom.xml中標記了一系列的 primeton 的依賴,不做贅述,也不做深究,知道是有這么多 primeton的依賴即可,這些依賴從 maven官方倉庫可拉取不到,只能到普元maven倉庫才可以獲取。
這4個子模塊都是啥意思?有啥作用?我把我的理解記錄下來,供閱讀者借鑒,但我需要聲明一下,這些并非權威解釋。
首先說第2個子模塊?boot
( 閱讀者知道其實完整模塊名稱是 com.primeton.eos.express08.boot?),這是核心啟動模塊,最終express08的編譯、運行,都是在這個模塊中。
具體看一下文件結構就知道了,boot子模塊下的 Java源代碼部分有一個 Application.java 文件,熟悉springboot開發的閱讀者都知道,這是SpringBoot應用的啟動類。
據此,我們也能分析出來,EOS的精簡應用本質是基于maven構件的SpringBoot項目,開發工具是安裝了EOS插件的Eclipse。
這個文件夾下還有一個 Web文件夾,這些是所有前端靜態資源。
EOS開發的應用程序(本文創建的是精簡應用,還可以創建獨立應用、微服務應用等)都是前后端分離的,精簡應用的前端靜態資源就被放在了Web文件夾中。
如果需要對前端靜態資源修改重新編譯,那么可以獲取前端的源代碼,然后編譯后覆蓋Web文件夾即可,關于前端編譯開發不是本文所要描述的知識,就不展開講解了。
同時,boot子模塊下還包含了精簡應用所有的配置文件。
配置文件很多,配置項目更是林林總總,就不一一贅述了,這里只修改一下數據庫連接配置項,保證程序能啟動就行了,另外,在看看application.properties文件,畢竟設置項目中最重要的配置文件。
application.properties配置文件,咱也不過多解釋,就看一個端口吧。28018,之前創建精簡應用的時候,填寫的端口就是這個,沒必要過多解釋。
數據庫連接配置文件,在 user-config.xml 中,在這個文件中配置,數據庫連接的配置內容很簡單,不多說了。
boot子模塊的pom.xml文件:從這個模塊可以看到,boot子模塊的父模塊是express08。
從dependencies 這部分可以看出boot依賴于 api 、 core 、 model這3個子模塊。
boot子模塊的說明就這些吧。
接下來說說model子模塊
先看一下model的pom.xml,分析后可以看到 model 的父模塊是 express08。
接著會發現 model并沒有其他的依賴。所以 pom.xml很簡單。
再多解釋一下 model的pom.xml提供的一個插件?eos-ptp-maven-plugin ,這個插件是普元EOS的一個插件,似乎這個插件是在項目打包的時候將多個sql語句合并為 all.sql插件。我個人的理解是 EOS應用底層其實是多個子模塊組成的,比如 afcenter / bps / bfp 等等(關于這些子模塊概念以后慢慢聊),這些子模塊需要若干數據表,在源代碼中按照不同子模塊提供了若干sql文件,這個插件將多個sql文件合并為一個all.sql文件。
model子模塊規劃中主要是用來存放數據實體。
model下有4個資源包:構件、數據、運算和流程,這4個資源包是EOS的概念,這里簡單說一下,以后我梳理一下詳細解釋一下EOS這些概念。
構件:EOS的構件是一個獨有的概念。一般來說,程序員實現一個功能都是通過開發一個方法,然后編寫一系列代碼來實現具體的邏輯,細想想這些代碼無非就是順序流、循環(for while)、分支(if else) 然后調用其他方法實現功能的組合,從而實現業務需要的邏輯。
EOS的低開設計將創建方法和編寫代碼的過程,轉換為創建一個構件,在構件中使用流程和功能編排來實現邏輯。視覺效果如下
看起來,以前寫代碼,采用EOS構件成了拖拉拽,可以在運行時隨時調整代碼邏輯。軟件開發的技術門檻降低了很多,靈活性和程序穩定性提高了很多。
上面這個構件的流程有若干節點上面有紅色的小圖標,這是因為這些節點的配置有問題。因為這個構件編排我只是為了讓閱讀者知道構件是個什么東西,所以,編排的時候我并沒有對構件進行調試,若干節點是有錯的,所以這些節點的左上角就顯示一個紅色的小圖標。
構件一般配置在 model 和 core這兩個模塊中,boot和api模塊一般是不創建構件的。
數據:model主要用于存放數據實體,這些數據實體具體都放在數據資源包下面。數據實體就是數據表的java實體類,EOS的數據實體都繼承自DataEntity,結構看起來要比普通的Java實體類復雜一些,當然,也要強大的多。以后會不斷使用這個DataEntity,慢慢就會熟悉和習慣了,這里就不贅述了。
EOS連接數據庫后,可以直接對應數據表實現反向生成,所以,數據實體的創建是非常高效的。
運算:Java程序員看這個就比較容易理解了,就是Java的類和方法,只是在類和方法上增加 @Bizlet 注解。
普通的Java方法是不能被EOS構件調用的,加上@Bizlet注解后,構件編排的時候就可以調用到這個“運算”了。
流程:剛剛的構件其實我們已經看到了流程編排,EOS的流程自然更是流程編排了。構件實現的功能性的邏輯流,EOS流程實現的是工作流。EOS工作流引擎叫做BPS(似乎是 Business Process Suite的縮寫,業務流程平臺),這是EOS實現工作流的核心組件。這里的流程模塊就是用于繪制BPS的流程圖的。關于工作流的概念,如果有閱讀者不熟悉,可以自行百度一下,這里就不做贅述了。
core子模塊
見名知意,這個是核心模塊,從其下的資源包可以看到也是 構件、數據、運算、流程。
所以,功能上core子模塊和model都差不多。
我個人的習慣,一般構件、運算、流程會放在core中,而數據實體會放在model下。
api子模塊
api子模塊有數據、運算,還多了一個服務。
服務:EOS的服務可以理解就是SpringBoot項目中的controller層的 Restful接口,不過實現上是直接將某個構件發布成一個服務。當然,EOS的服務自然比傳統的Restful接口更強大,與EOS技術生態更親近,在做邏輯流編排的時候,也可以調用EOS服務,在低開的時候,也可以調用EOS服務。具體的使用在實踐中慢慢體會吧,這里只是把EOS服務這個概念簡單說明一下。
如下圖,在ide中右鍵選擇一個構件,可以看到發布EOS服務的選項。
EOS精簡版和EOS精簡應用的關系
EOS精簡版就是EOS預編譯好的項目。
EOS精簡應用是使用EOS ide創建的EOS精簡版應用。
可以理解為 EOS精簡應用 編譯打包后,發布出來的就是EOS精簡版,也就是說EOS精簡版就是EOS開發團隊預編譯好的一個EOS精簡應用。
由于EOS精簡版是預編譯好發布的,沒有源代碼,所以,無法進行高開,只能進行低開。
EOS精簡應用是可以實現高低開結合開發的。
初始化數據庫
剛剛說了,EOS精簡應用就是自己定義的、可以進行高開的、可以自定義源代碼的EOS精簡版。
所以,EOS精簡應用的數據庫就是EOS精簡版的數據庫。
因此,初始化的數據庫文件就是 EOS精簡版文件夾下的 db_scripts/all/Mysql/all.sql 文件。這里使用的是mysql數據庫,如果是其他類型的數據庫,請采用其他數據庫的初始SQL腳本。
本文創建了mysql的數據庫 eos83express ,基字符集采用 utf8mb4。
然后,在這個數據庫中執行 all.sql腳本文件,執行后數據庫和數據表看起來是這樣的:
數據表太多了,只展示了一部分。
看數據表的前綴有幾大類:
afc_xxx:? 這是afcenter相關的數據表,afcenter的全稱是應用聯邦中心,EOS采用的是微服務思想進行項目管理,微后端,還有微前端,然后在afcenter中將各服務整合在一起。afc就是afcenter的縮寫。
bfp_xxx: 這些是 bfp相關的數據表。 bfp好像是 bps的擴展功能,bps是EOS的工作流引擎,bfp應該也是提供工作流相關的功能的擴展。關于bfp的概念我不敢說我的描述是準確的,我再強調一下,我不是普元產品的專家,我只是將我學習EOS的過程記錄下來,所以,如果有些地方是錯誤的,我會及時糾正,如果給閱讀者造成了困擾,我不承擔任何后果,只是由衷的說一句抱歉,僅此而已。
lc_xxx: 這些是低開相關的數據表 。lc是低開的英文 low code的縮寫。低開的生產的其實是各種配置腳本,這些配置腳本就被存儲在這些數據表中。
rdc_xxx: 這些表我還不太清楚是啥意思。看表里面的內容,似乎是和GPT相關的表,也許是GPT調用的遠程連接相關信息記錄表。
wfxxxx:這些數據工作流引擎相關的表。wf是工作流 work flow的縮寫。之前說過,EOS的工作流引擎產品叫BPS,這些表應該都是屬于bps的表。
啟動
EOS精簡應用的啟動,首先要配置好數據庫連接,然后對主模塊express08執行mvn install ,之后就可以啟動boot了。
配置數據庫連接
啟動前,先修改數據庫連接配置文件?
com.primeton.eos.express08.boot/配置/_srv/config/user-config.xml文件
我將數據庫連接的驅動修改為 com.mysql.cj.jdbc.Driver?
數據庫名修改為 eos83express?
數據庫登錄賬號和密碼是 admin? 和 111111?
執行mvn install
啟動項目前,需要先對express08執行 mvn clean install?
我個人習慣執行 mvn 命令的時候加一個 clean , 這個意思是先清理項目之前編譯的結果,然后重新執行編譯。
右鍵 express08/pom.xml 文件,選擇 運行方式 - maven install?
當然,也可以直接在cmd窗口中執行 mvn clean install??
執行boot子模塊
之后就可以執行 boot 應用了。兩種方式
1 在eclipse中,右鍵 Application.java類
2 在 cmd 窗口進入 boot子模塊的根目錄,執行 mvn clean spring-boot:run?
注意:這個方式在win10中經常會文件名過長而無法執行的問題,這個也沒辦法,就還是在eclipse中執行吧。
瀏覽器訪問
應用啟動后,就可以在瀏覽器訪問應用了。
在瀏覽器輸入地址 http://127.0.0.1:28018?
這個端口 28018 是在boot子模塊的配置文件 application.properties中配置的。
賬號和密碼是 admin 和 000000?
結尾
本文就寫到這里,以后有時間再講講EOS精簡應用的操作方法、低開,以及高開。