Samsara v2.0 打造ERP数据流脚本编程 —— 脚本规范
2007-11-21 14:37
253 查看
Samsara v2.0 打造MIS数据流脚本编程 —— 脚本规范(初稿)
简介:
MIS很大一部份是数据库的编程,例如订单生成到货单、入库单、日志、修改数据库等。这些操作基本上都是基于表单信息,例如到货单信息来自订单 + 部分界面输入。
以往,使用代码做这中“赋值”非常的麻烦,如果涉及到了数学运算更加麻烦。
例如计算商品售价 = (商品税率+1)*商品到货金额 等等。。。。
现在使用Samrara提供的脚本编程,能够很容易的完成各种复杂并且“无聊”的表单赋值运算。
入门:
一个基于Table2生成Table1的例子:EXCHANGER TABLE1 T1
{
NUM:COLUMN1 = TABLE2.COLUMN1 * 0.11
NUM:COLUMN2 = TABLE2.COLUMN2 + TABLE2.COLUMN3
COLUMN3 = DEMOTEST
}
这样table1的字段column1/column2/column3就可以通过table2计算出来了。
用户只要给出table2的数据,通过samrara的脚本运算,能够得到需要的table1数据。
脚本规范细则:
Samrara v2.0版本一共包括7大模块,分2类。数据提供模块:EXCHANGER, SPLITTER, LOADER
流转控制模块:IFER, SWITCHER, CHANNEL
channel为流转组织中心,他对其余6大模块进行组织,完成各种逻辑。
Exchanger
EXCHANGER [TABLENAME] [IDENTIFIER]{
[COLUMNTYPE:][COLUMNNAME] = [EXPRESSION,]
}
EXCHANGER TABLE1 T1
{
NUM:COLUMN1 = TABLE2.COLUMN1 + MAX(TABLE3.COLUMN1) + SYS.SERIAL + @TIME
}
功能:
完成各种运算赋值。
后续连接符号:
NEXT
表达式标记:
[TABLENAME].[COLUMNNAME]. 如TABLE1.COLUMN1: 取自表的值
[@MARK]. 如@PERSON: 取自此mark代表的值
SYS.[type].如SYS.SERIAL:取自系统默认值,包括:SYS.NULL/SYS.SERIAL/SYS.DATETIME/SYS.PK.TABLENAME.COLUMNNAME
其他:
COLUMNTYPE = NUM/STR/BOOL/NBOOL.指定表达式的类型,分别对应数字、字符、布尔、数字运算布尔
函数 = MAX/MIN/AVERAGE/COUNT/POWER。。。等。
SPLITER
SPLITER [TABLENAME] [IDENTIFIER]{
[COLUMNTYPE:][COLUMNNAME] = [EXPRESSION,]
}
SPLITER TABLE1 S1
{
NUM:COLUMN1 = TABLE1.COLUMN1 / 2,
COLUMN2 = TABLE2.COLUMN2
}
功能:
功能同EXCHANGER。
与EXCHANGER区别:
EXCHANGER是在原数据基础上运算,即原来存在table1,那么在原table1数据基础上进行运算然后返回给TABLE1
SPLITER在元数据基础上运算后生成一个新的副本取代原数据。
后续连接符号:
OLD/NEW/NEXT
其他:
COLUMNTYPE和函数功能同上。
LOADER
LOADER [TABLENAME] [IDENTIFIER]{
SQL = [EXPRESSION],
[COLUMNTYPE]:[COLPARAM] = [EXPRESSION,]
}
LOADER TABLE1 LOAD1
{
SQL = SELECT * FROM TABLE1 WHERE COLUMN1 = :COLUMN1,
NUM:COLUMN1 = TABLE2.COLUMN1 + 12
}
功能:
从数据库装载数据到Samrara进行运算,不需要用户提供。
COLPARAM就是SQL中的参数。
后续标志:
TRUE/FALSE/NEXT
其他:
同上。
MAPPER
MAPPER [IDENTIFIER]{
[MARK] = [EXPRESSION,]
}
MAPPER MAPPER1
{
STR:@PERSON = TABLE2.COLUMN1 + DEMO
}
功能:
把表达式运算结果赋值到标记,供后续模块使用。提高复用性。
后续标志:
NEXT
其他:
同上。
IFER
IFER [IDENTIFIER]
{
[EXPRESSION]
}
IFER I1
{
AND(( TABLE1.COLUMN1 + TABLE1.COLUMN2 ) > MAX(TABLE2.COLUMN1 * TABLE2.COLUMN2))
}
功能:根据表达式计算bool结果,然后根据结果控制后续。
后续符号:
TRUE/FALSE
函数包括:
AND / OR / 无. AND表示输入的数据必须全部符合才判真、or则有真则真、无就是每次都判断。
例子:
例如订单子表如果价格>5的,那么生成入库单、否则生成送货单。这个就是无函数。
如果订单子表当所有的到货数量 == 要货数量,那么才订单确认,这个就是AND.
其他:
表达式包括数字bool运算和字符bool运算。表达式参考exchanger
SWITCHER
SWITCHER [IDENTIFIER]
{
[CASE] = [EXPRESSION]
}
SWITCHER SW1
{
CASE1 = TABLE1.COLUMN1 == 12,
CASE2 = TABLE1.COLUMN1 > 12,
CASE3 = TABLE1.COLUMN1 < 12
}
功能:是更加复杂的if,判断每个case,然后控制后续。
后续符号:
[CASE],用户指定。
函数包括:
AND / OR / 无. 同上。
其他:
表达式包括数字bool运算和字符bool运算。
CHANNEL
CHANNEL [IDENTIFIER]
{
[FROM] = [TO]
}
CHANNEL CHANNEL1
{
EXCHANGER.TABLE1.E1.NEXT = SPLITER.TABLE1.SP1,
SPLITER.TABLE1.SP1.OLD = EXCHANGER.TABLE2.E1,
SPLITER.TABLE1.SP1.NEW = EXCHANGER.TABLE2.E2
}
功能:把各种模块进行组织,达到数据流效果。
高级话题:
Samrara的核心关键字:单流、多流、分流、合流。一张订单主表对应5张订单子表,那么主表就是单流、子表就是多流。
。如果订单子表到货金额>5,就XXX,否则YYY。这个就是分流。
。当分流后再次汇聚到相同模块,就是合流。
单流和多流概念非常重要,会影响到数据的输出正确性。例如一个刚才的exchanger例子:
EXCHANGER TABLE1 T1
{
NUM:COLUMN1 = TABLE2.COLUMN1 * 0.11
NUM:COLUMN2 = TABLE2.COLUMN2 + TABLE2.COLUMN3
COLUMN3 = DEMOTEST
}
如果用户给出table2的数据有5条,就是多流,那么生成的table1也会有5条数据。再看一个例子:
COLUMN1 = TABLE2.COLUMN1 + TABLE3.COLUMN1
如果用户给出table2数据为1条,table3数据为5条,那么仍然输出5条,其中table2的那条数据重复参与运算5次。
如果用户给出table2数据为3条,table3数据为5条,那么就会报错,因为无法进行流匹配。
再复杂一点,如果用户之前给出了table1的数据,那么重新考虑脚本:
EXCHANGER TABLE1 T1
{
NUM:COLUMN1 = TABLE2.COLUMN1 * 0.11
NUM:COLUMN2 = TABLE2.COLUMN2 + TABLE2.COLUMN3
COLUMN3 = DEMOTEST
}
如果table1 = 1, table2 = 5,报错,因为无法对应。
小结一下:
单流 = 单流 正确
单流 = 多流 错误
单流 = 函数(多流)正确
多流 = 单流 正确
多流 = 多流 正确(流量必须匹配)
多流 = 函数(多流)正确
接下来还会有更加细致的问题。
相关文章推荐
- ERP 数据流脚本框架 Samsara v2.0 脚本规范 (修订稿)
- 【Shell脚本编程系列】Shell脚本开发的习惯和规范
- 【Shell脚本编程系列】知识储备以及建立规范的脚本
- Samsara v2.0 MIS数据流脚本编程 Demo
- ORACLE 12C 生产脚本规范
- Loadrunner脚本开发规范
- PowerCenter 7.1.3 ETL UNIX Shell 脚本书写规范
- Linux下trap+shell三层目录专业规范跳板机脚本
- 12_Shell语言―――脚本的书写规范以及检查和调试脚本
- Shell脚本的书写规范与优秀的开发习惯
- 一个脚本讲述python语言的基础规范,适合初学者
- 网页设计规范及脚本语言规范
- Oracle 数据库管理脚本 命名规范
- [转]NTFS交换数据流打造文件隐藏…
- robotframework 脚本编写规范
- mac 系统下 使用 crontab 命令设置定时执行脚本,定时书写规范
- 七腾软件精心打造永固混凝土ERP
- ◎Vbs脚本编程简明教程之十 —— Vbs脚本编程常用的编辑器
- 通过脚本案例学习shell(五) 通过创建DNS脚本一步一步教你将一个普通脚本规范到一个生产环境脚本 推荐
- bash脚本编程之case语句及脚本选项进阶