ERP 数据流脚本框架 Samsara v2.0 脚本规范 (修订稿)

 

脚本规范:


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
}


功能:
把各种模块进行组织,达到数据流效果。

 


 

posted @ 2007-11-27 00:28    阅读(590)  评论(1编辑  收藏  举报
IT民工