在開發過程中,經常設計了一個相對完整的功能,希望可以在其他業務處理過程中直接呼叫該功能來執行,而不需要在每個業務場景中重複實現該功能。例如我們可以實現一個產品入庫的功能,該功能可以判斷當前系統是否存在產品的庫存記錄,如果存在就直接update,否則save一條新的庫存記錄。這時候在採購入庫、退貨入庫、盤點入庫、其他入庫等業務場景中,就可以直接呼叫該功能執行入庫操作,這樣做的好處至少有兩個:
1、減少功能的重複實現。
2、當入庫邏輯改變時,可以只改入庫的功能,而無需在每個業務場景中一一調整。
只需要在後臺執行,而無需在前端展示互動的場景這裡稱為功能呼叫;需要將功能互動展示到前端的場景稱為功能跳轉。
依舊在白碼低程式碼開發平臺上實現。
準備工作:
1、產品庫存表
2、產品入庫功能:準備一個可以產品入庫功能,該功能可以判斷當前系統是否存在產品的庫存記錄,如果存在就直接update,否則save一條新的庫存記錄。
3、獲取產品入庫功能的相關id
1) 功能id(flow)
2) 輸入步驟id(procedure,看需要獲取)
3) 步驟裡的屬性id(field,看需要獲取)
功能跳轉
1、增加步驟:程式設計。
2、編寫跳轉“產品入庫”功能程式碼:
async function runProcess($model = model, $plugin = plugin, $params) { //去除本功能的提交提示 $model.command("tips", {}); //功能跳轉 $model.command("program", { flow: "6052bfcb4ae8b87062fd348a",//功能id data: {//根據需要,向跳轉的功能裡傳遞資料 "6052c1a3746bcb706873b91c": {//需要傳遞資料的步驟id "field_1616036415191": "",//該步驟裡需要傳遞資料的屬性id:傳遞的值 } } });}
3、至此,功能跳轉已實現,將功能釋出後,執行效果:
功能呼叫
1、根據業務需求新建一個功能,這裡使用“互動-輸入”步驟假設產品入庫資料錄入
2、新增程式設計步驟。
3、編寫呼叫功能程式碼
async function runProcess($model = model, $plugin = plugin, $params) { /**獲取到入庫資訊資料步驟完整資料 * getValue(procedure) * procedure:步驟id */ let info = await $model.getValue("6052c465018e197061abd401"); //功能呼叫,引數:exec(flow,data) await $plugin.program.exec("6052bfcb4ae8b87062fd348a", {//功能id "6052c1a3746bcb706873b91c": {//需要傳遞資料的步驟id //該步驟裡需要傳遞資料的屬性id:傳遞的值 "field_1616036415191": info["field_1616037011093"],//產品 "field_1616036415397": info["field_1616037011434"],//入庫數量 } });}
4、至此功能呼叫已實現,將功能釋出後,執行效果:
最新評論