脚本规范:
Samsara v2.0 框架一共包含 7大模块
数据模块:Exchanger, Spliter, Loader,Mapper
流转控制模块:Ifer,Switcher,Channel
Exchanger
EXCHANGER
[
TABLENAME
]
[
IDENTIFIER
]
{
[
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
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
其他定义同上。
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
EXPRESSION:
数字布尔、字符布尔运算表达式。包含函数AND / OR / 无.
AND表示输入的数据必须全部符合才判真、or则有真则真、无就是每次都判断。
例子:
例如订单子表如果价格>5的,那么生成入库单、否则生成送货单。这个就是无函数。
如果订单子表当所有的到货数量 == 要货数量,那么才订单确认,这个就是AND.
其他同上。
Switcher
SWITCHER
[
IDENTIFIER
]
{
[
CASE
]
:
[
EXPRESSION
]
}
SWITCHER SW1
{
CASE1 : TABLE1.COLUMN1
==
12
,
CASE2 : TABLE1.COLUMN1
>
12
,
CASE3 : TABLE1.COLUMN1
<
12
}
功能:
是更加复杂的if,判断每个case,然后控制后续。
后续符号:
[CASE],用户指定。
其他同Ifer.
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
}
功能:
把各种模块进行组织,达到数据流效果。