zoukankan      html  css  js  c++  java
  • 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
    }


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

     


     

  • 相关阅读:
    moc处理cpp文件
    程序员!你还能年轻几岁?
    多媒体会议系统中的延迟
    把C++类成员函数集成到lua
    Q_PROPERTY使用
    python与c的集成
    注册C函数与类成员函数到lua
    摄像头(WebCam)在Linux操作系统中的驱动方法
    网络营销实战必读之书推荐:《网络营销实战密码》
    这样写的博客才有更多的人愿意看
  • 原文地址:https://www.cnblogs.com/zc22/p/973396.html
Copyright © 2011-2022 走看看