ERP 数据流脚本框架 Samsara v2.0 脚本规范 (修订稿)
脚本规范:
Samsara v2.0 框架一共包含 7大模块
数据模块:Exchanger, Spliter, Loader,Mapper
流转控制模块:Ifer,Switcher,Channel
Exchanger
{
[COLUMNTYPE:][COLUMNNAME] = [EXPRESSION,]
}
EXCHANGER TABLE1 T1
{
NUM:COLUMN1 = TABLE2.COLUMN1 + MAX(TABLE3.COLUMN1) + SYS.SERIAL + @TIME
}
功能:
数据交换映射。
后续连接标记:
NEXT
COLUMNTYPE:
字段的类型,用于确认此字段的处理类型。
包括:NUM/STR/BOOL/NBOOL = 数字、字符、布尔、数字运算布尔
EXPRESSION:
表达式,包含各种标识符、函数符号。
标识符包括:TABLENAME.COLUMNNAME/@MARK/SYS.TYPE = 表标识、占位标识、系统标识
。表标识代表此数据来源于表
。占位标识代表此数据来源于此占位符代表的数据(于Mapper结合能构造通用模块)
。系统标识是Samsara默认的数据源,包括:SYS.NULL/SYS.SERIAL/SYS.DATETIME/SYS.PK.TABLENAME.COLUMNNAME
函数符号包括:MAX/MIN/AVERAGE/COUNT/POWER等。
Spliter
{
[COLUMNTYPE:][COLUMNNAME] = [EXPRESSION,]
}
SPLITER TABLE1 S1
{
NUM:COLUMN1 = TABLE1.COLUMN1 / 2,
COLUMN2 = TABLE2.COLUMN2
}
功能:
功能同EXCHANGER。
与EXCHANGER区别:
EXCHANGER是在原数据基础上运算,即原来存在table1,那么在原table1数据基础上进行运算然后返回给TABLE1
SPLITER在元数据基础上运算后生成一个新的副本取代原数据。
后续连接符号:
OLD/NEW/NEXT
其他定义同上。
Loader
{
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
{
[MARK] = [EXPRESSION,]
}
MAPPER MAPPER1
{
STR:@PERSON = TABLE2.COLUMN1 + DEMO
}
功能:
把表达式运算结果赋值到标记,供后续模块使用。提高复用性。
后续标志:
NEXT
其他同上。
Ifer
{
[EXPRESSION]
}
IFER I1
{
AND(( TABLE1.COLUMN1 + TABLE1.COLUMN2 ) > MAX(TABLE2.COLUMN1 * TABLE2.COLUMN2))
}
功能:
根据表达式计算bool结果,然后根据结果控制后续。
后续符号:
TRUE/FALSE
EXPRESSION:
数字布尔、字符布尔运算表达式。包含函数AND / OR / 无.
AND表示输入的数据必须全部符合才判真、or则有真则真、无就是每次都判断。
例子:
例如订单子表如果价格>5的,那么生成入库单、否则生成送货单。这个就是无函数。
如果订单子表当所有的到货数量 == 要货数量,那么才订单确认,这个就是AND.
其他同上。
Switcher
{
[CASE] : [EXPRESSION]
}
SWITCHER SW1
{
CASE1 : TABLE1.COLUMN1 == 12,
CASE2 : TABLE1.COLUMN1 > 12,
CASE3 : TABLE1.COLUMN1 < 12
}
功能:
是更加复杂的if,判断每个case,然后控制后续。
后续符号:
[CASE],用户指定。
其他同Ifer.
Channel
{
[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
}
功能:
把各种模块进行组织,达到数据流效果。