普元EOS學習筆記-創建精簡應用

前言

本文依舊基于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精簡應用的操作方法、低開,以及高開。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37243.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37243.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37243.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

東軟睿馳總裁兼CTO杜強受邀出席 CICV 2024智能網聯汽車技術首腦(CTO)閉門峰會

近日,第十一屆國際智能網聯汽車技術年會(CICV 2024)在北京舉辦,會議期間組織智能網聯汽車技術首腦(CTO)閉門峰會,邀請40余位技術領袖圍繞智能網聯汽車產業生態建設以及智能網聯汽車數據、算力和…

SQL語句查詢Cache數據庫中數據時對時間怎樣轉換

使用東華醫為HIS系統的用戶都知道,Cache數據庫中對于日期的存儲為幾萬的數字,比如,今天就是相對于1841年1月1日的第多少萬天,以這種形式進行表示;對于時間,也是以數字形式存儲,比如,…

Python的numpy簡單使用

1.可以調用引入numpy里面的函數,如add可以把倆數相加,也可以創建一個數組arr,arr.shape是數組arr的屬性,如果后有跟()就是里面的一個函數 type()函數可以知道里面是什么類型 變量.shape可以知道這個變量是…

BLEU和SPICE:機器翻譯與圖像描述的自動評估方法詳解

BLEU和SPICE:機器翻譯與圖像描述的自動評估方法詳解 在機器翻譯和圖像描述領域,評估模型性能是一個重要且復雜的問題。為了有效地評估機器生成的文本質量,我們需要一種自動、快速且可靠的方法。BLEU(Bilingual Evaluation Unders…

基于決策樹的旋轉機械故障診斷(Python)

前置文章: 將一維機械振動信號構造為訓練集和測試集(Python) https://mp.weixin.qq.com/s/DTKjBo6_WAQ7bUPZEdB1TA 旋轉機械振動信號特征提取(Python) https://mp.weixin.qq.com/s/VwvzTzE-pacxqb9rs8hEVw import…

菲爾茲獎得主測試GPT-4o,經典過河難題未能破解!最強Claude 3.5回答離譜!

目錄 01 大言模型能否解決「狼-山羊-卷心菜」經典過河難題? 02 加大難度:100只雞、1000只雞如何? 01 大言模型能否解決「狼-山羊-卷心菜」經典過河難題? 最近,菲爾茲獎得主Timothy Gowers分享了他測試GPT-4o的經歷&a…

游戲推薦: 植物大戰僵尸雜交版

下載地址網上一搜就有. 安裝就能玩. 2是顯血. 4顯示植物血, 5是加速. 都是左手主鍵盤的按鈕, 再按是取消. 比較刺激: ps: 設置里面還能打開自動收集陽光和金幣.

視頻融合共享平臺LntonCVS統一視頻接入平臺智慧安防應用方案

安防視頻監控平臺LntonCVS是一款擁有強大拓展性和靈活部署能力的綜合管理平臺。它支持多種主流標準協議,包括國標GB28181、RTSP/Onvif、RTMP等,同時兼容各廠家的私有協議和SDK,如海康Ehome、海大宇等。LntonCVS不僅具備傳統安防視頻監控功能&…

深入解析Tomcat:Java Web服務器(上)

深入解析Tomcat:Java Web服務器(上) Apache Tomcat是一個開源的Java Web服務器和Servlet容器,用于運行Java Servlets和JavaServer Pages (JSP)。Tomcat在Java Web應用開發中扮演著重要角色。本文將詳細介紹Tomcat的基本概念、安裝…

遙遠星辰中的覺醒:超大質量黑洞的蘇醒

遙遠星辰中的覺醒:超大質量黑洞的蘇醒 在浩渺無垠的宇宙中,星辰的閃爍仿佛是時間的漣漪,穿越億萬年的距離,抵達我們的眼眸。而在這片星辰大海的深處,一個驚人的現象正在悄然上演——距離地球3.6億光年之遙的星系中&am…

【C++】空指針訪問成員函數

空指針訪問成員函數 C中空指針也是可以調用成員函數的,但是也要注意有沒有用到this指針 如果用到this指針,需要加以判斷保證代碼的健壯性 class Animal { public:void fun1() {//正常的成員函數}void fun2() {if (this NULL) {return;//如果沒有這個…

Django 一對一關系

作用: 兩個數據庫表建立外鍵關系當外鍵表的數據被刪除時,主表的數據也會一并刪除。 1,添加表模型 Test/app8/views.pyfrom django.db import modelsclass User(models.Model):username models.CharField(max_length50, uniqueTrue)email …

【代碼隨想錄訓練營】【Day 65】【圖論-2】| 卡碼 99

【代碼隨想錄訓練營】【Day 65】【圖論-2】| 卡碼 99 需強化知識點 深度搜索和廣度搜索 題目 99. 島嶼數量 思想:遍歷到為1的節點,再搜索標記,每遇到新的陸地節點,增加計數 深度搜索廣度搜索:此處用 [] 作為待遍…

前端面試必備:深入解析Vue.js中v-if與v-show的原理與應用

前言 在Vue.js中,條件渲染是一個核心的概念,它允許我們根據數據的狀態來動態地顯示或隱藏元素。v-if和v-show是Vue.js提供的兩個最常用的條件渲染指令,它們在表面上看起來很相似,但實際上在背后的工作原理和適用場景上有著顯著的…

2024年度濰坊市職業技能大賽 —網絡搭建(網絡與信息安全管理員)職業技能競賽賽項規程

2024年度濰坊市職業技能大賽 —網絡搭建(網絡與信息安全管理員)職業技能競賽賽項技術文件................................ 一、賽項簡介...................................... 3 二、競賽規程...................................... 3 &#xff08…

【Linux系統】進程替換 自主實現shell(簡易版)

1.先看代碼 && 現象 我們用exec*函數執行新的程序, exec*系列的函數,執行完畢后,后續的代碼不見了,因為被替換了。 execl的返回值可以不關心了,只要替換成功,就不會向后繼續運行,只要…

第5講:建立自己的C函數庫,js調用自己寫的C/C++函數,并包含依賴C/C++第三方靜態庫。

在javascript中,Array有很多內置的功能,比如Array.map,Array.filter,Array.find等等,能用內置的功能就用內置的功能,最好不要自己實現一套,因為底層調用的可能壓根就不是js語言本身,…

[AIGC] awk 和 sed

在Unix系統中,有兩種強大的用于文本操作的命令工具,它們就是awk和sed。這兩個命令工具是每個Linux用戶必備的知識之一,尤其對于需要進行文本處理或數據抽取的開發者來說,更加重要。 在實際開發過程中,我們常常需要處理…

JavaScript中的hasOwnProperty方法詳解

JavaScript中的hasOwnProperty方法詳解 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 什么是hasOwnProperty方法? 在JavaScript中,h…

Wails 安裝初體驗

文章目錄 Wails 安裝說明1. 系統要求2. 安裝步驟3. 構建應用 結論 Wails 安裝說明 Wails 是一個用于構建桌面應用的 Go 框架,結合了現代前端技術。以下是安裝步驟: 1. 系統要求 Go 1.16 或更高版本Node.js 和 npm可選:適用于 Windows、mac…