發(fā)平臺(tái)入門(mén):JNPF拖拽式構(gòu)建業(yè)務(wù)系統(tǒng)全攻略)
簡(jiǎn)介JNPF軟件開(kāi)發(fā)平臺(tái)V3.4.2操作手冊(cè)由福建引邁信息技術(shù)有限公司編制是一份面向JNPF產(chǎn)品使用者的功能指南適合低代碼開(kāi)發(fā)人員、項(xiàng)目實(shí)施與系統(tǒng)管理人員參考學(xué)習(xí)。壓縮包內(nèi)為單個(gè)PDF文件大小40.01MB目錄涵蓋在線(xiàn)開(kāi)發(fā)、門(mén)戶(hù)設(shè)計(jì)、大屏設(shè)計(jì)、報(bào)表設(shè)計(jì)、代碼生成與系統(tǒng)管理六大模塊每個(gè)模塊均按功能拆解為具體操作章節(jié)結(jié)構(gòu)清晰便于按需檢索。手冊(cè)詳細(xì)介紹了表單設(shè)計(jì)、列表設(shè)計(jì)、流程設(shè)計(jì)和結(jié)果展示的在線(xiàn)開(kāi)發(fā)步驟門(mén)戶(hù)與大屏的新建、地圖、分類(lèi)和數(shù)據(jù)源管理方法以及功能表單、流程表單的代碼生成流程系統(tǒng)管理部分則覆蓋系統(tǒng)配置、公告、調(diào)度、緩存、日志、監(jiān)控和菜單權(quán)限等運(yùn)維功能。目前已有1339人學(xué)習(xí)下載可作為JNPF V3.4.2平臺(tái)的上手教程與日常配置參考幫助開(kāi)發(fā)與管理人員快速定位功能、理解參數(shù)含義。1. 程序員才做的軟件現(xiàn)在你也可以拖出來(lái)先認(rèn)識(shí) JNPF 到底是什么第一次聽(tīng)說(shuō) JNPF你可能會(huì)冒出三個(gè)問(wèn)題它是個(gè)編程框架嗎是不是要會(huì)寫(xiě)代碼才能用我這種零基礎(chǔ)的新手碰它會(huì)不會(huì)太早我第一次接觸它的時(shí)候這三個(gè)問(wèn)題在我腦子里轉(zhuǎn)了好幾圈。把話(huà)說(shuō)直白一點(diǎn)JNPF 是一個(gè)低代碼軟件開(kāi)發(fā)平臺(tái)它把過(guò)去一行行敲代碼才能做出來(lái)的業(yè)務(wù)系統(tǒng)變成了像拼樂(lè)高一樣拖拖拽拽就能搭出來(lái)。表單、列表、審批流程、數(shù)據(jù)報(bào)表、大屏看板這些傳統(tǒng)開(kāi)發(fā)里很費(fèi)勁的東西在這里都有可視化的編輯頁(yè)面。你不用先學(xué)會(huì) Java 或?qū)懬岸酥恍枰斫鈽I(yè)務(wù)邏輯就能動(dòng)手做出一個(gè)能真正運(yùn)行的應(yīng)用。如果你正想學(xué)一套能快速落地業(yè)務(wù)系統(tǒng)的工具或者受夠了被開(kāi)發(fā)排期卡住的日子這篇入門(mén)就能帶你邁出第一步。2. 先搞懂一個(gè)概念低代碼到底在解決什么問(wèn)題很多人第一次聽(tīng)到“低代碼”三個(gè)字容易把它理解成“代碼少一點(diǎn)”甚至覺(jué)得是“不用寫(xiě)代碼的玩具”。這個(gè)誤會(huì)如果帶著上路后面很容易翻車(chē)。這一章我們先把概念掰開(kāi)揉碎再告訴你 JNPF 真正幫你省掉的是什么。2.1 “拖拽生成系統(tǒng)”到底是怎么一回事傳統(tǒng)開(kāi)發(fā)一個(gè)管理系統(tǒng)流程大致是這樣的業(yè)務(wù)部門(mén)提需求開(kāi)發(fā)人員寫(xiě)后端接口、建數(shù)據(jù)庫(kù)表、寫(xiě)前端頁(yè)面、聯(lián)調(diào)、測(cè)試、上線(xiàn)。一套下來(lái)少說(shuō)幾周多則幾個(gè)月。中間只要需求變一次前后端都要跟著改排期又往后推。JNPF 換了一個(gè)思路它把系統(tǒng)開(kāi)發(fā)里最常用、最重復(fù)的部分提前做成了一個(gè)個(gè)有圖形界面的積木塊。你負(fù)責(zé)拼積木它負(fù)責(zé)把積木轉(zhuǎn)換成真正能運(yùn)行的代碼和頁(yè)面。比如你想做一個(gè)“客戶(hù)信息登記表”不用去寫(xiě)表單頁(yè)面的 HTML 和 JS直接在表單設(shè)計(jì)頁(yè)面里拖一個(gè)文本框、一個(gè)日期控件、一個(gè)下拉選項(xiàng)再把它們和數(shù)據(jù)庫(kù)字段綁定好保存以后一個(gè)能填數(shù)據(jù)的表單就生成了。這里的關(guān)鍵是“綁定字段”。很多新手拖完控件就以為完事了結(jié)果保存后發(fā)現(xiàn)數(shù)據(jù)存不進(jìn)去就是因?yàn)榭丶蛿?shù)據(jù)庫(kù)字段之間沒(méi)有建立關(guān)聯(lián)。在 JNPF 里選擇一個(gè)控件右側(cè)會(huì)有“控件字段”的屬性你要在這里選擇它對(duì)應(yīng)數(shù)據(jù)庫(kù)里的哪個(gè)字段。如果字段不存在還可以當(dāng)場(chǎng)新建。這一步看著不起眼卻是整個(gè)表單能不能存數(shù)據(jù)的分水嶺。2.2 一句話(huà)看懂 JNPF 的六塊核心能力打開(kāi)這份手冊(cè)的目錄你會(huì)看到在線(xiàn)開(kāi)發(fā)、代碼生成、系統(tǒng)管理、系統(tǒng)權(quán)限、工作流程、擴(kuò)展應(yīng)用這六大塊。對(duì)新手來(lái)說(shuō)把它們理解成一個(gè)裝修隊(duì)會(huì)更輕松。模塊一句話(huà)理解新手建議在線(xiàn)開(kāi)發(fā)拖拽搭建表單、列表、流程是主戰(zhàn)場(chǎng)第一個(gè)學(xué)它代碼生成把搭好的東西自動(dòng)生成前端后端代碼有一定基礎(chǔ)后再碰系統(tǒng)管理配置公告、日志、緩存、菜單、數(shù)據(jù)源隨用隨查系統(tǒng)權(quán)限管誰(shuí)能看、誰(shuí)能改、誰(shuí)能審批做第二個(gè)應(yīng)用時(shí)學(xué)工作流程請(qǐng)假、報(bào)銷(xiāo)、合同審批這類(lèi)流轉(zhuǎn)邏輯跟著案例走擴(kuò)展應(yīng)用官方做好的示例直接模仿最值得抄作業(yè)這六塊里在線(xiàn)開(kāi)發(fā)是絕對(duì)的核心它對(duì)應(yīng)著 JNPF 功能設(shè)計(jì)下的表單、列表、流程三大件。剩下的模塊可以理解為圍繞這個(gè)核心的配套服務(wù)。系統(tǒng)管理負(fù)責(zé)平臺(tái)的日常運(yùn)轉(zhuǎn)系統(tǒng)權(quán)限負(fù)責(zé)分清楚誰(shuí)能干什么工作流程負(fù)責(zé)讓表單在不同人之間轉(zhuǎn)起來(lái)。2.3 什么樣的場(chǎng)景真正需要它你可能會(huì)問(wèn)這東西適合我嗎我舉個(gè)最典型的場(chǎng)景。某個(gè)公司的行政部想要一個(gè)“辦公用品領(lǐng)用登記系統(tǒng)”功能很簡(jiǎn)單一張領(lǐng)用表單一個(gè)記錄列表一個(gè)審批環(huán)節(jié)。如果走傳統(tǒng)開(kāi)發(fā)你得排期、提需求、等上線(xiàn)用 JNPF行政人員自己在功能設(shè)計(jì)里新建一個(gè)表單拖幾個(gè)控件再做列表和流程當(dāng)天就能用上。所以 JNPF 最適合三類(lèi)人第一類(lèi)是懂業(yè)務(wù)但不會(huì)寫(xiě)代碼的人比如行政、運(yùn)營(yíng)、項(xiàng)目助理他們能把線(xiàn)下紙質(zhì)流程變成線(xiàn)上應(yīng)用第二類(lèi)是剛?cè)胄械拈_(kāi)發(fā)新手需要一個(gè)平臺(tái)快速理解業(yè)務(wù)系統(tǒng)是怎么組裝出來(lái)的第三類(lèi)是需要快速驗(yàn)證想法的開(kāi)發(fā)者比如做個(gè)內(nèi)部工具原型先跑起來(lái)再談要不要精細(xì)打磨。這份 v3.4.2 的手冊(cè)就是圍繞這些場(chǎng)景把每個(gè)操作步驟都掰開(kāi)講清楚了。3. 零基礎(chǔ)第一個(gè)例子用 JNPF 拖出你的“報(bào)銷(xiāo)申請(qǐng)”表單和列表概念講得再多不如親手做一次。這一章我會(huì)帶你從零走通一個(gè)最小例子做一個(gè)“報(bào)銷(xiāo)申請(qǐng)”表單再看它變成可查詢(xún)的列表。整個(gè)過(guò)程你會(huì)完整走一遍 JNPF 在線(xiàn)開(kāi)發(fā)的核心路徑。3.1 打開(kāi)功能設(shè)計(jì)頁(yè)面先認(rèn)識(shí)這個(gè)“主入口”進(jìn)入系統(tǒng)后在左側(cè)菜單找到“在線(xiàn)開(kāi)發(fā)”點(diǎn)擊“功能設(shè)計(jì)”這是 JNPF 里最核心的工作臺(tái)。頁(yè)面頂部有一排操作按鈕查詢(xún)、重置、刷新、導(dǎo)入、新建表單?;拘畔⒑芎?jiǎn)單查詢(xún)和重置是配合列表用的刷新是讓你在做完改動(dòng)后看到最新?tīng)顟B(tài)。點(diǎn)左上角的“新建表單”會(huì)彈出一個(gè)選擇窗口讓你決定新建三種類(lèi)型中的哪一種表單、列表、流程。這里要先把區(qū)別說(shuō)清楚。表單是單張錄入界面適合做登記列表是“表單 表格”的組合適合做臺(tái)賬流程是帶審批環(huán)節(jié)的表單適合做需要多人協(xié)作的場(chǎng)景。第一個(gè)例子建議先選“表單”等摸熟了再加審批。3.2 第一步新建一個(gè)表單把主表和子表弄清楚選擇“新建表單”后會(huì)進(jìn)入基礎(chǔ)設(shè)置頁(yè)面。這里需要填表單名稱(chēng)、分類(lèi)等基本信息。最關(guān)鍵是下面這個(gè)設(shè)置項(xiàng)數(shù)據(jù)連接。如果你不選任何數(shù)據(jù)連接JNPF 會(huì)在流程新建完成后自動(dòng)幫你建數(shù)據(jù)表。它的命名規(guī)則是主表叫“mt 功能ID”子表叫“ct 雪花ID”。對(duì)新手來(lái)說(shuō)這個(gè)名字看起來(lái)像天書(shū)但你不用慌這是系統(tǒng)內(nèi)部的牽線(xiàn)邏輯你只需要知道“它已經(jīng)自動(dòng)建好了表”就行。如果你希望數(shù)據(jù)落到自己指定的表里可以下拉選擇已經(jīng)配置好的數(shù)據(jù)連接然后點(diǎn)“新增一行”按鈕在彈出的窗口里選擇數(shù)據(jù)庫(kù)表。這里支持單表或者多表。選多表時(shí)系統(tǒng)會(huì)要求你配置子表的外鍵字段和關(guān)聯(lián)主鍵讓主表和子表之間建立關(guān)聯(lián)。我的建議是第一次練習(xí)直接用默認(rèn)的自動(dòng)建表把主表子表的概念先跑通再考慮自定義數(shù)據(jù)源。3.3 第二步拖控件的時(shí)候心里要有“字段”這根弦填完基礎(chǔ)設(shè)置點(diǎn)“下一步”進(jìn)入表單設(shè)計(jì)頁(yè)面。左側(cè)是控件區(qū)有基礎(chǔ)控件、高級(jí)控件、系統(tǒng)控件中間是畫(huà)布右側(cè)是屬性配置區(qū)。選擇左側(cè)的“單行輸入”點(diǎn)擊或拖到中間畫(huà)布一個(gè)控件就放上去了。重復(fù)幾次放入“數(shù)字輸入”和“日期”控件形成一張報(bào)銷(xiāo)申請(qǐng)單的雛形。現(xiàn)在關(guān)鍵的一步來(lái)了選中畫(huà)布里的任意一個(gè)控件右側(cè)會(huì)出現(xiàn)它的屬性配置。找到“控件字段”下拉選擇它對(duì)應(yīng)的數(shù)據(jù)表字段。因?yàn)槟阌玫氖亲詣?dòng)建表這里可以選擇系統(tǒng)預(yù)先生成的字段也可以點(diǎn)添加按鈕新建自定義字段。新手最容易翻車(chē)的地方就在這一步——控件拖上去了但“控件字段”沒(méi)選結(jié)果數(shù)據(jù)存不進(jìn)去。在控件屬性里還可以配置“組件事件”支持“發(fā)生變化時(shí)觸發(fā)”和“失去焦點(diǎn)時(shí)觸發(fā)”兩種時(shí)機(jī)。比如想讓“報(bào)銷(xiāo)金額”輸入框在失去焦點(diǎn)時(shí)自動(dòng)校驗(yàn)可以寫(xiě)一段簡(jiǎn)單的 JavaScript// 失去焦點(diǎn)時(shí)觸發(fā)的事件 if (this.value 5000) { // 超過(guò) 5000 元給出提示 this.$message.warning(金額超過(guò) 5000 元需要走總監(jiān)審批); }這里this.value取的是當(dāng)前控件的值$message.warning是平臺(tái)提供的彈窗提示方法。你可以把它理解成“當(dāng)用戶(hù)填完這個(gè)框、鼠標(biāo)一離開(kāi)這段代碼就跑一遍”。每個(gè)控件的屬性面板都不一樣但“控件字段”這個(gè)參數(shù)幾乎每個(gè)控件都有你只要記住凡是打算存進(jìn)數(shù)據(jù)庫(kù)的控件就一定要把字段掛上。3.4 第三步把表單升級(jí)成列表加上查詢(xún)功能表單做好后回到功能設(shè)計(jì)列表找到剛才創(chuàng)建的表單。很多新手到這里以為結(jié)束了但業(yè)務(wù)場(chǎng)景里幾乎都會(huì)有一個(gè)訴求我想看所有人填過(guò)哪些記錄。這就需要把表單升級(jí)成列表?;氐叫陆ū韱蔚倪x擇窗口這次選擇“列表”類(lèi)型。進(jìn)入后你會(huì)發(fā)現(xiàn)它比表單多了一個(gè)“列表設(shè)計(jì)”頁(yè)簽?;A(chǔ)設(shè)置和表單設(shè)計(jì)的過(guò)程和剛才一模一樣你可以把之前做好的表單配置復(fù)制過(guò)來(lái)。區(qū)別就在列表設(shè)計(jì)這個(gè)環(huán)節(jié)。列表設(shè)計(jì)頁(yè)面會(huì)展示已經(jīng)綁定字段的列。默認(rèn)情況下表單里的字段會(huì)以列的形式顯示。你要做兩件事第一勾選哪些字段要在表格里展示比如“報(bào)銷(xiāo)人”“報(bào)銷(xiāo)事由”“報(bào)銷(xiāo)金額”“報(bào)銷(xiāo)日期”第二配置查詢(xún)字段。比如讓用戶(hù)按“報(bào)銷(xiāo)人”和“報(bào)銷(xiāo)日期”篩選數(shù)據(jù)就在查詢(xún)?cè)O(shè)計(jì)里把這兩個(gè)字段加進(jìn)去。配置完成后保存這個(gè)列表應(yīng)用就同時(shí)具備“填單”和“回看記錄”兩個(gè)能力了。3.5 保存后發(fā)生了什么JNPF 是怎么自動(dòng)建表的整個(gè)配置過(guò)程中你可能有一個(gè)疑問(wèn)設(shè)計(jì)界面里沒(méi)看到建表語(yǔ)句數(shù)據(jù)庫(kù)表到底怎么來(lái)的這就是 JNPF 零代碼體驗(yàn)的精髓。你在表單設(shè)計(jì)里添加的每個(gè)控件只要綁定了“控件字段”JNPF 就會(huì)在后臺(tái)自動(dòng)創(chuàng)建或者更新對(duì)應(yīng)的表結(jié)構(gòu)。提示在表單屬性里有一個(gè)“主鍵策略”選項(xiàng)支持雪花 ID 和自增長(zhǎng) ID。流程保存后主鍵策略不可修改所以創(chuàng)建之前先想清楚你的數(shù)據(jù)量級(jí)。雪花 ID 是分布式場(chǎng)景下很常見(jiàn)的方案自增長(zhǎng) ID 更直觀適合小數(shù)據(jù)量。另外表單屬性里還有個(gè)“并發(fā)鎖定”開(kāi)關(guān)。開(kāi)啟之后系統(tǒng)會(huì)加樂(lè)觀鎖機(jī)制當(dāng)兩個(gè)人同時(shí)提交同一份表單時(shí)能避免后提交的人把先提交的數(shù)據(jù)覆蓋掉。做報(bào)銷(xiāo)、工單這類(lèi)并發(fā)提交比較多的場(chǎng)景建議你把這個(gè)開(kāi)關(guān)打開(kāi)。在組合表設(shè)計(jì)上JNPF 支持副表和子表兩種結(jié)構(gòu)。副表適合把固定信息橫向擴(kuò)展比如報(bào)銷(xiāo)單的基本信息和財(cái)務(wù)信息分兩張表子表適合一個(gè)表單里有多條明細(xì)的情況比如一張報(bào)銷(xiāo)單里有多筆費(fèi)用明細(xì)。子表控件在組件庫(kù)里能找到先把子表關(guān)聯(lián)到基礎(chǔ)設(shè)置里添加的子表再往子表區(qū)域拖控件并在右側(cè)屬性里關(guān)聯(lián)各自的控件字段就能實(shí)現(xiàn)“一單多明細(xì)”的效果。4. 從表單到審批工作流程、門(mén)戶(hù)和大屏該按什么順序?qū)W第一個(gè)表單跑通之后你的信心應(yīng)該有了。接下來(lái)最順理成章的進(jìn)階方向是給表單加上“審批流轉(zhuǎn)”也就是工作流程模塊。這一章我給你一條清晰的進(jìn)階路徑讓你分清輕重緩急。4.1 什么時(shí)候才需要學(xué)流程從報(bào)銷(xiāo)單說(shuō)起還是拿報(bào)銷(xiāo)單舉例。表單做好后員工可以填單但填完給誰(shuí)審批財(cái)務(wù)怎么知道這筆錢(qián)核沒(méi)核銷(xiāo)如果沒(méi)有流程這些全靠線(xiàn)下溝通線(xiàn)上線(xiàn)下兩張皮。JNPF 的工作流程模塊就是解決這個(gè)問(wèn)題的。在“工作流程”菜單下找到“流程設(shè)計(jì)”點(diǎn)“新建”你會(huì)看到三個(gè)頁(yè)簽基礎(chǔ)信息、表單設(shè)計(jì)、流程設(shè)計(jì)?;A(chǔ)信息是填流程名稱(chēng)和分類(lèi)表單設(shè)計(jì)就是你已經(jīng)熟悉的拖拽操作流程設(shè)計(jì)才是這個(gè)模塊的重頭戲。它是畫(huà)流程圖的地方你可以把“發(fā)起申請(qǐng)”“部門(mén)審批”“財(cái)務(wù)復(fù)核”“辦結(jié)”這幾個(gè)節(jié)點(diǎn)拖出來(lái)連成一條線(xiàn)。4.2 流程設(shè)計(jì)里值得記住的五個(gè)關(guān)鍵詞在 v3.4.2 這個(gè)版本里流程功能補(bǔ)強(qiáng)了不少。作為新手先記住五個(gè)關(guān)鍵詞就夠了。第一個(gè)是“候選人”。一個(gè)審批節(jié)點(diǎn)不是只能指定某一個(gè)人它可以指定一組候選人任務(wù)分派給他們后其中任意一個(gè)人處理這個(gè)節(jié)點(diǎn)就算通過(guò)。第二個(gè)是“子表傳遞”。報(bào)銷(xiāo)單里的多筆明細(xì)在審批時(shí)也要跟著主表信息一起流轉(zhuǎn)開(kāi)啟子表傳遞后審批人才能看到完整數(shù)據(jù)。第三個(gè)是“超時(shí)提醒”。節(jié)點(diǎn)設(shè)置了超時(shí)時(shí)間后系統(tǒng)會(huì)自動(dòng)提醒審批人不用你天天盯著催。第四個(gè)是“自動(dòng)同意”。某些低風(fēng)險(xiǎn)節(jié)點(diǎn)比如行政類(lèi)的例行申請(qǐng)可以設(shè)置條件滿(mǎn)足時(shí)自動(dòng)通過(guò)不用每次手動(dòng)點(diǎn)。第五個(gè)是“異常處理”。如果某個(gè)節(jié)點(diǎn)沒(méi)人處理或流程卡住系統(tǒng)可以按預(yù)設(shè)規(guī)則自動(dòng)轉(zhuǎn)到指定節(jié)點(diǎn)而不是讓流程永遠(yuǎn)懸在那里。這五個(gè)關(guān)鍵詞你第一次接觸時(shí)不用全記住只要知道流程設(shè)計(jì)里藏著這些能力真到用時(shí)知道去哪里查手冊(cè)就行。真正的重點(diǎn)是把“節(jié)點(diǎn)”和“連線(xiàn)”這兩個(gè)概念吃透節(jié)點(diǎn)是要做的事連線(xiàn)是流轉(zhuǎn)的方向。4.3 大屏和門(mén)戶(hù)別被“大”字嚇到做了表單跑了列表管了流程你的下一個(gè)里程碑可能是“大屏”。很多人一聽(tīng)到大屏設(shè)計(jì)就覺(jué)得是給領(lǐng)導(dǎo)看的復(fù)雜可視化系統(tǒng)其實(shí) JNPF 的“大屏設(shè)計(jì)”也沒(méi)那么高不可攀。在“在線(xiàn)開(kāi)發(fā)”下的“門(mén)戶(hù)設(shè)計(jì)”和“大屏設(shè)計(jì)”邏輯和表單設(shè)計(jì)是一脈相承的。門(mén)戶(hù)設(shè)計(jì)是搭一個(gè)系統(tǒng)首頁(yè)把常用功能、待辦事項(xiàng)、通知公告擺在一個(gè)頁(yè)面里大屏設(shè)計(jì)是拖拽圖表組件把數(shù)據(jù)以折線(xiàn)圖、柱狀圖、地圖等形式展示出來(lái)。大屏管理里可以做分類(lèi)管理把不同主題的大屏分門(mén)別類(lèi)地圖管理支持地理數(shù)據(jù)展示數(shù)據(jù)源管理則是給大屏指定數(shù)據(jù)從哪來(lái)。新手學(xué)大屏我建議先別追求視覺(jué)效果把重點(diǎn)放在“數(shù)據(jù)源管理”上。搞清楚大屏展示的數(shù)據(jù)來(lái)自哪個(gè)數(shù)據(jù)接口或數(shù)據(jù)表比研究怎么配色重要得多。數(shù)據(jù)源沒(méi)配對(duì)后面所有的圖表都是空的。4.4 系統(tǒng)管理到底管什么新手先抓這四個(gè)模塊“系統(tǒng)管理”這個(gè)大模塊下還有很多子模塊新手容易一進(jìn)去就迷路。我建議按以下順序抓重點(diǎn)系統(tǒng)配置、系統(tǒng)菜單、數(shù)據(jù)應(yīng)用、系統(tǒng)日志。系統(tǒng)配置里做的是基礎(chǔ)設(shè)置、安全設(shè)置、第三方設(shè)置相當(dāng)于平臺(tái)的“總閘”。安全設(shè)置里能找到登錄方式、圖形驗(yàn)證、鎖定賬戶(hù)等選項(xiàng)第一次部署時(shí)可以改一改。系統(tǒng)菜單是入口的骨架新建菜單、導(dǎo)入導(dǎo)出、按鈕權(quán)限、列表權(quán)限、表單權(quán)限、數(shù)據(jù)權(quán)限都掛在這里。數(shù)據(jù)應(yīng)用下則是數(shù)據(jù)連接、數(shù)據(jù)建模、數(shù)據(jù)字典、數(shù)據(jù)接口、接口認(rèn)證、數(shù)據(jù)同步這些內(nèi)容它們管的是“數(shù)據(jù)從哪里來(lái)、長(zhǎng)什么樣”。注意系統(tǒng)菜單里有個(gè)“同步菜單”的操作。當(dāng)你改了功能設(shè)計(jì)新增了表單或列表記得去同步一下否則新的功能可能不會(huì)出現(xiàn)在前端頁(yè)面上。這是我見(jiàn)過(guò)的新手最容易漏掉的一步。系統(tǒng)日志是排查問(wèn)題用的好幫手誰(shuí)在什么時(shí)候做了什么操作都能在這里找到記錄。剩余的系統(tǒng)公告、系統(tǒng)調(diào)度、系統(tǒng)緩存、系統(tǒng)監(jiān)控之類(lèi)的模塊用到時(shí)再翻手冊(cè)也不遲它們屬于運(yùn)維型功能不阻礙你入門(mén)。5. 新手最容易翻車(chē)的 5 個(gè)地方這些坑我替你踩過(guò)了這一章我不講新功能專(zhuān)門(mén)講血淚經(jīng)驗(yàn)。以下五條是新手在 JNPF 上最常遇到的翻車(chē)現(xiàn)場(chǎng)每一條我都按“現(xiàn)象 → 原因 → 解決”給你寫(xiě)清楚。5.1 表單保存了卻沒(méi)數(shù)據(jù)大概率是字段沒(méi)掛到數(shù)據(jù)表現(xiàn)象在表單頁(yè)面填了一堆內(nèi)容點(diǎn)保存系統(tǒng)提示成功但打開(kāi)列表空空如也或者數(shù)據(jù)庫(kù)表里沒(méi)有任何記錄。原因這是最經(jīng)典的新手失誤??丶峭仙先チ说摹翱丶侄巍睂傩詻](méi)有選擇等于這個(gè)控件只是一個(gè)擺設(shè)沒(méi)有和數(shù)據(jù)庫(kù)表的任何字段綁定關(guān)系。系統(tǒng)不知道把填進(jìn)去的內(nèi)容存到哪一列自然就丟棄了。解決回到表單設(shè)計(jì)里把要保存數(shù)據(jù)的控件逐個(gè)選中在右側(cè)屬性區(qū)域找到“控件字段”下拉選擇對(duì)應(yīng)的字段。如果沒(méi)有現(xiàn)成字段就新建一個(gè)再綁定。改完后保存重新測(cè)試。我習(xí)慣的做法是每拖一個(gè)控件就立刻綁字段絕不攢到最后一起做這樣出錯(cuò)時(shí)能立刻定位。5.2 列表查詢(xún)“查不出來(lái)”先看查詢(xún)字段再看數(shù)據(jù)權(quán)限現(xiàn)象列表做好了查詢(xún)條件也加了但點(diǎn)查詢(xún)后返回的結(jié)果不對(duì)要么查不到要么查出來(lái)的數(shù)據(jù)缺了一部分。原因這個(gè)問(wèn)題通常是兩個(gè)原因疊加造成的。第一查詢(xún)字段沒(méi)有配置到列表的“查詢(xún)?cè)O(shè)計(jì)”里系統(tǒng)根本不知道你想按什么過(guò)濾。第二當(dāng)前登錄用戶(hù)的數(shù)據(jù)權(quán)限限制了可見(jiàn)范圍比如他只能看自己創(chuàng)建的數(shù)據(jù)而你用管理員賬戶(hù)之外的賬號(hào)去測(cè)試時(shí)發(fā)現(xiàn)數(shù)據(jù)“變少了”。解決先到功能設(shè)計(jì)的列表設(shè)計(jì)里把需要參與過(guò)濾的字段加進(jìn)查詢(xún)字段。然后用管理員賬號(hào)排查數(shù)據(jù)權(quán)限在系統(tǒng)權(quán)限的角色管理里看一下該角色數(shù)據(jù)權(quán)限是什么范圍是本人、本部門(mén)還是全部。測(cè)試階段為了方便可以先給測(cè)試角色放開(kāi)數(shù)據(jù)權(quán)限等功能沒(méi)問(wèn)題了再收緊。5.3 流程發(fā)起后數(shù)據(jù)沒(méi)寫(xiě)進(jìn)去主表子表的外鍵是關(guān)鍵現(xiàn)象流程審批都走完了流程也沒(méi)報(bào)錯(cuò)但打開(kāi)業(yè)務(wù)列表發(fā)現(xiàn)表單數(shù)據(jù)沒(méi)有進(jìn)去或者主表有記錄子表是空的。原因新建流程時(shí)如果你選擇了多表結(jié)構(gòu)的數(shù)據(jù)連接系統(tǒng)要求在基礎(chǔ)信息頁(yè)面配置子表的外鍵字段和關(guān)聯(lián)主鍵讓主表和子表能關(guān)聯(lián)起來(lái)。漏掉這一步子表數(shù)據(jù)在保存時(shí)就找不到自己的“父親”就丟失了。解決回到流程的基礎(chǔ)設(shè)置檢查是否選擇了主表和子表并確認(rèn)外鍵字段已正確關(guān)聯(lián)。關(guān)聯(lián)原則是標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)關(guān)系設(shè)計(jì)子表里添加一列存主表主鍵的值以此把子表記錄掛到主表記錄下面。5.4 改了配置不生效先清緩存再同步菜單現(xiàn)象明明在功能設(shè)計(jì)里把表單的字段改了也保存了但前端頁(yè)面還是老樣子。有時(shí)候新加了一個(gè)表單菜單里根本找不到。原因JNPF 有系統(tǒng)緩存配置改動(dòng)后可能需要刷新緩存才能生效。另外新功能不經(jīng)過(guò)“同步菜單”這一步前端導(dǎo)航是不會(huì)自動(dòng)多出入口的。解決去系統(tǒng)管理下的“系統(tǒng)緩存”執(zhí)行一次清理動(dòng)作把緩存刷新掉。同時(shí)在系統(tǒng)菜單里找到同步菜單的操作重新同步。順序上建議先清緩存再同步菜單然后重新登錄系統(tǒng)。這一套組合拳能解決絕大多數(shù)“改了沒(méi)反應(yīng)”的玄學(xué)問(wèn)題。5.5 權(quán)限看著都勾了別人還是進(jìn)不來(lái)按鈕權(quán)限和數(shù)據(jù)權(quán)限是兩回事現(xiàn)象你在角色管理里給某個(gè)角色分配了“系統(tǒng)管理”的權(quán)限但該角色的用戶(hù)登錄后還是看不到菜單或者看得到菜單但點(diǎn)進(jìn)去沒(méi)有操作按鈕。原因JNPF 的權(quán)限體系是分層的。菜單權(quán)限決定能不能看到模塊按鈕權(quán)限決定能不能操作某個(gè)具體動(dòng)作數(shù)據(jù)權(quán)限決定能看哪些數(shù)據(jù)。這三者是相互配合的缺一層都不行。你以為“給了角色權(quán)限”就全通了其實(shí)只是通了第一層。解決在系統(tǒng)權(quán)限的角色管理里進(jìn)入“角色權(quán)限”設(shè)置確認(rèn)三塊都配了。菜單權(quán)限勾選大項(xiàng)按鈕權(quán)限勾選你要開(kāi)放的動(dòng)作如新增、編輯、刪除、導(dǎo)入、導(dǎo)出列表權(quán)限、表單權(quán)限分別約束列表字段和表單字段的可見(jiàn)性數(shù)據(jù)權(quán)限設(shè)置數(shù)據(jù)范圍。對(duì)新手來(lái)說(shuō)一條實(shí)操建議是先按角色把菜單和按鈕配齊再去調(diào)整數(shù)據(jù)權(quán)限層級(jí)從大到小不容易亂。6. 下一步學(xué)什么一份照著做就行的小白學(xué)習(xí)順序到這一章你已經(jīng)把 JNPF 最核心的開(kāi)發(fā)路徑走通了一遍?!跋乱徊綄W(xué)什么”這個(gè)問(wèn)題我的答案是別再繼續(xù)零散地看功能了而是找一個(gè)完整的業(yè)務(wù)場(chǎng)景把它從頭到尾做透。階段做什么對(duì)應(yīng)模塊第 1 周做三個(gè)表單員工登記、報(bào)銷(xiāo)申請(qǐng)、固定資產(chǎn)臺(tái)賬在線(xiàn)開(kāi)發(fā) → 功能設(shè)計(jì) → 表單第 2 周給每個(gè)表單配上列表和查詢(xún)?cè)诰€(xiàn)開(kāi)發(fā) → 功能設(shè)計(jì) → 列表第 3 周挑報(bào)銷(xiāo)流程加審批鏈工作流程 → 流程設(shè)計(jì)第 4 周給員工配角色把菜單和數(shù)據(jù)權(quán)限鎖好系統(tǒng)權(quán)限 → 角色管理第 5 周照著擴(kuò)展應(yīng)用里的訂單示例模仿做一個(gè)應(yīng)用擴(kuò)展應(yīng)用 → 訂單示例擴(kuò)展應(yīng)用模塊里有現(xiàn)成的功能示例、門(mén)戶(hù)示例、報(bào)表和大屏示例還有訂單管理、項(xiàng)目管理這種完整的業(yè)務(wù)示例。這些就是最好的模仿對(duì)象。我的學(xué)習(xí)方法是不看任何說(shuō)明先自己去嘗試配置卡住了再翻手冊(cè)整個(gè)流程走通一遍后再對(duì)照示例找差距。這個(gè)過(guò)程比泛泛地翻手冊(cè)要有效得多。關(guān)于這份 v3.4.2 操作手冊(cè)本身我建議第一遍只先通讀在線(xiàn)開(kāi)發(fā)和系統(tǒng)權(quán)限這兩章其余章節(jié)全部當(dāng)成工具書(shū)用到再查。工作流程那章比較長(zhǎng)等做到審批場(chǎng)景時(shí)再精讀。從那以后我每次拿到新平臺(tái)的第一天都強(qiáng)制自己先跑出一個(gè)完整的小例子再學(xué)別的高深功能——這個(gè)習(xí)慣幫我少走了很多彎路希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取