spec开发思路以及理解
一、spec说明
描述:编写SEPC采用创联公司自主开发的CIT语言,它是一种过程化的、类似数据库编码的语言。SPEC中除了关键字外提倡使用中文。
理解:可以理解为业务逻辑层。链接前台页面和后台数据库
设计阶段:
业务逻辑的输入与输出(是谁?要怎么判断是谁操作?’标识、类型、级别、内容‘,也可以是页面需求的字段:修改时候的字段,删除时候的id,查看时候的条件)
所涉及的数据表结构(字段输出需要几张表才有你想要数据,’关联的表,“用到的表”‘)
处理实现
1.调用(可无)
2.要不要用的临时表与临时变量(可无)
3.输入检查(可无)
4.预处理(可无)
5.前校验(可无)
6.处理(必须要,处理逻辑,可以说是关键数据库语句)
准备阶段:
1.IO定义:将’描述‘下的输入和输出定义在IO文件夹下相应的表中
2.静态数据结构:关联相对应的表
3.宏定义:在Spec2Code下配置在IO定义的路径,定义BASE文件下
4.自定义函数
书写阶段:
交易编号(QU为SPEC的类型,sy为子系统的标识,SMD0057为数字序号)
QUSYSMD0057(设计IO内部输入输出的的标号相同,一般直接用于当文件名,生成文件时候要在前面加上SPEC,可自定义,要注意命名规范)
(QU查询,SY系统,SMD,0057编号)
(bk:预约管理、im:主数据、oa:oa模块、od:销售管理、pd:生产管理、ps:采购管理、qs:质量管理、st:库存管理)
交易名(任何一个种类的SPEC都有英文名称和中文名称,英文名称的前四位有一定的规则,同交易编号的前四位。)
QUSYSMD_SysMaterialShareUnitQry(设计IO内部输入输出的的标号相同,可自定义,要注意命名规范)
物料共享管理单元列表查询(设计IO内部输入输出的的标号相同,可自定义,要注意命名规范)
描述 (红色为注解)
主要处理如下:(接收传送过里的数据)
输入输出变量如下:(根据IO配置来写,IO配置INO则为输入,OUTO则为输出)
当没有明细名称时:
输入.(配置字段名称,’中文‘) 例如: 输入.操作员标识
当有明细名称时:
输入明细.(明细名称下的字段).(字段名称下的字段) 例如:输入明细.订单明细.卷烟标识
输出.(配置字段名,’中文‘)
静态数据(罗列本SPEC中所使用到的静态数据结构的名称。应用到的数据库表)(可以说是数据库中表)
调用 (罗列本SPEC对象所调用的其它SPEC对象。)
临时表(罗列本SPEC中使用的临时表的名称。)(一些临时表,用于临时调用,用完清除数据,但没有清除表结构)
临时变量(对本SPEC中使用的所有临时变量进行定义。)(相当于在java定义一个变量或者数组等,之后再进行赋值)
输入检查(对定义输入参数的逻辑检查,包含判断不允许为空的输入是否为空,输入的值是否在预定的范围。)(对于传过来的数据进行校对,错误直接停止执行spec编译后的java和IO,降低资源消耗)
预处理(在正式进行处理前需要预先准备的逻辑,如对变量赋初始值或是对输入的标识能否查询到相应的记录,当前是否允许进行此SPEC定义的操作等。)
(spec文档的sql有个局限性,无法进行sql套用,导致只能将一个表数据放到临时表再进行调用;以及将一些条件值赋给临时变量)
前校验(未启用)
处理(实质的逻辑处理过程,如数据更新,结果返回。) (进行中文sql的书写,编译后能进行中文sql的转变对应的oracle、db、server三种格式的数据库sql语句,再进数据查询返回)
代码生成阶段:如果改了配置文件则要重新加载资源,在生成文件
调试阶段:
个人领悟理解:
1.交易TX、公共模块CF、查询QU、存储过程SP,所有的对象都以文本文件(.txt)方式保存。
2.TX、QU可以被展现控制层调用,对于框架中出现中文的空格会导致编译报错是一大弊端。
3.IO对象说明:
列数:顺序号,从1开始,必须连续;
字段属性:表示输入(IN0)、输出(OUT0);
字段名称:中文名称
字段标识:英文名称
字段类型:数据类型
字段长度:数据长度
明细数量:明细的输入参数个数
明细名称:明细数组的中文名称
明细标识:明细数组的英文名称
明细最大数:数组的长度极大值
4.静态数据结构:数据库表结构的定义。(就可以说是数据库字段设计说明)
使用字段方法:表名字(中文).字段中文名称(中文) 例如:订单主表.订单标识
5.宏定义:(对于一些自定义、字典设计、还有列表) 使用: 维护标记.新增 第三段.第五段
6.内部结构图:必须要要有,无论是否有字段(可以理解为固定框架)
7.sql语句的理解:对于关键字还是固定,但是关联、表名、需求字段等都是用数据库表中的字段中文名,对于最后的一个分号则用对应语句前加上END,如:INSERT---ENDINSERT
8.DUMP与ERROR语句放在一起时,DUMP要在ERROR之前,否则ERROR执行以后程序就退出了,执行不到DUMP语句。
9. WHERE 查询条件
OPTION 参数条件(新的知识)
WITH 查询条件
ENDOPTION
OPTION一般在WHERE子句后使用,使用效果相当于在WHERE子句后按变量的值拼结条件
例子:
WHERE A.是否可用 = "1"
OPTION 输入.检索类型 = "01" AND 输入.检索内容 <> ""
WITH AND a.姓名 LIKE "%" UNIONSTR 输入.检索内容 UNIONSTR "%"
ENDOPTION
二、spec图片截图解析:





spec文档例子:
交易编号
QUSCMST0051
交易名
QUSCMST_StorUUIDQuery
出入库单据标识查询
描述
主要处理如下:
//TC
输入输出变量如下://单据类型 P1213采购入库单 P1224销售出库单
输入.出入单标识
输入.单据类型
静态数据
采购入库单主表
销售出库单主表
调用
临时变量
单据类型编码 TYPEAS 输入.出入单标识
临时表
输入检查
IF 输入.出入单标识 = ""
DUMP 输入.出入单标识
ERROR ENULL
ENDIF
IF 输入.单据类型 = ""
DUMP 输入.单据类型
ERROR ENULL
ENDIF
预处理
IF 输入.单据类型 = "P1231"
临时变量.单据类型编码 = "50957179015fc0a812fED552"
ENDIF
IF 输入.单据类型 = "P1232"
临时变量.单据类型编码 = "509571790a812fd463ED552"
ENDIF
前校验
处理
//采购入库单
IF 输入.单据类型 = "P1231"
QUERY
SELECT A.入库单标识 AS InStorUUID
,临时变量.单据类型编码 AS DataCode
FROM 采购入库单主表 AS A
WHERE A.是否可用 = "1"
AND A.来源单据标识 = 输入.出入单标识
AND A.业务类型 LIKE "B071%"
ENDQUERY
ENDIF
//采购入库单
IF 输入.单据类型 = "P1232"
QUERY
SELECT A.出库单标识 AS OutStorUUID
,临时变量.单据类型编码 AS DataCode
FROM 销售出库单主表 AS A
WHERE A.是否可用 = "1"
AND A.来源单据标识 = 输入.出入单标识
AND A.业务类型 LIKE "B072%"
ENDQUERY
ENDIF
三、系统框架,与现在市面的逻辑基本不一样,但是后台进行了封装。如下图:


四、将spec转化成对应的Io和java流程:

有什么问题的请大家多多指教
@name:李观森
@weixin :18312717936
@qq :860849503
spec开发思路以及理解的更多相关文章
- OpenWRT - WEB界面开发思路和基本方法
想要对OpenWRT的WEB界面(*下称界面)进行修改.修改的目标是: 1.修改页面的样式,设计为企业的风格(stylesheet) 2.新建自己的功能,实现 访问页面后,用户就可以对配置文件(也就是 ...
- android开发-mvp模式理解
看之前,先忘掉所有,一步步看就行了. 最后会有一个原型demo,当然是转的了.看完文章,再看demo,然后再回头看文章就很好理解了,最好自己写一遍. 1.mvp开发模式可以理解为页面接口编程,每一层的 ...
- halcon学习笔记——机器视觉工程应用的开发思路【转】
转自:http://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html 机器视觉工程应用主要可划分为硬件和软件两大部分. 硬件:工程应 ...
- Android常见开发思路
开发思路 刷新: 重新获取数据 清空list 更新适配器 关闭进度条. 加载更多 1. 重新获取数据 添加list 更新适配器 添加轮播条. 自己设计轮播条View 引入lib库文件 设置轮播条数据. ...
- JavaScript 应用开发 #1:理解模型与集合
在 < Backbone 应用实例 > 这个课程里面,我们会一起用 JavaScript 做一个小应用,它可以管理任务列表,应用可以创建新任务,编辑还有删除任务等等.这个实例非常好的演示了 ...
- 初次接触ARM开发,理清这四个开发思路很重要!
初次接触ARM开发,理清这四个开发思路很重要! 由于涉及编程,学习ARM单片机系统对于从事电子电路的设计者来说是有些困难的,学习知识不难,难的是理清其中的开发思路,找到一个好的起点.本文就将从这一步入 ...
- 微信小程序开发思路
小程序还没有完全开放,不能真实体验,但通过文档和开发工具,可以了解到他的开发思路 下面就介绍下小程序的开发方式,希望能帮助有兴趣的朋友对整体思路有个快速了解 整体结构 默认示例项目的目录结构 从后缀名 ...
- Halcon学习笔记——机器视觉应用工程开发思路及相机标定
机器视觉应用工程开发思路 机器视觉应用工程主要可划分为两大部分,硬件部分和软件部分. 1.硬件部分,硬件的选型至关重要,决定了后续工作是否可以正常开展,其中关键硬件部分包括:光源,相机以及镜头. 2. ...
- 微信小程序红包开发思路 微信红包小程序开发思路讲解
之前公司开发小程序红包,将自己在开发的过程中遇到的一些坑分享到了博客里.不少人看了以后,还是不明白怎么开发.也加了我微信咨询.所以今天,我就特意再写一篇文章,这次就不谈我开发中遇到的坑了.就主要给大家 ...
随机推荐
- 网络协议 10 - Socket 编程(上)
前面一直在说各种协议,偏理论方面的知识,这次咱们就来认识下基于 TCP 和 UDP 协议这些理论知识的 Socket 编程. 说 TCP 和 UDP 的时候,我们是分成客户端和服务端来认识的, ...
- nginx lnmp之nginx+php
配置如下(在server部分添加): location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; ...
- Java高级开发_性能优化的细节
一.核心部分总结: 尽量在合适的场合使用单例[减负提高效率] 尽量避免随意使用静态变量[GC] 尽量重用对象,避免过多过常地创建Java对象[最大限度地重用对象] 尽量使用final修饰符[内联(in ...
- kubernetes node节点失效 调度
kubernetes 配置: 测试node挂 机,发布需要等几分才会 在其它 的node机器 启动,这个明显不合理,对于大多数业务 kube-controller-manager配置: /etc/sy ...
- IE浏览器卡死提示是否停止运行此脚本的解决办法
IE浏览器经常卡死,报是否停止运行此脚本,严重影响使用体验,下面小编教大家怎么解决这个问题,供大家参考! 1.启动IE浏览器,点击上方菜单栏位的工具,如下图所示 2.在工具栏位选择internet选项 ...
- Sql Server 数据库出现“可疑”的解决办法
问题:数据库名称出现“可疑”字样 解决: 方法一: 重新还原数据库 方法二: 贴上语句:(DB_CS:你的数据库名) 第一步: ALTER DATABASE DB_CS SET EMERGENCY 第 ...
- ASP.Net Core使用分布式缓存Redis从入门到实战演练
一.课程介绍 人生苦短,我用.NET Core!缓存在很多情况下需要用到,合理利用缓存可以一方面可以提高程序的响应速度,同时可以减少对特定资源访问的压力. 所以经常要用到且不会频繁改变且被用户共享的 ...
- 小程序报错 “渲染层错误” Expect END descriptor with depth 0 but get another
项目中有几个页面在控制台出现这个“渲染层错误”,虽然不影响业务操作,怕存在潜在风险,今天抽时间找了下原因,解决这个问题. 控制台报错日志如下: (中国标准时间) 渲染层错误 Error: Expect ...
- Java的多路分支代码,感觉有点意思
/** * @Author hty * @Date 2019-12-16 16:39 * @Version 1.0 */ import java.util.Random; // 比赛结果 enum O ...
- FPGA成神之路
先占个坑,网上写的都太没有体系了,打算写一个从电路到语法,从软件使用到硬件调试,从IP核调用到时序分析的系列帖子,人就是太懒,想把自己这两年踩的坑分享一下,加油,特种兵