iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
Software Development

Genero Packages - 可接替4GL的LowCode商業語言系列 第 25

[FGL+GAS] 如何做出『登入後才可執行』的helloworld (3.X以後版本提供)

前篇『[GAS] GBC上運作的Hello world! 』討論到可以透過自訂 xcf檔案,手工掛載到 GAS的執行路徑下提供 WEB APP的作法。但繁複的手工肯定澆熄了不少熱情。

在Genero 3.X以後的版本,提供 WEB版的部署介面機制,連 xcf 的製作都可以省下來了 (複雜情況還是需要補上手調),可以減少許多工作量。

GAR - 比照 JAVA WAR的打包部署方式

一個已經完成畫面檔(PER/4FD, 42f)、程式可執行檔(4GL, 42m, 42r)測試驗證的作業,可以很容易地放上網頁運作。

連結為42r: fgl2p/fgllink

此處需要42r檔案,以便兼容後續的許多擴展。42r是一種紀錄程式中function坐落在哪個42m的半文字紀錄檔 (具有一半的binary code但還是可以透過全文檢索,看出重要想查的資料)。

簡易單個42m 打包為42r的做法 (如helloworld.42m要打包成 helloworld.42r)
fgl2p -o helloworld.42r  helloworld.42m

複雜多個42m 打包為42r的作法 (如 hello.42m/world.42m 要打包成 helloworld.42r)
fgl2p -o helloworld.42r  hello.42m world.42m
或
fgllink -o helloworld.42r  hello.42m world.42m

fgl2p 與 fgllink都是提供連結的工具,差異點在 fgl2p會主動將 WSHelper.42m 這個延伸GWS模組放上,操作較為方便。

42r檔案內只有寫 42m模組(module)名稱,並不帶上42m檔案在哪個路徑。路徑資料會是 FGLLDPATH環境變數所提供。也就是說:fglrun執行的過程中,先讀取 42r理解到要調用的function存在於哪個42m,再回頭從 FGLLDPATH 提供的路徑清單,『逐一搜尋』該42m的位置。這也是為什麼 FGLLDPATH 區域內不可存在同名 function的主要原因。(無法讓 fgllink辨識到底要連結誰)

打包為gar: fglgar

為了執行模組清晰,建議將要用到的 42m先放在相同路徑下 (否則要在 xcf中配置 FGLLDPATH這個 ENVIRONMENT_VARIABLE 較為麻煩,若這句說明不太清楚,請參考:[GAS] 啟動配置檔as.xcf設定詳解 )

將 hello world檔案放置在 test-gar 目錄下,例如:
https://ithelp.ithome.com.tw/upload/images/20210926/20051169yFvXlLtUwi.png

可用 fglgar 指令進行打包

fglgar gar --application hello.42r
正常產出完成時,回應 Finished. 以上指令處理的是帶有畫面的 WEB Application
若是沒有畫面的 WEB Service,則請用下列指令
fglgar gar --service hello.42r

完成打包後,會 ** 以最後一層目錄為名,產出一個 gar 檔案 **,這個檔案就可作為快速部署用。

fglgar會協助在打包當下,產生 MANIFEST 說明檔案,以及 hello.42r 的 as.xcf格式配置檔案,共同放入gar中,若須要自行維護,則可以用 -s 的方式自行傳入。

部署 GAR檔案

打開前篇 [GIP] Genero守門員 -簡化版單點登入SSO配置與運行 從 demos.html 進入,可設定部署的 Deployment頁面:
https://ithelp.ithome.com.tw/upload/images/20210926/200511696XuuhPzbO5.png

登入後,會執行出下列介面
https://ithelp.ithome.com.tw/upload/images/20210926/20051169RUMIlQGstK.png

中間的 Genero Archives... 就是可以協助部署的Deployment頁面,點入後如下圖:
https://ithelp.ithome.com.tw/upload/images/20210926/20051169bdNCE8MKOX.png

開始部署時,點選 Deploy後,會出現要求將 gar 檔上傳的畫面 (檔案打包完後可利用 sz/rz 或 ftp等工具自行抓取下來)
https://ithelp.ithome.com.tw/upload/images/20210926/20051169u00QsKK8Hb.png

上傳完成後,可在下方看到 test-gar.gar 的檔案資訊,以及裡面的 hello.xcf 配置
https://ithelp.ithome.com.tw/upload/images/20210926/20051169yUITK8dUem.png

此時上方的功能按鍵,可以看到 Enable / Secure 已亮起,表示若我們點下 Enable 後,就可完成部署使用
https://ithelp.ithome.com.tw/upload/images/20210926/20051169RMBMItaT0G.png

生效後,我們即可連上 http://server-ip:6394/ua/r/XCF名字 查看成果。(是否為 :6394或 wtopprd 要看選擇的是 standalone的執行port 6394 或是使用 fastcgidispatch的綁定路徑,請回頭看GAS as.xcf配置段落)
https://ithelp.ithome.com.tw/upload/images/20210926/20051169NonEob5YNZ.png

鎖上執行權限GIP

如果要調整應用程式的權限,則必須先進行 Disable 還原到 Inactive狀態 (也就是上上圖Enable燈亮起的狀態),此時才能點選 Secure 進行配置

點擊 Secure 後不要急著 Enable,還沒設定呢,接著使用右側的 Configure進行配置
https://ithelp.ithome.com.tw/upload/images/20210926/200511699ztnZTCCQl.png

查閱上述訊息,我們在

  • 角色 (Authorization) 上勾選 Role.Admin 表示登入的人要具有 Admin身分
  • 需求 (Required) 勾選 openid
    就表示需要這兩項『都符合』才有權利使用 helloworld。設定完成請按下左上的『Save』存檔,此時會諮詢是否確認
    https://ithelp.ithome.com.tw/upload/images/20210926/20051169ZtuGLKjpLQ.png

做這麼多當然是 Yes,確認後可回主要設定頁,可以看到 hello.xcf 的 secure已被勾選
https://ithelp.ithome.com.tw/upload/images/20210926/20051169XOqej63Uza.png

重新 enable 後,在做一次執行,就可以看到被要求登入的畫面 (如下),而且該身分還要符合 Admin 才可以執行
https://ithelp.ithome.com.tw/upload/images/20210926/20051169TOjWeDEGKn.png

透過這樣的方式,可以很容易將開發出來的檔案進行配置成 WEB Application的動作,並且授權給適當的人員使用。


上一篇
[GIP] Genero守門員 -簡化版單點登入SSO配置與運行 (3.X以後版本提供)
下一篇
[GMI/GMA] 透過移動裝置連上 Genero Web App
系列文
Genero Packages - 可接替4GL的LowCode商業語言32

尚未有邦友留言

立即登入留言