您的位置:首页 > 产品设计 > UI/UE

Sequence Generator分析

2015-07-01 12:38 567 查看
Current Value:3   Increment By:2

则初始化 NEXTVAL:3    CURRVAL:3

当且仅当 NEXTVAL走一行时,CURRVAL才增加: NEXTVAL+Increment By

(如果NEXTVAL没有connect to downstream,则CURRVAL始终停留在3)

第一次运行workflow:

    row            NEXTVAL  CURRVAL

1                    3                  5                                (处理每一行时,都是先走NEXTVAL,然后再走CURRVAL=NEXTVAL+Increment By)

2                     5                 7

3                     7                 9

4                     9                 11

 

运行完workflow后,Integration Service把CURRVAL存入Repository Service数据库里面持久化。

 

下次运行workflow:   Current Value从Repository Service数据库里面取得持久化Value

     Current Value:11   Increment By:2

则初始化 NEXTVAL:11    CURRVAL:11

第二次运行workflow:

    row            NEXTVAL  CURRVAL

1                    11                 13

2                    13                 15

3                    15                 17

4                     17                 19

运行完workflow后,19被存入Repository Service数据库,供下次workflow运行时初始化Current Value。

 

mapping中的Current Value显示值不一定是数据库中的值,一定要取得最新的mapping (disconnect folder then open folder)

再更改Current Value并运行workflow,将新的更改保存到Repository Service中。

 

 

Sequence用来产生序列号用以作为主键栏位,可以重用;
只有两个输出端口:Nextval和Currval;
通过配置Start Value,End Value,Current Value 和 Cycle属性,可以让产生的Nextval在一个指定的范围内循环;
可以将Nextval端口连到多个Target上,这时是阻塞式的产生序列号的,可以保证多个Target得到不同的序列号,如果想要得到相同的序列号,可以将Nextval端口连到Target之前的一个共有的Transformation上;
如果只连出Currval,得到的是一个常量,并且一次阻塞只能获得一个值,所以为性能考量,一般都不连出这个端口,如果Nextval同时有连出,这时Currval =  Nextval + Increment By;
在没有配置Cycle属性时,如果序列号达到了End Value,会话会失败;
不重用的Sequence有Reset属性,启用以后,在每个会话结束时会将Current Value置为会话开始时的值,这个值是它产生的第一个值;
当Sequence配置成重用时,应该给Number of Cached Values 一个大于零的缓存值,这个值是主要为保证不出现重复数据而设置的.比如当设置为100,那么一个线程在从1开始在跑,则另外一个线程会从101开始.每次跑完都要补足100整数.

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Sequence Generator