[FGL] 吸星大法 - IMPORT之 1: 使用extension扩展功能

转换为Genero後,FourJs’ 为了扩展整体程序语言,令他可以执行更多不一定与资料库相关的功能,往独立正常的套件发展,即已开放汇入 IMPORT 的指令。

语法:在 4GL 段 function 或设定前,定义 IMPORT [语言别] 套件名
不须标注语言为:C 。需特别标注:JAVA / FGL。其他语言 extension暂时未开放引入。

[罕用] IMPORT Cextension

Genero套件是由Native C重构。原本就可读取 C开发出的 .so ( .dll) 使用者自订义延伸包。
依据文件要求:

C 扩展必须作为共享库(.DLL或 .so)存在并且是可加载的(必须正确设置环境变量)。与IMPORT指令一起使用的 C 扩展模块 不必链接到fglrun:运行时系统动态加载依赖的 C 扩展模块。

此意涵为:若开发完成後,用户自行定义的 .so 档应该自行复制放入 $FGLDIR/lib 提供连结。当 FGL 套件更新时务必随同搬移或复制。

另外,为求方便,若开发的扩展模块命名为『userextension』(程序库为 userextension.so) 则运行 fglrun 的时候会自动附加,不必特别使用 IMPORT userextension 这样的方式带入。

C 扩展撰写时限制多,大多数状况并不会特别使用,此处带过不加范例。

###[以下常用] extend packages ###

既然可以,为什麽 Genero 不先帮忙写一些常用、常见的工具协助用户呢?
Genero 2.X 版本开始,套件中提供预先完成的常用功能 (extend packages),再依照常用程度分为两类:内置包 (built-in packages,不需要使用IMPORT汇入就可使用),扩展包 (需要 IMPORT)

请注意:以下将会以现行发布版本 Genero 3.20为准,
Genero 1.X 版本无 extend package 与IMPORT非 C extension功能支援
Genero 2.50 後版本支援大部分功能。各版本详细支持情况请查阅Genero Studio中的求助文件或线上文件。

base.Application

分类:不需要IMPORT可直接使用
功能:可查阅程序名称、当下FGL系环境变数值等基础配置
Method List
特别注意:
1.base.Application.getStackTrace() 很好用,当程序非常复杂,层层叠叠时,可以直接

DISPLAY base.Application.getStackTrace()

可以把从 MAIN 执行到本处的 4GL Module堆栈呈现出来。便利於查找问题使用。
呈现结果如
#0 sorry_stack() at sorry.4gl:119
#1 helloworld_again_err() at helloworld_again.4gl:870
#2 helloworld_again_fill() at helloworld_again.4gl:3675
#3 helloworld_query() at helloworld.4gl:11296
#4 helloworld_dialog() at helloworld.4gl:3320
#5 main() at hello.4gl:1246
2. base.Application.reloadResources() 重新加载资源档(Resource Files,尤其指42s档案) 功能为 3.20 後提供

base.Channel

分类:不需要IMPORT可直接使用
功能:可用来读取/写入档案资料(openFile),可读取执行指令时呈现在背景画面上的讯息(openPipe)与相关操作
Method List
特别注意:

  1. 简易范例
  2. 读取档案前,一定要设定 setDelimiter("分隔符号") ,一般普通档案设定为 "" 即可

base.SqlHandle (3.20以上提供)

分类:不需要IMPORT可直接使用
功能:可以用『动态的方法』来创造SQL以及执行。
Method List
特别注意

  1. FGL 3.20套件 DEMO 中有一个 dbbrowser表格资料查询器,後续将会专章解说该范例

base.StringBuffer

分类:不需要IMPORT可直接使用
功能:string 变数型态虽然可以无上限使用,但若资料量『可能大於300K』时建议转用StingBuffer进行字串处理。如整批取替代、搜寻等字串处理等功能 (超过300K时使用此型态效能较佳)
Method List

base.StringTokenizer

分类:不需要IMPORT可直接使用
功能:字串中若有 "a/b/c/d/e... " 等元素用同样的样式 (pattern) 时,要做拆解或组合用。例如SQL中的栏位列表或程序路径的切节等等。
Method List
特别注意

  1. 拆路径的范例

os.Path

分类:需要 IMPORT os
功能:处理与档案系统交互的所有事件。如切换目前所在路径,查看路径讯息、查看档案讯息、设定属性等等。可搭配channel做到『切换到指定路径下写入指定内容』之类的工作
Method List
特别注意:

  1. 浏览指定路径目录结构的范例
  2. os.Path 中常用的是 os.Path.join 组合路径

util.Strings

分类:需要 IMPORT util (大部分功能仅在Genero 3.00以上版本有效)
功能:提供字串以 Base64 编码或解码功能,网址列字串(如含有特殊字元)的URL编/解码功能
Method List
特别注意

  1. Genero 进阶的 Base64或其他如AES256等加密方式,归属於安全包(IMPORT Security)的范围

util.Math

分类:需要 IMPORT util (大部分功能仅在Genero 3.00以上版本有效)
功能:提供包括取乱数之类的一大堆工程级数学函数 (pi,sin,cos,log,角,度,....)
Method List

util.JSON

分类:需要 IMPORT util (大部分功能仅在Genero 3.00以上版本有效)
功能:提供Genero RECORD和 JSON字串互转的机制,在操作 WEB Service或API 时需要使用
Method List

util.JSONObject

分类:需要 IMPORT util (大部分功能仅在Genero 3.00以上版本有效)
功能:JSON套件的扩展。当需要对接的 JSON 具有复杂的结构时,可利用此物件承接,可直接在物件内操作取/改值,结构调整异动等事项
Method List

util.JSONArray

分类:需要 IMPORT util (大部分功能仅在Genero 3.00以上版本有效)
功能:JSON字串中若出现如 [123,546,"abc","def","xyz"] 的阵列形式,可用此物件进行元件的操作
Method List

除上列较为基本的项目外,还有 COM网页通讯包、XML处理包、Security安全包等提供。相关资源後续进行个别探讨。


<<:  Day13 - Google Kubernetes Engine 基础 - 使用 Service 暴露服务

>>:  D12-(9/12)-原相(3227)-任天堂概念股

【企业 WFH 新型态,文件加密护资安】活动分享

跟大家分享一个线上研讨会,有兴趣的可以参考喔~ 居家办公、分流上班等远距办公的企业模式,俨然默默地成...

周末雨会(三):用回圈跑阵列再加上条件式 Array Loops And Conditions

从宿舍走到餐厅的路上可以看到台风肆掠的痕迹,诗忆一个不留神踩到树枝,往後滑倒,幸好旁边的唯心马上扶住...

Day 19-制作购物车系统之将资料汇入脚本

今天要把前面几天的资料(包括MongoDB连线、产品等)汇入到脚本 以下内容有参考教学影片,底下有附...

Nutanix API v3 – 搭配 Cloud-Init 创建一个 Linux VM

在前几周,我谈论了很多有关Nutanix Calm DSL的内容。 与此相关的是,发布了Calm ...

增加 App 下载量必备的 ASO 工具

场景与需求 APP跟网页一样,要被下载,最容易的办法就是要取得流量大的关键字的上位排名,也就是要做S...