文章目录
前言
从今天开始,我将从开发语言角度来介绍SMP,这是一个很艰难的工作,一方面需要向大家说明这个语言的构成,让大家了解SMP语言的全貌,另一方面,又担心专业性太强,许多人会知难而退,真是两难选择!我想还是尽量从科普的角色(而不是从专业的角色)来介绍SMP语言吧。
开发语言一般是用于编程的语言,编程语言往往有其架构和特点、有其定义、有语法。,开发者必须按照其语法、语义的要求进行编程。和其他开发语言一样,SMP也有自己的架构、定义、语法、语义。
一、对应用系统的抽象
SMP是软件制作平台,是为开发应用系统而设计的开发语言,它的设计和应用系统特点密切相关。
SMP首先把各行各业的应用系统抽象成界面+功能两大元素。我们认为几乎所有的应用系统,无论银行业、制造业、电信业、烟草行业、国家行政机关等等各种各样的应用系统都是由界面和功能所组成的。
这说明了应用系统是有用户进行操作的,操作就必须有界面,并指导用户操作;另外说明应用系统一定是提供功能来满足某类需求,没有一个应用系统是没有功能的。
至于什么界面和功能我们会在以后进行进一步讨论。
SMP语言是根据抽象的应用系统进行研发的。
二、SMP是一种XML(可扩展标记语言)格式文件
SMP采用xml文件格式,通过标签、属性、内容来描述(定义)应用系统。其中标签、属性是SMP语言的语法和语义的要求。
例如:< SMP ></ SMP >就是一个标签。
也就是说,开发者只要按照SMP规定的语法语义去编写xml文件,就完成了程序的编写。SMP把编程过程,称之为定义过程,所以我们把xml称之为定义文件。
三、SMP核心系统+xml=应用系统
Xml文件通过SMP核心程序的运行,产生了应用系统。
SMP核心系统名称为:SMP10.aspx
四、开发者无需按装任何语言安装包
开发者只要获得授权,只要通过电脑编辑SMP的xml文件,即可上网上传到SMP开发网站,即可以运行。这种便利性是难以想象的。Xml文件是一个文本文件,可以用电脑自带的记事本进行编辑,也可以找一个xml编辑器编辑,非常方便。
不同于其他开发工具,需要安装语言,安装环境、然后找到编辑程序,才能编辑程序,才能编译运行。
可以说只要有上网的电脑就可以进行SMP开发。
五、SMP语言架构
语言架构是指一个完整的程序由几部分组成,完整的SMP语言架构有8个部分:
1、 引用部分 < Using >
引用部分是SMP定义文件头部部分,用于引用系统的、自身的和其他的相关定义和文件。几乎所有应用系统都需要引用其他文件。
引用的目的就是减少自己的定义,利用现有的定义以到达快速开发的目的。
2、 界面部分 < Form >
界面部分是专门用于定义界面,其部分标签为< Form ></ Form >,所有的界面都在其中。
一个界面的标签为< Form id=”XXX” >界面元素</ Form >,其中id为一个界面的唯一的键值。界面元素是一组有界面元素标签的节点。
界面元素主要有< lbl >标识、< txt >文本框、< cmd >命令按钮、< dlst >下拉框等。
每个界面元素的标签都有自己的属性。详细说明请参考SMP社区。
看到界面就要想到界面的格式,每个界面元素的格式,一般都在css属性进行定义格式名,再css文件中进行具体定义。
3、 界面初始化部分 < Form_Init >
界面部分中的界面一般是静态的,没有数据的,界面初始化可以对界面中的界面元素进行数据加载,或产生一个动态数据的显示。因此,SMP设计了界面初始化部。
界面初始化部的标签为< Form_Init ></ Form_Init >所有界面初始化定义都定义其中。
其标签为:
< form_init form_id=”XXX” >界面初始化内容</ form_init >
注意界面初始化的标签为小写。界面初始化部为头字母大写。
form_id为界面ID,其中XXX可以是单个界面,也可以是多个界面。界面分割符为‘|’。
4、 数据库定义部分 < Db >
数据库定义部分主要是用于定义应用系统中所用到的数据库、数据表、虚拟表的定义、并可以对表进行初始化数据装入、其chk_flag可以方便地进行数据表结构的产生和修改。
5、 数据部分 < Data >
数据部分主要用于数据的定义,主要有:
1.系统参数定义
2.查询条件参数定义
3.Sql参数定义
4.常用变量定义
6、处理(函数)部分 < Deal >
SMP把功能处理内容放在处理(函数)部分之中,其标签为:
< Deal >处理(函数)</ Deal >,
它是函数的存放之处。
注意:处理函数是被调用的,本身不能主动去执行。
目前函数有两种:SMP函数和C#函数。
SMP函数是按照SMP函数语法语义编写的语句。
C#函数是用C#语言编写的函数。
7、主程序部分 < Main >
是指功能界面一开始要处理的内容。一般的应用系统都会有主程序、只有少数极简单的应用系统不需要主程序。
主程序的主要用于:
1.获取链接上参数进行分类处理
2.进行各种界面预处理
3.权限处理
8、命令部分 < CMD >
命令部分是指放置点击功能界面按钮要进行的特殊的各种处理的区域。即放置命令定义的地方
命令定义:< cmd cmd_name = ”XXX”>命令语句</ cmd >
一个命令包含许多条命令语句,不同的命令有不同的标签,形成命令标签。
命令语句:
1)条件语句
< if >< else >、< do >、< switch >< case >、< chk >、< foreach >
2)赋值语句、变量语句
< set >、< val >
3)条件语句
< form >、< db >、< file >、< search >、< download >、
< dt >、< fun >、< return >、< xls >、< url >、< var >、< dlst >
4)特殊语句
< ok >、< no >、< cmd >、< return >、< remark >
这些标签见标签文档说明
以上所有8个部分都被包含在< SMP ></ SMP >之中, SMP定义文件的标志就是其根节点为SMP。
要强调的是并非所有应用系统都需要这个8个部分,一般情况下界面部分和命令部分是最常用的部分。
六、SMP标签规范
标签规范是SMP所有语句的规范总称,每条语句都是由标签组成。
1、SMP标签
定义文件的根标签< SMP >
2、引用部分标签
< title > < css > < inlcude > < using >
3、界面部分标签
< Form >和界面元素标签:< block > < line > < lbl > < txt > < cmd > < table > 等
4、界面初始化部分标签
< Form_Init > < lbl > < dlst > < txt >
5、数据库定义标签
< Db > < Table >
6、数据部分标签
< Data > < data > < var >
7、处理部分标签
< Deal > < function >
8、主程序部分标签
< Main >、命令标签
9、命令部分标签
< CMD > < cmd >和命令标签
七、SMP命名规范
SMP是一个崇尚规则的语言,有其在命名方面,它更加强调规则。一般开发语言在命名方面,几乎没有什么限制,想怎么取名就怎么取名,只要自己看的懂就可以。
SMP注意到命名无规则给开发带来的看不懂、要看说明书的问题,在主要命名方面给出了命名建议(不强求)。
1、应用系统名称
应用系统英文缩写,一般用2-4个字母表示。
2、定义文件名
系统名称+功能
3、界面ID
分用户、分层、分级、分次序
保证能迅速定位到界面。
4、功能名
界面ID+功能
保证能迅速定位到界面和命令两者。
八、SMP核心系统处理流程
SMP核心系统是如何对一个xml文件进行处理的,了解这个流程是什么对开发者编程是非常重要的和非常必要的。
第一步:smp核心将对sys_code=MS833 def=psc1_page.xml进行合法性处理。
即pcs1_page.xml是否存在。如果存在则进入第二步。
第二步:对pcs1_page.xml引用部分进行处理
将模板,引用等多个文件都还原成一个文件,SMP只对一个定义文件进行处理。
第三步:对数据库定义进行处理
产生表、修改表、装入数据、产生虚拟表等
第四步:第界面部分的第一个界面进行显示处理
显示界面中各个界面元素
第五步:对界面初始化进行处理
对当前界面进行初始化处理,例如加载下拉框数据,给出动态标识内容等。
第六步:对< Main >进行处理
如果链接上有display_table,则显示form_id的界面(这个界面一定是在第一个界面基础上的)。
如果没有则,执行main中的语句,其中会显示一个新的界面(这个界面一定是在第一个界面基础上的。
第七步:等待用户点击。执行命令定义
命令定义会再次调用smp10,如此循环执行。
由于SMP语言内容极其丰富,很难在在一篇文章说明清楚,我们只是把其基础知识科普给大家,让大家对SMP语言有一个初步性和框架性的认识。后面我们会根据这些基础知识再进一步展开说明,以加深对SMP语言本身的印象。

381

被折叠的 条评论
为什么被折叠?



