文章来自:iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw)
[day25] 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 目录下,例如:
可用 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页面:
登入后,会执行出下列接口
中间的 Genero Archives… 就是可以协助部署的Deployment页面,点入后如下图:
开始部署时,点选 Deploy后,会出现要求将 gar 档上传的画面 (档案打包完后可利用 sz/rz 或 ftp等工具自行抓取下来)
上传完成后,可在下方看到 test-gar.gar 的档案信息,以及里面的 hello.xcf 配置
此时上方的功能按键,可以看到 Enable / Secure 已亮起,表示若我们点下 Enable 后,就可完成部署使用
生效后,我们即可连上 http://server-ip:6394/ua/r/XCF名字 查看成果。(是否为 :6394或 wtopprd 要看选择的是 standalone的执行port 6394 或是使用 fastcgidispatch的绑定路径,请回头看GAS as.xcf配置段落)
锁上执行权限GIP
如果要调整应用程序的权限,则必须先进行 Disable 还原到 Inactive状态 (也就是上上图Enable灯亮起的状态),此时才能点选 Secure 进行配置
点击 Secure 后不要急着 Enable,还没设定呢,接着使用右侧的 Configure进行配置
查阅上述讯息,我们在
- 角色 (Authorization) 上勾选 Role.Admin 表示登入的人要具有 Admin身分
- 需求 (Required) 勾选 openid
就表示需要这两项『都符合』才有权利使用 helloworld。设定完成请按下左上的『Save』存盘,此时会咨询是否确认
做这么多当然是 Yes,确认后可回主要设定页,可以看到 hello.xcf 的 secure已被勾选
重新 enable 后,在做一次执行,就可以看到被要求登入的画面 (如下),而且该身分还要符合 Admin 才可以执行
透过这样的方式,可以很容易将开发出来的档案进行配置成 WEB Application的动作,并且授权给适当的人员使用。
转载请注明:赫非域 » [day25] FGL+GAS 如何做出【登入后才可执行】的helloworld (3.X以后版本)