[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的动作,并且授权给适当的人员使用。


<<:  Day18 Elastic APM (二)

>>:  Day 26 - HBuilderX 与 Native.js API 读取图片

Day13 Sideproject(作品集) from 0 to 1 -产品验证

其实这步我们也是过很久才来做 应该要最开始就先做了 可以避免做出一个只有自己需要的东西 但如果是自己...

17.MYSQL AND指令

AND和&&是相同的意思 AND运算子是左右两边结果为1,就回传1,否则回传0 Ti...

[Day 29 ] SQLite 上

设置 Table 我们需要定义资料库名称与版本 将建立 Table 的 SQL 写在这 onCrea...

[C#] 取得证交所台股价格的 3 种实用方法(附范例下载)

想要在网路上取得台股最新的股价有许多种方式,其中一种免费的方式就是直接向证交所网站取得股价资料,这次...

Day22 Create-react-app开发React

昨天介绍完Create-react-app的开发,今天就来介绍一下Create-react-app的...