一、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

转载于:https://www.cnblogs.com/lgs-19/p/7765355.html

spec开发思路以及理解相关推荐

  1. 基于Passthru的NDIS开发的个人理解

    基于Passthru的NDIS开发的个人理解 这几天对NDIS的学习,基本思路是:首先熟悉理论知识→然后下载一个例子进行研究→最后例子自己模仿扩展→最最后尝试自己写一个新的. Passthru是微软N ...

  2. php进阶面向对象及tp5,TP5实战技巧---开发思路 引路造桥

    ## TP5实战技巧实例---开发思路 > 子曰:"学而不思则罔,思而不学则殆." [TOC] ### 利用TP的MVC框架 做快速开发 >[success] 写在前面 ...

  3. php制作的ios端 跳转url,ThinkPHP 简易开发思路 MVC和URL跳转

    本文作者:Twe1ve(贝塔安全实验室-核心成员) 这段时间在看PHP代码审计相关知识,国内有不少CMS都是基于ThinkPHP开发的,因此了解ThinkPHP的开发思路更容易理解这类CMS的代码 一 ...

  4. 呼叫中心系统的基本构成和二次开发思路

    呼叫中心系统的基本构成和二次开发思路 目前呼叫中心大多基于IP软件换系统开发,常见的底层有 freeswitch,asterisk,freepbx等,一提到底层开源.有些用户觉得只要是开源就能掌控,就 ...

  5. OpenWRT - WEB界面开发思路和基本方法

    想要对OpenWRT的WEB界面(*下称界面)进行修改.修改的目标是: 1.修改页面的样式,设计为企业的风格(stylesheet) 2.新建自己的功能,实现 访问页面后,用户就可以对配置文件(也就是 ...

  6. halcon学习笔记——机器视觉工程应用的开发思路

    机器视觉工程应用主要可划分为硬件和软件两大部分. 硬件:工程应用的第一步就是硬件选型.硬件选型很关键,因为它是你后面工作的基础.主要是光源.工业相机和镜头选择. 软件:目前业内商业库主要有Halcon ...

  7. Halcon学习笔记——机器视觉应用工程开发思路及相机标定

    机器视觉应用工程开发思路 机器视觉应用工程主要可划分为两大部分,硬件部分和软件部分. 1.硬件部分,硬件的选型至关重要,决定了后续工作是否可以正常开展,其中关键硬件部分包括:光源,相机以及镜头. 2. ...

  8. STM32的学习记录--单个模块开发思路

    1. 前言 很久没写STM32的学习博客了,不是因为没在搞,而且因为STM32要学习的部分太多,而且代码量太大了,有些代码还涉及到版权问题,就一直没写,最近刚好在搞一个智能设备有关WiFi模块的开发, ...

  9. 二次开发 英文_Revit二次开发——异形柱翻模插件的开发思路

    BIM管线综合项目中,结构模型柱梁板搭建,属于最没有营养的 而结构模型的精确是后续开展的前提 结构主体自动化建模--人工校核梁尺寸标高.板厚等,是效率较高的工作流程 看市面上翻模插件的数量就知道需求有 ...

  10. Android-图像识别项目OpenCV(4):开发思路以及问题

    上一篇文章:Android-图像识别项目OpenCV(3):程序目标以及单独发布 六.开发思路 搭建好环境和做好各种准备功夫,接下来就开始我们的开发之路. 首先,我们先查看一下官方教程文档,看有没有我 ...

最新文章

  1. Gitlab+Gerrit+Jenkins完整对接
  2. AgileEAS.NET平台之ORM设计器
  3. django中csrftoken跨站请求伪造的几种方式
  4. python读取图片上的文字_Python帮你读取图片中的文字(OCR)
  5. iview 可以选择当天 禁用_人脸识别刚要普及,怎么就被禁用了?|人脸识别|人脸信息|世超|rekognition...
  6. linux修改挂载目录名字,linux下修改mount挂载目录名
  7. 我对Spring的理解
  8. np.radians_带有Python示例的math.radians()方法
  9. 微博计数:从关系服务到访问计数, Redis 持续优化支撑万亿级访问(含 PPT)
  10. 语音识别结合应用场景之后
  11. 带网格的_【我看身边的网格化】申港街道:一人一板穿梭楼宇小巷 一网一格解决百姓问题...
  12. linux修改文件的权限和修改文件所有者和所属组
  13. Linux的slab和nginx的区别,nginx中slab机制理解
  14. 联想全球裁员 MOTO移动业务被砍掉超过一半
  15. 书籍折页是什么效果_书籍折页什么样 - 卡饭网
  16. html网页对账单样式,结算对账单.html
  17. Problem : 闰年闰月
  18. mysql常用日期的写法
  19. linux系统外接硬盘_Mac如何在外置硬盘上安装Linux
  20. android功能机,诺基亚正式发布了4款安卓智能手机和一款能上网的功能机

热门文章

  1. C#中操作Excel(4)—— 向Excel中插入两种图表以及设置图表格式
  2. 微信支付-同一个订单多次请求(生成二维码)方案
  3. python写 两只老虎.wav 音频文件
  4. Docker网络之三:自定义容器虚拟IP
  5. 2018年UI设计趋势概览
  6. Unity 旋转角度计算
  7. python的eval函数
  8. Google的图片处理库和条码处理库、汉字转拼音库
  9. 视图中的调用者权限控制bequeath current_user
  10. 如何发现适合自己深度投入的领域?