iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
Software Development

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

[GAS] GBC上運作的Hello world!

在前面章節中,我們已經寫過 2 個 hello world作業,接下來要將 hello world 呈現在瀏覽器上

回顧 as.xcf 的配置中,有APPLICATION_LIST區塊,可在內部指定觸發的作業。因此可利用此方式將已完成的 hello world 掛載到瀏覽器上 (注意需使用 MENU版。若使用背景DISPLAY版,訊息會掉入 fastcgidispatch 的 LOG 內)

微調一下,加上 基本指令 介紹的ARG_VAL

MAIN
  DEFINE ls_title STRING

  #加上參數的 hello world
  LET ls_title = "Hello World! ",ARG_VAL(1)

  MENU ls_title
     ON ACTION exit
        EXIT MENU
  END MENU
END MAIN

執行時,可加上參數成為:

fglrun hello alex

https://ithelp.ithome.com.tw/upload/images/20210908/20051169bXbCPa2Krl.png

配置到as.xcf

打開您所維護的 as.xcf (若不清楚 as.xcf 可參考 GAS應用服務器的啟動 ),搜尋 gwc-demo,這一段 APPLICATION_LIST 是我們可以參考的樣本,複製一份如下

      <APPLICATION Id="ithelp" Parent="defaultwa">
        <EXECUTION>
          <PATH>/u1/topprd4/ithelp</PATH>  <!-- 檔案路徑 -->
          <MODULE>hello.42m</MODULE>       <!-- 執行作業 -->
        </EXECUTION>
      </APPLICATION>

設定完成後,重啟 GAS 服務(看是 httpdispatch 或 fastcgidispatch 重啟該服務即可)
重啟後,以瀏覽器連入 http://服務器ip:6394/ua/r/ithelp
(若為崁入式,綁定在 wtopprd4 路徑,則改為 http://服務器ip/wtopprd4/ua/r/ithelp )
https://ithelp.ithome.com.tw/upload/images/20210908/20051169RgLqMHjlcP.png

說好的參數呢 ?

要打開參數接收的功能,需要將 as.xcf 做一下微調,增加 AllowUrlParameters="TRUE" 設定

      <APPLICATION Id="ithelp" Parent="defaultwa">
        <EXECUTION AllowUrlParameters="TRUE">
          <PATH>/u1/topprd4/ithelp</PATH>  <!-- 檔案路徑 -->
          <MODULE>hello.42m</MODULE>       <!-- 執行作業 -->
        </EXECUTION>
      </APPLICATION>

重啟後,在網址列上增加 ?Arg=alex 就可傳入參數
https://ithelp.ithome.com.tw/upload/images/20210908/20051169Ig3TqXhjq4.png

簡單粗暴的重啟

範例主機使用 linux (一般鼎新/鼎捷的 T 平台客戶環境),依照下列步驟
https://ithelp.ithome.com.tw/upload/images/20210908/20051169A8IASEvNVf.png

  1. 先使用 ps 查詢服務 (範例為崁入式) Process ID
  2. 使用 kill -9 Process_id 清理掉原有的 fastcgidispatch
  3. 重啟服務,記得指定讀取的 as.xcf 檔案路徑,並加入背景執行符號

不想一直重啟服務

若每次均執行as.xcf的異動才能掛載程式,則表示當有新的作業時網站都必須相應停服務。這不是一個好方法,下列調整一下範例,讓服務不用重啟,只需要修改自己的部分即可使用

as.xcf 的調整

注意 !! 將之前新增的 APPLICATION 設定記得先清除掉

找尋範例『Id="idp"』並調整如下:(注意:idp只是參考範例,實際是新增下方一行)

      <!-- default group for external applications -->
      <GROUP Id="_default">$(res.path.app)</GROUP>
      <GROUP Id="idp">$(res.path.gip.starter)</GROUP>
      <GROUP Id="admin">$(res.path.idp.applications)</GROUP>
      <GROUP Id="ithelp">/u1/topprd4/ithelp</GROUP>  <!-- 新增本行 -->

調整完成後重新啟動服務。

此時在 fastcgidispatch新增虛擬路徑 ithelp 指向實體路徑 /u1/topprd4/ithelp
該路徑即為上述 hello world 程式的路徑 (該程式命名為 hello.4gl,編譯後為 hello.42m)

新增設定檔案 demo.xcf

<?xml version="1.0" encoding="UTF-8" ?>
<APPLICATION Parent="defaultgwc">
  <EXECUTION AllowUrlParameters="TRUE">
    <ENVIRONMENT_VARIABLE Id="FGLPROFILE" Concat="APPEND">/u1/genero4/fgl/etc/fglprofile</ENVIRONMENT_VARIABLE>
    <PATH>/u1/topprd4/ithelp</PATH>  <!-- 檔案路徑 -->
    <MODULE>hello.42m</MODULE>       <!-- 執行作業 -->
  </EXECUTION>
</APPLICATION>

設定完成後,就可以使用 http://服務器ip:6394/ua/r/ithelp/demo?Arg=alex 執行出如下畫面
https://ithelp.ithome.com.tw/upload/images/20210908/20051169tRzVzas4m4.png

至此,後續寫出來的各式 4GL 程式均應該可以在網頁上執行。


上一篇
[FGL] 程式開發(1) - 基本指令與流程控制
下一篇
[GAS] 啟動配置檔as.xcf設定詳解
系列文
Genero Packages - 可接替4GL的LowCode商業語言32

尚未有邦友留言

立即登入留言