Genero BDL concepts (BDL概念)
Genero程序
Genero BDL是一个基于简单而且易读语法的编程语言。
程序逻辑是基于.4gl文件扩展名的文本文件编写,称作程序源码模块。
源码模块可以被(fglcomp)编译为.42m后缀名的p-code模块,.42m可以被运行时系统(fglrun)执行。应用程序本身
就是由一组.42m模块建立的。
集成的SQL支持
一套SQL语句是BDL语言语法结构的一部分,可以被直接用于源码中,相当于普通的程序语言指令一样。
静态SQL语句在编译时被解析和验证。在运行时,静态SQL语句自动被准备和执行。程序变量被编译器检测并传为
SQL的参数。普通SQL语句,例如SELECT,INSERT,UPDATE或者DELETE可以写在源码中,视作语言语法的
一部分。
MAIN
DEFINE n INTEGER, s CHAR(20)
DATABASE stores
LET s = "Sansino"
SELECT COUNT(*) INTO n FROM customer WHERE custname = s
DISPLAY "Rows found: " || n
END MAIN
动态SQL语句可以在执行是动态组建。动态SQL语句可以使用SQL参数:
MAIN
DEFINE txt CHAR(20)
DATABASE stores
LET txt = "SET DATE_FORMAT = YMD"
PREPARE sh FROM txt
EXECUTE sh
END MAIN
通过数据库驱动,同一个程序可以打开任意支持的数据库的连接。
XML支持
BDL语言根据需要,通过不同的类支持XML。提供两中方式:
1、基本的和用户界面相关的XML,提供内嵌的XML类
2、比较复杂的XML,和Web服务功能,提供功能全面的XML类,这些类在web服务扩展中。
用户界面
Genero的用户界面技术是基于在运行时系统和终端之间的一种抽象表示分享技术。当程序启动,运行时系统生成
抽象的用户界面(AUI)树,同时传递这个树给终端。终端根据抽象元素在工作站渲染出真实的图行对象。当一个
应用程序的控件被用户界面触发时,终端的抽象树自动和运行时系统的抽象树同步。
运行时系统和终端经过电脑网络利用终端协议交互。抽象用户界面(AUI)树和终端协议都是标准的XML。
资源文件描述一些图形对象的特性。默认资源文件是.4ad和.4st结尾,用户也可以自己定义,或者用自己的版本替换。
抽象用户界面(AUI)树上面的元素可以在运行时通过内嵌的工具修改。
语言库
为方便不同领域程序的编写,BDL有几个工具包可以使用
工具函数和类在不同的表单中是有效的,包裹内嵌类,内置函数,和可载入模块
窗口和表单
程序通过交互指令控制和操作显示区域的窗口和表单对象。表单使用描述性文本文件(.per)定义的。表单文件被
fglform编译成可以被运行时系统理解的运行时表单文件(.42f)。运行时表单文件可以部署在不同的生产环境。
(.42f)文件是XML文档,包含表单元素的描述,可以在不同显示设备上显示的可移植性。XML文件可以直接编写,
或者在程序运行时利用
XML工具生成或者修改。
交互指令
交互指令控制应用表单的字段输入和动作处理。
这些交互指令实现程序对用户动作和数据输入的回应。例如INPUTBY NAME 指令块控制用户输入数据的一系列表单字段
DEFINE cust_rec RECORD LIKE customer.*
INPUT BY NAME cust_rec.*
...
BEFORE FIELD cust_name
...
ON ACTION print
...
END INPUT
交互指令可以通过模式或者非模式对话框实现。(modal或者paralleldialogs)。模式对话框控制的窗口,在对话
框确认或者取消后,会自动关闭。对话框窗口显示在其他正在显示的窗口上面,当模式对话框执行,其他窗口时
不能访问的。
非模式对话框运用几个窗口可以同时操作,用户可以任意切换。
用户动作回应
点击表单上的按钮或者按定义的动作按键,程序会执行相应的动作处理器的可执行代码。表单元素可以触发动作
的称为动作视图。
动作处理器通过交互指令ON ACTION 语句定义。当动作触发时,定义在处理器里面的代码块会被执行。当运行时
系统看到ONACTION 控制器时,会自动产生动作对象和连接该对象到动作视图。通用的动作处理器,比如对话框
的确认和取消,交互指令会自动执行和该功能一致的代码。
通过配置默认动作,你可以定义动作的描述属性(比如文本,图像)和功能属性(比如快捷键,目录显示)让动
作视图和动作相关联。
产生报表
BDL可以很容易的产出报表,而且能导出几种输出格式
页头和页脚的页码可以自己定义。数据可以分组,也可以分组加总和分子组加总显示。报表可以输出到显示器,
打印机,文件,或者(通过管道)传递给另外一个程序。报表甚至可以被重定向为XML数据通过SAX过滤器,得
到的XML数据可以被转换为HTML,PDF或者其他由XML可以生成的文档格式
国际化
BDL语言支持单字节和多字节。单字节比如ISO-8859-1,多字节字符集比如BIG5或者UTF-8。语义中变量和操作
字符中字符串数据的长度基于字节或者字符单元。
标签和信息可以从程序和表单中分离,根据用户群(特定的语言或者特定的业务段)制定相应的子标签和信息。
源文件(4gl,per,4ad等)可以用特定的编码编写,然而,仍然建议你使用ASCII编写源码文件,其它依赖本地特性
的字符串可以保存在额外的字符串文件中。
Web服务支持
Web服务库可以实现web服务的客户端和服务器端。
Web服务是局域网或者互联网上应用间通信的标准方式。它定义两个实体键怎样通信:
1、服务器提供服务
2、客户端使用服务
The Genero Web Services Extension(GWS) Web服务扩展是BDL的扩展。它安装在BDL语言目录。Fglgws包
包含BDL语言和GWS。
Web服务扩展需要应用服务器管理。除非有需要,Web服务不是必须的。
程序工具
BDL除了编译器,还提供几个程序工具
一套程序工具集,可以帮助你提供程序开发进度,测试,优化,源文档产生。
编译一个程序
你需要编译源文件成为一个可以运行的应用。
一个程序可以由单个源码模块产生,但是一般一个程序都是需要几个模块,可能包含特定的文件和本地字符串文件。
当通过DEFINE… LIKE 语句定义数据库表或者栏类型的变量时,需要相应的数据库模式文件。
在运行时系统运行你的应用前,你需要用编译工具编译源码为各式运行时文件。
编译后的源码模块可以被连接为运行时系统可以执行的.42r程序,也可以被组合在一起成为.42x库,.
42x可以被用来生成.42r程序。
可以通过IMPORTFGL指令声明当前模组需要哪些依赖的模组,该指令就是定义.4gl模组之间的依赖。当使用了
这个属性,就不需要链接模组来生成程序。
IMPORTFGL cust_module
MAIN
DATABASE stores
CALL cust_module.input_customer()
END MAIN
在前面导入模组的方法
部署一个应用
一个应用部署,需要部署相应的运行时和源文件。很多(但不是所有)文件都是从源码编译过来的。
这些文件必须在用户站点部署
1. 42r,.42x, .42m –可执行程序和库,编译后模组
2. .42f-运行时表单文件
3. .42s-编译的本地字符串文件,假如有需要
4. .4sm-自定义的起始目录XML文件,如果有产生
5. .4ad, .4st-这些是默认的XML文件,有Genero自动产生。必须和运行时系统一起发布。假如有自定义这些文件,
可以用自定义版本替换。
运行时环境设定
Fglprofile是配置文件和环境变量设定文件,可以改变程序的行为
Genero BDL concepts (BDL概念)相关推荐
- Openai API 文档- Key Concepts 核心概念
Overview 概述 The OpenAI API can be applied to virtually any task that involves understanding or gener ...
- Concepts:Overview
Concepts 重要概念 The Hands-on Training explains the basic concepts of stateful and timely stream proces ...
- 美团大脑:知识图谱的建模方法及其应用 | 公开课笔记
参加 2018 AI开发者大会,请点击 ↑↑↑ 分享嘉宾 | 王仲远(美团 AI Lab NLP 中心负责人) 整 理 | 周翔 出 品 | AI科技大本营 作为人工智能时代最重要的知识表 ...
- QIIME 2教程. 01简介和安装 Introduction Install(2020.11开始更新)
写在前面 QIIME是微生物组领域最广泛使用的分析流程,10年来引用20000+次,2019年Nature杂志评为近70年来人体菌群研究的25个里程碑事件--里程碑16:生物信息学工具助力菌群测序数据 ...
- QIIME 2用户文档. 01简介和安装 Introduction Install(2020.2)
写在前面 QIIME是微生物组领域最广泛使用的分析流程,10年来引用近20000次,2019年Nature杂志评为近70年来人体菌群研究的25个里程碑事件--里程碑16:生物信息学工具助力菌群测序数据 ...
- QIIME 2用户文档. 1简介和安装(2019.7)
写在前面 QIIME是微生物组领域最广泛使用的分析流程,9年来引用量超1.6万次,2019年Nature杂志评为近70年来人体菌群研究的25个里程碑事件.为满足当前大数据.可重复分析的需求,北亚利桑那 ...
- NgModule中的声明,提供程序和导入有什么区别?
本文翻译自:What is the difference between declarations, providers, and import in NgModule? I am trying to ...
- 收下这个“短信验证”的最佳实践项目!
短信验证这样的功能是不是进本每个应用都会用到?那么你有积累下相关的开发模块或服务了吗?不管有没有,今天TJ给大家推荐一个现成的短信验证功能的开源项目! 一个合规.安全.可靠的短信验证码项目模块应该具备 ...
- 2019 年 C++ 的发展
C++ 软件工程师 Bartek 发布博客,回顾了 C++ 2019 年的发展情况. Bartek 主要介绍了 2019 年 C++ 特性上的演进.在全球的会议重大进展.相关工具的改进,以及 C++2 ...
最新文章
- 应用YOLOV4 - DeepSort 实现目标跟踪
- 协议森林06 瑞士军刀 (ICMP协议)
- C2893 未能使函数模板“unknown-type std::invoke(_Callable ,_Types ...)”专用化 websocket_server
- VS2010安装HTML5插件
- /usr/local/php-5.2.14/sbin/php-fpm start Starting php_fpm –fpm-config
- tomcat源码分析_Tomcat源码分析(一)--Tomcat的初始化
- 前端学习(1048):todolist正在进行和已经完成阶段
- Java(TM) platform SE binary 占用cpu过高
- Vue深入学习2—虚拟DOM和Diff算法
- R语言转换并保存json文件--使用jsonlite包
- 【Qtcreator】qtcreator的基本使用方法
- 正充电手机自动订了总统套房!公安介入调查:排除被植入后门或被控制可能...
- 怎样做好微商 怎样推广引流客源效果好
- Springboot使用@Scheduled多节点启动时调度重复执行
- 布局改变时的过场动画
- el表达式设置option标签selected
- 下载网站 favicon 图标的 3 种方法
- 思科NXOS系列交换机(N5K,N7K,N9K)和华为CE交换机配置比对
- HIVE 计算指定日期本周的第一天和最后一天
- 在App Store和Google Play上推广应用程序