当前位置: 首页 > news >正文

docker版jxTMS使用指南:自动生成代码

本文讲解4.0版jxTMS的自动生成代码功能,
整个系列的文章请查看:docker版jxTMS使用指南:4.0版升级内容

docker版本的使用,请参考:docker版jxTMS使用指南

任何一个管理系统都需要对管理对象进行管理,包括最基本的的增删改查,而这每一个功能都需要制作界面、书写代码,由于需要大量设置、修改各种名称【控件名、数据名、变量名等等】,这些工作非常简单却异常繁琐,很容易出错。

所以4.0版jxTMS提供了自动生成代码的功能,通过简单描述管理对象的基本界面,然后就可以自动生成基本的增删改查定制文件。

自动生成代码功能需要在模块所在目录下建立一个codeSource文本文件,其中以分号为分隔符来定义一个个的管理对象的访问界面。其语法为:

VARIABLE VARIABLE 'TITLE' VARIABLE webDivData webDivRow+ webDivSearch?

可参考【/var/chroot/home/demoOrg_2255/codeDefine/demo2/test/codeSource】。

codeSource的语法中所有以单引号括起来的全大写的文字,都是关键字,在语法定义中是需要用单引号括起来的,但实际定义时自然不需要的。

第一个变量是管理对象的类属名【即该管理对象属于哪个门类】,jxTMS会为该管理对象自动生成两个快捷栏中的入口:【添加xx】和【xx查询】。而这两个入口所在的第一级的快捷栏名称,就是此处的类属名。如第一个变量是【演示】,则就会在快捷栏的【演示】菜单中新增两个入口:【添加xx】和【xx查询】。

第二个变量是该管理对象的英文名,笔者习惯以大写字母开头。

第三个变量是该管理对象的中文名。

示例如:

安全管理 User TITLE 用户

即对User的管理,会在快捷栏中生成两个入口:【安全管理->添加用户】、【安全管理->用户查询】。

webDivData是定义本管理对象的访问语义词与保存数据的数据表中列的对应关系的:

webDivData//变量名就是保存数据的数据表名,也是数据类名: 'DATA' VARIABLE webDivDataVar+  
;
//webDivDataVar的定义是
webDivDataVar//语义词=数据表中的列名: VARIABLE ASSIGN VARIABLE  
;

示例如:

DATA AuthuserID=IDuserCreateTime=CreateTimeuserSpecial=SpecialuserName=NameuserState=StateuserDescr=Descr

意为,User的数据放在数据表Auth中,userID保存在Auth表的ID列、userName保存在Auth表的Name列,等等。

定义完DATA后,以后只需要用语义词来访问数据即可,不再需要直接使用数据字段名,而语义词则绑定到所生成界面的相应控件的bind上。

webDivRow描述了该管理对象的详情界面,而此界面将被新增、查看、修改三界面所复用:

webDivRow//描述了一行,由多个表意格组成: 'ROW' webDivCol+  
;
webDivCol//每个表意格包括两个控件:文本提示、输入输出数据【新增、修改时是输入,查看、修改时是输出】: VARIABLE STRING webDivColTitleAttr? VARIABLE? TYPE type webDivColAttr  
;
webDivColTitleAttr  : webControlAttr (Comma webControlAttr)*  
;
webDivColAttr  : webControlAttr (Comma webControlAttr)*  
;
webControlAttr  //属性名=属性值  : name ASSIGN value  
;
value  : NUMBER #numberValue  | STRING #stringValue  | (TRUE | FALSE) #booleanValue  | VARIABLE #variableValue  | json #jsonValue  
;

jxTMS将根据webDivRow中的定义,自动生成一个详情界面,然后被新增、查看、修改三界面所引用,然后再分别为新增界面增加【增加】按钮、为编辑界面增加【修改】按钮。

示例如:

ROWuserSpecial '标识号:' type input width=150userName '名称:' type input width=150
ROWuserState '状态:' type combobox values=[{'text':'正常'},{'text':'停用'},{'text':'异常'}],useText=true,width=150onLineState '实时状态:' type text width=150
ROWuserDescr '说明:' type textarea width=750

就定义了一个三行的详情界面,其生成的界面为:

//基本信息
web UserInfo type div;
web UserInfo_T1 parent UserInfo type table title='用户信息',width=900,alone=true;
with UserInfo_T1 row 0 col c0 web n type text text='标识号:',width=150;
with UserInfo_T1 row 0 col c1 web n bind userSpecial type input width=150;
with UserInfo_T1 row 0 col c2 web n type text text='名称:',width=150;
with UserInfo_T1 row 0 col c3 web n bind userName type input width=150;
with UserInfo_T1 row 1 col c0 web n type text text='状态:',width=150;
with UserInfo_T1 row 1 col c1 web n bind userState type combobox values=[{'text':'正常'},{'text':'停用'},{'text':'异常'}],useText=true,width=150;
with UserInfo_T1 row 1 col c2 web n type text text='实时状态:',width=150;
with UserInfo_T1 row 1 col c3 web n bind onLineState type text width=150;
with UserInfo_T1 row 2 col c0 web n type text text='说明:',width=150;
with UserInfo_T1 row 2 col c1 web n bind userDescr type textarea width=150;

同时还创建了三个界面:

//查看
web viewUser type div;
web viewUser_D1 parent viewUser ref UserInfo width=900;//新增
web newUser type div;
web newUser_D1 parent newUser ref UserInfo width=900;
web newUser_D2 parent newUser type div width=900;
web newUser_OPBtn parent newUser_D2 type button width=150,text='增加',motion=cmd,demand=newUser;//编辑
web editUser type div;
web editUser_D1 parent editUser ref UserInfo width=900;
web editUser_D2 parent editUser type div width=900;
web editUser_OPBtn parent editUser_D2 type button width=150,text='修改',motion=cmd,demand=editUser;

大家对照看一下就能理解了。

webDivSearch是可选的带条件的分页查询表。其语法为:

webDivSearch//VARIABLE是查询的条件的语义词,必须在ROW中定义过,jxTMS会使用这些定义来生成查询条件: 'SEARCH' VARIABLE (Comma VARIABLE)* webDivList  
;
webDivList  : 'LIST' webDivListCol+  
;
webDivListCol  //bind的语义词、head : 'COL' VARIABLE VARIABLE? webDivColAttr  
;

大家可以对照【/var/chroot/home/demoOrg_2255/codeDefine/demo2/demo/codeSource】文件,以及其所生成的代码文件,同时运行一下查看相关界面来理解上述语法的效果。

参考资料:

jxTMS设计思想

jxTMS编程手册

下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

如何用jxTMS开发一个功能

下面的系列文章讲述了jxTMS的一些基本开发能力:

jxTMS的HelloWorld

http://www.lryc.cn/news/69337.html

相关文章:

  • 聚观早报 | 小冰启动GPT克隆人计划;ofo创始人在美创业改做咖啡
  • 面试造航母,入职拧螺丝,工资离了个大谱...
  • Python+selenium自动化元素定位防踩坑
  • 【计算机组成原理】实验一
  • 前端022_广告模块_修改功能
  • makefile 学习(3):C++的编译及库文件的生成与链接
  • Ceph crush运行图
  • 【分布族谱】泊松分布和二项分布、正态分布的关系
  • 关于QTreeWidget的setData函数
  • Microsoft Office 2003的安装
  • 使用Spring Boot和Spring Cloud实现多租户架构:支持应用多租户部署和管理
  • 智聚北京!相约全球人力资源数智化峰会
  • 工业缺陷检测数据及代码(附代码)
  • CentOS 安装MongoDB 6.0
  • 美团面试,被拷打了一小时....
  • 017+C语言中函数栈帧的创建与销毁(VS2022环境)
  • 马斯克们叫停 GPT-5,更像是场行为艺术
  • 事务基础知识
  • 国产高性能DSP音频处理芯片的工作原理以及应用领域
  • BEVDet4D 论文学习
  • 【设计模式与范式:创建型】43 | 单例模式(下):如何设计实现一个集群环境下的分布式单例模式?
  • Metal入门学习:绘制渲染三角形
  • python 中常见变量类型
  • SVN使用教程(一)
  • 【5.19】四、性能测试—指标、种类
  • Windows平台上的5种敏捷软件开发(过程)模型
  • 一文实现部署AutoGPT
  • 数值计算 - 误差的来源
  • 【软件测试】5年测试老鸟总结,自动化测试成功实施,你应该知道的...
  • 【Hadoop】二、Hadoop MapReduce与Hadoop YARN