zoukankan      html  css  js  c++  java
  • Samsara v2.0 高级技巧

     

    高级技巧


    Samrara包含四大概念:单流、多流、分流、合流。


    单流与多流(流量)

    一张订单主表包含4张订单子表,那么主表就是单流、子表就是多流,有4条流。

    由于在脚本里面并没有体现出数据的流量,那么此模块需要运行几次?生成多少结果?为了解决这些问题,引入了单流多流概念。

    如果用户输入数据只有一条,则是单流,否则就是多流。

    EXCHANGER TABLE1 E1
    {COLUMN1 = TABLE2.COLUMN2}

    TABLE1单流、TABLE2单流:正确
    TABLE1单流、TABLE2多流:错误,无法匹配
    TABLE1多流、TABLE2单流:正确,TABLE2将被运行多次
    TABLE1多流、TABLE2多流:如果两表流量一致则正确。

    唯一能够消除单流:多流错误的情况就是引入函数运算。

    EXCHANGER TABLE1 E1
    {
    COLUMN1 = SUM(TABLE2.COLUMN2)
    }

    单流:多流。此时函数运算结果是一个值,所以正确。


    流量如何判断?
    通过用户输入初始化流量。单流则使用流量标记-1,多流则从0开始排序。
    模块首先判断处理的表对象是否单流,else 判断表达式是否单流。
    确定是单流后,凡是遇到需要引用多流对象,则默认其是参与函数运算,因此有多少引入多少。
    确认是多流后,则需要根据流量标记进行引用。

    如果用户不输入数据,全部由Loader产生怎么办?
    处理方法可以参考用户输入的情况,只是输入的动作由samsara完成了。


    分流与合流



    当遇到Loader、Ifer、Switcher的时候会产生分流,此时需要特别考虑多流。
    由于多流被流量标记标识,则分流之后,需要分离流量标识。可以认为分流后的模块所有流量标识之和就是分流前的模块。
    分流后,所有多流数据会根据流量表示进行分离,保证后续单流引用多流的操作正确。

    例如:
    如果订单主表的到货数量 为 子表到货数量==要货数量的子表和。那么这个判断就会产生分流,之后计算主表的要货数量就是一个子集的求和。
  • 相关阅读:
    @NotNull @NotBlank @NotEmpty
    springboot @valid与@validated的参数校验使用总结
    一张表多个外键指向同一主键
    关于List的remove()方法
    双数据源切换问题
    前端通过jqplot绘制折线图
    关于js与jquery中的文档加载
    Mybatis中typeAliases的使用
    项目中常见数据库知识
    html中实现倒计时功能(setInterval,clearInterval)
  • 原文地址:https://www.cnblogs.com/zc22/p/973403.html
Copyright © 2011-2022 走看看