Flow Map Type Support

updated: 3 March 2000.

 

Native flow types: String, String[], String[][], Record, Record[], RecordRef, RecordRef[], Object, Object[]

P9:2 = 9! / (9-2)! = 72.

Four points:

  1. An implicit map is drawn on the Developer Pipeline Editor and no FlowMap code is executed.
  2. An explicit map is drawn by hand on the Developer Pipeline Editor and a FlowMapCopy is generated.
  3. There will never to a name or structural transformation caused by an implicit map.
  4. There will always be a name or structual transformation cause by an explicit map.

To do:

Case Action Example Production
When names are the same and type/dimensions are the same perform an implicit map String s -> String s 1
String[] sl -> String[] sl 2
String[][] st -> String[][] st 3
Record r -> Record r 4
Record r -> RecordRef r 5
RecordRef rf -> RecordRef rf 6
RecordRef rf -> Record rf 7
Record[] rl -> Record[] rl 8
Record[] rl -> RecordRef[] rl 9
RecordRef[] rfl -> RecordRef[] rfl 10
RecordRef[] rfl -> Record[] rfl 11
Object[] ol -> Object[] ol 12
Object o -> Object o 13
When names are the same and type/dimensions are different, but mapping to looser type with the same dimension perform an implicit map String s -> Object s 14
String[] sl -> Object[] sl 15
Record r -> Object r 16
RecordRef rf -> Object rf 17
Record[] rl -> Object[] rl 18
RecordRef[] rfl -> Object[] rfl 19
String[][] st -> Object st 20* diff dim
String[][] st -> Object[] st 21* diff dim
When names are the same and type/dimensions are different, but mapping to same type and lower dimension explicit map possible String[] s -> String s 22
String[] s -> Object s 23
String[][] s -> String[] s 24
String[][] s -> String s 25
Record[] rl -> Record rl 26
Record[] rl -> RecordRef rl 27
RecordRef[] rfl -> Record rfl 28
RecordRef[] rfl -> RecordRef rfl 29
Object[] ol -> Object ol 30
When names are the same and type/dimensions are different, but mapping to different type and higher dimension explicit map possible String s -> Object[] s 31
When names are the same and type/dimensions are different, but mapping to same type and higher dimension

(if there is no destination value, then the destination is of dimension one.  If the destination is non-null each value gets overwritten with a copy of the source value.)

explicit map possible String s -> String s[] 32
String s -> String[][] s 33
String[] s -> String[][] s 34
Record rl -> Record[] rl 35
Record rl -> RecordRef[] rl 36
RecordRef rfl -> RecordRef[] rfl 37
RecordRef rfl -> Record[] rfl 38
Object ol -> Object[] ol 39
When names are the same and tigher type and same dimension no map possible Object s1 -> String s1 40
Object[] sl1 -> String[] sl1 41
Object r1 -> Record r1 42
Object r1 -> RecordRef r1 43
Object[] rl1 -> Record[] rl1 44
Object[] rfl1 -> RecordRef[] rfl1 45
Record[] s1 -> String[] s1 46
RecordRef[] s1 -> String[] s1 47
String[] s1 -> Record[] s1 48
String[] s1 -> RecordRef[] s1 49
String s1 -> Record s1 50
String s1 -> RecordRef s1 51
RecordRef s1 -> String s1 52
Record s1 -> String s1 53
When names are the same and tigher type and different dimension no map possible Object s1 -> String[] s1 54
Object[] s1 -> String s1 55
Object r1 -> Record[] r1 56
Object rf1 -> RecordRef[] rf1 57
Object[] rl1 -> Record rl1 58
Object[] rf1 -> RecordRef rf1 59
String s1 -> Record[] s1 60
String s1 -> RecordRef[] s1 61
String[][] st -> Record st 62
String[][] st -> RecordRef st 63
String[][] st -> Record[] st 64
String[][] st -> RecordRef[] st 65
Object st -> String[][] st 67
RecordRef st -> String[][] st 68
Record[] st -> String[][] st 69
RecordRef[] st -> String[][] st 70
Object[] st -> String[][] st 71
Object st -> String[][] st 72
When names are not the same and type/dimensions are the same explicit map possible String s -> String s1 1
String[] sl -> String[] sl1 2
String[][] st -> String[][] st1 3
Record r -> Record r1 4
Record r -> RecordRef r1 5
RecordRef rf -> RecordRef rf1 6
RecordRef rf -> Record rf1 7
Record[] rl -> Record[] rl1 8
Record[] rl -> RecordRef[] rl1 9
RecordRef[] rfl -> RecordRef[] rfl1 10
RecordRef[] rfl -> Record[] rfl1 11
Object[] ol -> Object[] ol1 12
Object o -> Object o1 13
When names are not the same and type/dimensions are different, but mapping to looser type with the same dimension explicit map possible String s -> Object s2 14
String[] sl -> Object[] sl2 15
Record r -> Object r2 16
RecordRef rf -> Object rf2 17
Record[] rl -> Object[] rl2 18
RecordRef[] rfl -> Object[] rfl2 19
String[][] st -> Object st2 20* diff dim
String[][] st -> Object[] st2 21* diff dim
When names are not the same and type/dimensions are different, but mapping to same type and lower dimension explicit map possible String[] s -> String s2 22
String[] s -> Object s2 23
String[][] s -> String[] s2 24
String[][] s -> String s2 25
Record[] rl -> Record rl2 26
Record[] rl -> RecordRef rl2 27
RecordRef[] rfl -> Record rfl2 28
RecordRef[] rfl -> RecordRef rfl2 29
Object[] ol -> Object ol2 30
When names are not the same and type/dimensions are different, but mapping to different type and higher dimension explicit map possible String s -> Object[] s2 31
When names are not the same and type/dimensions are different, but mapping to same type and higher dimension

(if there is no destination value, then the destination is of dimension one.  If the destination is non-null each value gets overwritten with a copy of the source value.)

explicit map possible String s -> String[] s2 32
String s -> String[][] s2 33
String[] s -> String[][] s2 34
Record rl -> Record[] rl2 35
Record rl -> RecordRef[] rl2 36
RecordRef rfl -> RecordRef[] rfl2 37
RecordRef rfl -> Record[] rfl2 38
Object ol -> Object[] ol2 39
When names are not the same and tigher type and same dimension no map possible Object s1 -> String s12 40
Object[] sl1 -> String[] sl12 41
Object r1 -> Record r12 42
Object r1 -> RecordRef r12 43
Object[] rl1 -> Record[] rl12 44
Object[] rfl1 -> RecordRef[] rfl12 45
Record[] s1 -> String[] s12 46
RecordRef[] s1 -> String[] s12 47
String[] s1 -> Record[] s12 48
String[] s1 -> RecordRef[] s12 49
String s1 -> Record s12 50
String s1 -> RecordRef s12 51
RecordRef s1 -> String s12 52
Record s1 -> String s12 53
When names are not the same and tigher type and different dimension no map possible Object s1 -> String[] s12 54
Object[] s1 -> String s12 55
Object r1 -> Record[] r12 56
Object rf1 -> RecordRef[] rf12 57
Object[] rl1 -> Record rl12 58
Object[] rf1 -> RecordRef rf12 59
String s1 -> Record[] s12 60
String s1 -> RecordRef[] s12 61
String[][] st -> Record st2 62
String[][] st -> RecordRef st2 63
String[][] st -> Record[] st2 64
String[][] st -> RecordRef[] st2 65
Object st -> String[][] st2 67
RecordRef st -> String[][] st2 68
Record[] st -> String[][] st2 69
RecordRef[] st -> String[][] st2 70
Object[] st -> String[][] st2 71
Object st -> String[][] st2 72
144

Notes: