当前位置: 首页 > 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

相关文章:

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

本文讲解4.0版jxTMS的自动生成代码功能, 整个系列的文章请查看:docker版jxTMS使用指南:4.0版升级内容 docker版本的使用,请参考:docker版jxTMS使用指南 任何一个管理系统都需要对管理对象进行管理,包括最…...

聚观早报 | 小冰启动GPT克隆人计划;ofo创始人在美创业改做咖啡

今日要闻:小冰启动“GPT克隆人计划”;ofo创始人在美创业改做咖啡;OpenAI正准备新的开源AI模型;青年失业率首破20%创新高;微软收购动视暴雪获批 小冰启动“GPT克隆人计划” 5 月 16 日,小冰公司…...

面试造航母,入职拧螺丝,工资离了个大谱...

有粉丝跟我吐槽说:金三银四去面试软件测试岗,真的是面试造航母,入职拧螺丝,工资还低 这种现象很正常,因为找一个测试员,当然希望他能做的业务越多越好,最好像机器猫一样,啥事儿都能…...

Python+selenium自动化元素定位防踩坑

在自动化UI测试过程中常常会在元素定位阶段就踩坑,碰到困扰已久的问题。 以下是个人整理元素定位报错原因和解决方法。 踩坑一:StaleElementReferenceException selenium.common.exceptions.StaleElementReferenceException: Message: stale element re…...

【计算机组成原理】实验一

文章目录 实验一 数据传送实验1. 实验目的2. 实验仪器3. 原理概述4. 实验内容步骤4.1 手动实验环境的建立4.2 手控传送实验 5. 实验结论及问题讨论 实验一 数据传送实验 1. 实验目的 2. 实验仪器 3. 原理概述 4. 实验内容步骤 4.1 手动实验环境的建立 1)初始待令状态 上电或…...

前端022_广告模块_修改功能

广告模块_修改功能 1、需求分析2、Mock添加查询数据3、Mock修改数据4、Api调用回显数据5、提交修改后的数据6、效果1、需求分析 需求分析 当点击 编辑 按钮后,弹出编辑窗口,并查询出分类相关信息进行渲染。修改后点击 确定 提交修改后的数据。 2、Mock添加查询数据 请求URL…...

makefile 学习(3):C++的编译及库文件的生成与链接

1. 介绍 C语言的相关后缀 .a 文件是一个静态库文件.c,.c ,.cp,.cpp,.cc,.cxx 这几种后缀都可以表示c的源文件.h ,.hpp c语言的头文件.i 是c预处理文件.o 目标文件.s汇编语言的文件.so 动态库或者共享库或者称为运行时库 2. C编译 2.1 预处理 g -E helloworld.cpp # 虽…...

Ceph crush运行图

Crush map介绍 ceph集群中由monitor负责维护的运行图包括: Monitor map:监视器运行图osd map:osd运行图PG map:PG运行图Crush map:crush运行图Mds map:mds运行图 crush map是ceph集群物理拓扑的抽象&…...

【分布族谱】泊松分布和二项分布、正态分布的关系

文章目录 泊松分布和二项分布的关系和正态分布的关系 泊松分布 如果在有限时间 ( 0 , 1 ) (0,1) (0,1)内进行 n n n次伯努利实验,那么每次伯努利实验所占用的时间为 1 n \frac{1}{n} n1​,按照自然规律,一件事情肯定是时间越长越容易发生&am…...

关于QTreeWidget的setData函数

当使用 Q T r e e W i d g e t I t e m QTreeWidgetItem QTreeWidgetItem 的 s e t D a t a setData setData 方法时,需要传递三个参数,分别是列索引、角色和数据。 列索引:表示要设置数据的列的索引。 Q T r e e W i d g e t I t e m QTre…...

Microsoft Office 2003的安装

哈喽,大家好。今天一起学习的是office2003的安装,这个老版本的office可是XP操作系统的老搭档了,有兴趣的小伙伴也可以来一起试试手。 一、测试演示参数 演示操作系统:Windows XP 不建议win7及以上操作系统使用 系统类型&#xff…...

使用Spring Boot和Spring Cloud实现多租户架构:支持应用多租户部署和管理

使用Spring Boot和Spring Cloud实现多租户架构:支持应用多租户部署和管理 一、概述1 什么是多租户架构?2 多租户架构的优势3 实现多租户架构的技术选择 二、设计思路1 架构选型1.1 Spring Boot1.2 Spring Cloud 2 数据库设计3 应用多租户部署3.1 应用隔离…...

智聚北京!相约全球人力资源数智化峰会

人力资源是推动经济社会发展的第一资源。作为我国经济压舱石的中央企业在对标世界一流企业和管理提升方面的持续创新,各行业领军企业围绕组织变革、管理升级、全球化发展走深走实。人力资源管理正从传统职能管理与管控,向紧贴业务战略实现、组织边界和人…...

工业缺陷检测数据及代码(附代码)

介绍 目前,基于机器视觉的表面缺陷检测设备已广泛取代人工视觉检测,在包括3C、汽车、家电、机械制造、半导体与电子、化工、制药、航空航天、轻工等多个行业领域得到应用。传统的基于机器视觉的表面缺陷检测方法通常采用常规图像处理算法或人工设计的特征加分类器。一般而言…...

CentOS 安装MongoDB 6.0

一、安装依赖 yum install libcurl openssl xz-libs 二、下载安装包 安装包下载地址https://www.mongodb.com/try/download/community这里我选择的是 选择RedHat / CentOS 7.0平台的原因是我的操作系统使用的是CentOS 7.0的,需要下载与操作系统匹配的安装包 三、…...

美团面试,被拷打了一小时....

刚从美团走出来,被拷打了一小时…越想越觉得可惜,回想面试经过,好好总结了几个点,发现面试没过的主要原因是在几个关键的问题没有给到面试官想要的答案。从而失去了这次宝贵的机会。 根据你的工作经历,说说你对质量保证…...

017+C语言中函数栈帧的创建与销毁(VS2022环境)

0.前言 您好,这里是limou3434的一篇个人博文,感兴趣的话您也可以看看我的其他文章。本次我将和您一起学习在C语言中函数栈帧的概念。 1.学习函数栈帧的意义 局部变量是怎么穿创建的?为什么局部变量的值是随机的函数是怎么传参的&#xff1…...

马斯克们叫停 GPT-5,更像是场行为艺术

目录 01 联名信说了什么? 02 发起方是谁? 03 谁签署了联名信? 04 联名信有哪些问题?三巨头的另外两位 Sam Altman 的表态 其他值得关注的署名者 比如马斯克。 另一个位于前列的署名者是 Stability AI 的创始人 Emad Most…...

事务基础知识

第13章 事务基础知识 1. 数据库事务概述 1.1 基本概念 **事务:**一组逻辑操作单元,使数据从一种状态变换到另一种状态。 **事务处理的原则:**保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种…...

国产高性能DSP音频处理芯片的工作原理以及应用领域

DSP芯片是数字信号处理器的简称,它是一种专门用于数字信号处理的微处理器,它可以对数字信号进行高速运算和处理。DSP是一类嵌入式通用可编程微处理器,主要用于实现对信号的采集、识别、变换、增强、控制等算法处理,是各类嵌入式系…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix&#xff0c;按照"之"字形的方式打印这个矩阵&#xff0c;例如&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为&#xff1a;1&#xff0c;…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译&#xff1a; ### 胃肠道癌症的发病率呈上升趋势&#xff0c;且有年轻化倾向&#xff08;Bray等人&#xff0c;2018&#x…...