BuildRun低代碼開發教程第七節 | 如何處理頁面邏輯和實現業務邏輯

課程說明

▍1.1 課程實現功能

本課程進行迭代產品和設備組管理的功能

1. 在產品列表顯示錶格中增加:

  • 設備數量彙總(臺);

  • 數據流數量彙總(個);

  • 功能點數量彙總(個)。

2. 在設備組列表顯示錶格中增加:

  • 設備數量彙總(臺);

  • 網關數量彙總(臺)。

▍1.2 課程知識點

本課程涉及到的主要知識點包括:

  • 編寫界面流來處理頁面邏輯;

  • 編寫Javaaction來實現業務邏輯;

  • 創建邏輯流調用Javaaction;

  • 數據源創建、更新和刪除時調用邏輯流實現業務邏輯。

▍1.3 數量彙總實現思路

讓我們先回顧一下v1.5的實體關係圖: 從實體關係圖中可以看到:

  • 數據流是產品的兒子

  • 功能點是產品的孫子

  • 設備和網關是設備的一個子集

爲了減少產品和設備組查詢時的關聯查詢次數,我們將在產品和設備組實體中添加數量彙總屬性,在數據流、功能點和設備新增和刪除的時候加減來更新彙總數量。

課程內容

01 完善業務對象定義

我們規劃的v1.5版本在v1.0基礎上增加了數據流和功能點,下面是更新後的業務對象設計。

▍1.1 爲 產品 業務對象增加屬性

▍1.2 爲 設備組 業務對象增加屬性

02 完善列表顯示信息

1. 切換到頁面產品->產品列表->表格組件 ,添加列表字段:

  • 設備數量

  • 數據流數量

  • 功能點數量

2. 切換到頁面設備組->設備組列表->表格組件,添加列表字段:

  • 設備數量

  • 網關數量

03 設置默認值

屬性的默認值如果是靜態值,可以在業務對象屬性定義的時候設置,如果需要進行計算或者複雜邏輯的可以通過頁面流或者邏輯流來實現,本課程爲了展示的目的採用頁面流的功能來設置默認值爲0。

1. 在產品頁面下添加頁面流,輸入信息:

  • 名稱:設置數量默認值

  • 編碼:setDefaultValues

2. 選擇流程組件->提前記錄到開始節點後,設置:

  • 數據源:產品

  • 範圍類型:當前記錄

  • 節點說明:當前記錄

  • 返回值輸出變量名稱:currentProduct

3. 選擇數據集操作->變更到當前記錄節點後,設置:

  • 變量名:currentProduct

  • 修改值:STREAM_QUANTITIES=0, DEVICE_QUANTITIES=0, POINT_QUANTITIES=0

  • 節點說明:設置默認值

4. 選擇數據集操作->提交到當前記錄節點後,設置:

  • 數據源:產品

  • 節點說明:保存記錄

  • 返回值輸出變量名稱:savedFlag

5. 修改產品->新增產品Section按鈕 增加 的屬性:

  • 邏輯類型:uiflow

  • 選取一個uiflow:設置數量默認值

6. 新建產品可以看到默認值。

 

04 編寫數量增加的代碼邏輯

▍4.1 定義JavaAction

選擇應用設計器左側的JAVA ACTION 圖標進入Java action列表窗口:

1. 選擇右上角的創建鏈接進入創建Java Action窗口,錄入如下信息:

  • 名稱:增加數據流數量

  • 編碼:IncStreamQty

  • DataSet業務對象類型:產品

2. 填寫信息完成後,點擊創建Javaaction窗口左下角的 “創建” 按鈕完成Javaaction創建後進入定義窗口;

3. 在參數區域點擊新增來創建一個參數將當前的數據流對象傳給javacation:

  • 參數名稱:curentStream

  • 類型:Object

  • 業務對象:數據流

  • 返回值類型:Long

▍4.1 編寫Javaaction的代碼

切換到服務設置中的服務信息標籤頁,點擊訪問代碼庫按鈕打開代碼庫,下面是代碼結構:

打開 action/IncStreamQty.java(可以使用在線的Web IDE,也可以克隆到本地使用其他IDE工具完成),修改executeAction()方法爲:


// BEGIN USER CODE
io.buildrun.engine.app.persistence.javaaction.JavaActionHelpejavaActionHelper = 
context.getCore().getRuntimeManager(getPersistenceManager().getJavaActionHelper();

io.buildrun.engine.briotsrv.entity.Products product = 
javaActionHelper.selectByPrimaryKey(context,io.buildrun.enginbriotsrv.entity.Products.class,
curentStream.getBelongProduct(null);

if(product.getStreamQuantities()==null){
    product.setStreamQuantities(1L);
}else{
    product.setStreamQuantities(product.getStreamQuantities()+1);
}
javaActionHelper.updateByPrimarykey(context,product);
return product.getStreamQuantities();
// END USER CODE

05 創建邏輯流

選擇應用設計器左側的邏輯流圖標進入界面列表窗口:

1. 選擇右上角的創建鏈接進入創建邏輯流窗口,錄入如下信息:

  • 名稱:產品的數據流數量

  • 編碼:STREAM_QUANTITIES

  • DataSet業務對象類型:數據流

2. 填寫信息完成後,點擊創建邏輯流窗口左下角的 “創建” 按鈕完成邏輯流創建後進入邏輯流設計視圖;

3. 從右側流程組件下選擇常規操作 -> 參數拖動到中間設計區域:

  • 數據類型 :List

  • 實體:數據流

  • 名稱:streams

4. 從右側流程組件下選擇對象操作 -> 提交拖動到中間設計區域的流程線中開始節點後:

  • 變量名 :streams

  • 節點說明:保存數據流

  • 返回值 輸出變量名稱:saved_streams

5. 從右側流程組件下選擇常規操作 -> 循環拖動到中間設計區域的流程線中 保存數據流 節點後:

  • 變量名 :saved_streams

  • 輸出變量名稱:stream

6. 從右側流程組件下選擇常規操作 -> JavaAction拖動到中間設計區域的流程線中循環節點中:

  • JavaAction :增加數據流數量

  • 設置參數:currentstream - $stream

  • 節點說明:更新數據流數量

  • 輸出變量名稱:updatedStreamQuantities

7. 設置結束節點的返回值:

  • 數據類型:List

  • 值業務對象:數據流

  • 值:$saved_streams

06 關聯數據源和邏輯流

關聯的目的是當創建數據流的時候,給數據流所屬的產品的數據流數量加一(+1)。

1. 切換到數據流頁面的數據源->處理邏輯 :

  • 創建 :自定義

  • 參數-DataSetConfig<數據流>:inputDatasetConfig

  • 參數-數組<數據流>:streams

2. 點擊右上角的保存編輯按鈕保存。

07 發佈預覽應用

點擊發布按鈕,預覽剛纔的設置。

 

爲水錶添加一個數據流之後,可以看到產品的數據流數量變成: 1

 

08 設置相關數量統計

統計產品功能點和設備數量、設備組設備和網關數量。

▍8.1 定義JavaAction

▍8.2 IncPointQty.java中executeAction()的代碼

// BEGIN USER CODE
io.buildrun.engine.app.persistence.javaactionJavaActionHelper javaActionHelper = 
context.getCore()getRuntimeManager().getPersistenceManager()getJavaActionHelper();

io.buildrun.engine.briotsrv.entity.Streams stream = 
javaActionHelper.selectByPrimaryKey(context,io.buildrunengine.briotsrv.entity.Streams.class,
currentPoint.getBelongStream() ,null);

io.buildrun.engine.briotsrv.entity.Products product = 
javaActionHelper.selectByPrimaryKey(context,io.buildrunengine.briotsrv.entity.Products.class,
stream.getBelongProduct(),null);

if(product.getPointQuantities()==null){
    product.setPointQuantities(1L);
}else{
    product.setPointQuantities(product.getPointQuantities()+1);
}
javaActionHelper.updateByPrimarykey(context,product);
return product.getPointQuantities();
// END USER CODE

▍8.3 IncDeviceQty.java中executeAction()的代碼

// BEGIN USER CODE
io.buildrun.engine.app.persistence.javaaction.JavaActionHelper javaActionHelper = 
context.getCore().getRuntimeManager().getPersistenceManager().getJavaActionHelper();

io.buildrun.engine.briotsrv.entity.Products product =
javaActionHelper.selectByPrimaryKey(context,io.buildrunengine.briotsrv.entity.Products.class,
currentDevice.getBelongProduct(),null);

if(product.getDeviceQuantities()==null){
    product.setDeviceQuantities(1L);
}else{
    product.setDeviceQuantities(product.getDeviceQuantities()+1);
}
javaActionHelper.updateByPrimarykey(context,product);
io.buildrun.engine.briotsrv.entity.DeviceGroups group =
javaActionHelper.selectByPrimaryKey(context,io.buildrunengine.briotsrv.entity.DeviceGroups.class,
currentDevice.getBelongDeviceGroup(),null );

if("DEVICE".equals(product.getProductType())) {
    if(group.getDeviceQuantities() == null) {
        group.setDeviceQuantities(1L);
    }else {
        group.setDeviceQuantities(group.getDeviceQuantities() + 1) ;
    }
}else{ //GATEWAY
    if(group.getGatewayQuantities() == null) {
        group.setGatewayQuantities(1L);
    }else {
        group.setGatewayQuantities(group.getGatewayQuantities() + 1) ;
    }
}        
javaActionHelper.updateByPrimarykey(context,group);

return product.getDeviceQuantities();
// END USER CODE

▍8.4 定義邏輯流

▍8.5 關聯數據源和邏輯流

 

09 發佈和運行應用

新增數據流、功能點和設備(設備和網關),查看產品和設備組相關的彙總信息。由於一些數據是之前維護的存在髒數據。

 

這一節介紹瞭如何編寫界面流來處理頁面邏輯以及如何編寫Javaaction來實現業務邏輯,下一節將介紹如何添加組件設置頁面圖表和儀表盤。本系列開發教程每週一更,請持續關注。

 

前四節課程回顧▼

BuildRun低代碼開發教程第一節 | 項目環境準備

BuildRun低代碼開發教程第二節 | 功能需求梳理和任務定義

BuildRun低代碼開發教程第三節 | 數據模型設計和定義

BuildRun低代碼開發教程第四節 | 產品和設備組管理開發

 

遇到問題怎麼辦?

在Buildrun使用過程中,任何關於平臺的問題和建議,都可以點擊頁面右下角用戶反饋按鈕,實時向開發團隊提交反饋,我們會在第一時間處理。

關於BuildRun

BuildRun帶來了多雲架構環境下基於視覺的企業級應用創建、集成、部署、生命週期管理和分發的能力,由開源Choerodon豬齒魚核心團隊創立的BuildRun公司(上海翹騰科技有限公司)的使命是以雲原生的現代化軟件架構來幫助企業提升軟件開發生產力和業務敏捷性,它提供企業級DevOps平臺和企業級低代碼開發平臺,幫助隱藏應用所依賴的基礎環境的複雜性,讓每個人都只需要專注在業務邏輯上,以新的方式讓團隊能夠快速、持續地將他們的想法轉化爲真正的商業價值。

歡迎免費註冊,體驗試用低代碼應用開發

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章