- - PowerPoint PPT Presentation
- - PowerPoint PPT Presentation
!""#$%&'(")*%$+,-".*"/$/0,1/234#03)(0)3$, Structure of this Talk !"#$%&&'($)*+",-#+-.*#$ 5$/$34%,1/03"+)(6"/, !""-1,-".*"/$/0#,7,!82$(&(%$,
Structure of this Talk
!"#$%&&'($)*+",-#+-.*#$
5$/$34%,1/03"+)(6"/, !""-1,-".*"/$/0#,7,!82$(&(%$, !""-1,9:$/0,;)#,7,;8/+8/<#,
!"#$%&&'($/012$)3(45$
!""-1,=$*%"&.$/0,>?1, !""-1,@)/6.$,-"/03"%,>?1, !""-1,1/03"#*$(6"/,>?1,
3*&6*788,96$7$%&&'($'&8:&9#9-$
A Loosely-coupled Component Infrastructure
AB&,8#,80,<""+,0",C$,%""#$%&'(")*%$+D,
;7-+"$-"#$)<5-*7+=&9$>,-"$-"#$?9/,*&98#9-@$4#,AEF, 43$,8/B$3$/0%&,$:$/0'C4#$+G,H$,#B")%+,$/(")34<$,0B$, +$:$%"*$3,0",0B8/I,0B8#,H4&J, ;,9,8,A#$B/#*"#7C@$$%4&$38/<,4,6<B0%&'(")*%$+,#�$., "/,4/,)/3$%84C%$,/$0H"3I,$/048%#,#8</8K(4/0, 3$034/#.8##8"/,":$3B$4+J, D.::&*=96$EF978,+$G#+&9H6.*7=&9@$.48/048/8/<, #8.*%$G,%""#$%&'(")*%$+,C8/+8/<#,3$.":$#,0B$,/$$+,2"3, +8#038C)0$+,L)8$#($/($J,
,
A Loosely-coupled Component Infrastructure
M"H,8#,!""-1,%""#$%&'(")*%$+D,
E,5-*,<.-#C$?/#9-$I.5@$$:$/0'C4#$+,("..)/8(46"/,8/,4, +$($/034%8N$+,.4//$3J, )5F9+"*&9&.5$(9-#*7+=&95@,C$#0'$O"30,$:$/0,+$%8:$3&G, (".*"/$/0#,+",/"0,C%"(IG,HB8%$,H486/<,"/,P)/3$%84C%$Q, 3$."0$,8/0$34(6"/#J, D#:7*7=&9$<#->##9$'&8:&9#9-5$79C$-"#,*$I,9C,965@$ +$:$%"*$3#R(".*"/$/0#,+",/"0,I/"H,!"#,"3,$"%#!&$% 0B$83,(".*"/$/0,8#,C")/+J, ;.J=K8&C#J$I,9C,965@$")3,C8/+8/<,."+$%,8#,'(!)*)($+,%
- '.$*'/0$)-%4/+,4%%"H#,"/$'0"'"/$G,.4/&'0"'"/$,"3,
.4/&'0"'.4/&,3$%46"/#B8*#,4#,H$%%,4#,"**"30)/8#6(, 8/0$34(6"/#J,
The LooCI Architecture
@$("/K<)346"/, 9/<8/$,
- ".*"/$/0,
- ".*"/$/0,
- ".*"/$/0,
9:$/0,;)#, F$0H"3I,S34.$H"3I, T/+$3%&8/<,?%4U"3.,PE)/E?VWG,-"/6I8G,VE58G,XQ,
What is a LooCI Component?
- ".*"/$/0#Y,
>,!""-1,(".*"/$/0,,8#,4,+&7*5#$6*7,9#C,4/+,#$3:8($,%8I$, .9,-$&L$L.9+=&97J,-F,,0B40,.4&,C$,8.*%$.$/0$+,8/,4/&, %4/<)4<$J, 94(B,(".*"/$/0,(4338$#,0H",8+$/6K$3#Y,4,23$$2"3.!-F:#$ C#5+*,:=&9,4/+,4/,8/#04/($!(E,0B40,8#,)/8L)$,8/,0B$, ("/0$Z0,"2,0B$,B"#6/<,/"+$J,
- ".*"/$/0#,43$,3$<8#0$3$+,H80B,4,*$3'/"+$,
3$("/K<)346"/,$/<8/$G,HB8(B,*3":8+$#,C#:J&F8#9-M$ +&9-*&J,79C$,9-*&5:#+=&9$.$(B4/8#.#,0B40,43$, 4(($##8C%$,23".,0B$,<40$H4&,4/+,8/'/$0H"3IJ,
What is a LooCI Interface?
1/0$324($#Y,
>%%,!""-1,(".*"/$/0#,("..)/8(40$,$Z(%)#8:$%&, 0B3")<B,0B$,#N+"796#,"2,#04/+43+8N$+,#/#9-5, ":$3,$Z*%8(80%&,+$(%43$+,8/0$324($#J, 9:$/0#,034:$%,":$3,4/,$/63$%&,C#+#9-*7J,A#C$ :.<J,5"K5.<5+*,<#$+&88.9,+7=&9$8#C,.8,P0B$, $:$/0,C)#QJ, 1/0$34(6"/,0B3")<BY,
- (9-#*L7+#5$."+$%,0B$,*)C%8(46"/,"2,$:$/0#,0",0B$,
$:$/0,C)#J,
- G#+#:-7+J#5$."+$%,0B$,#)C#(38*6"/,0",$:$/0#,23".,
0B$,$:$/0,C)#J,
The Component Life-Cycle
1F>-W1[9, >-W1[9, +$*%"&PXQ, 4(6:40$PXQ, +$4(6:40$PXQ, 3$.":$-".*"/$/0PXQ, 1/,0B$,)'!(O?,#040$G,0B$,(".*"/$/0,,$Z$()0$#,/"3.4%%&G,#$/+8/<,$:$/0#,:84,80#, 8/0$324($#,4/+,3$($8:8/<,$:$/0#,:84,80#,3$($*04(%$#J, , 1/,0B$,(P)'!(O?,#040$G,0B$,$Z$()6"/,"2,4,(".*"/$/0,8#,B4%0$+,4/+,0B)#,80,H8%%,/$80B$3, #$/+,"3,3$($8:$,$:$/0#J,
The LooCI Event Bus
E#+#9-*7J,A#C,("..)/8(46"/,0B40,8#,+8#038C)0$+,4(3"##,4%%, #$/#"3,/"+$#J, 3.<J,5"K5.<5+*,<#,HB$3$8/,/"+$#,.4&,*)C%8#B,$:$/0#,0"Y,
WB$,HB"%$,/$0H"3I, >%%,(".*"/$/0#,"2,4,<8:$/,0&*$, >%%,8/0$324($#,"2,4,<8:$/'0&*$, >,#*$(8K(,/"+$J, >,)/8L)$,(".*"/$/0,8/0$324($J,
More Fine Grained
The LooCI Event Bus
P&9K<J&+Q,96@,4,(4%%,0",*)C%8#B,4/,$:$/0,3$0)3/#, 8..$+840$%&J, >,*$3'/"+$,3)/6.$,#0"3$#,I,9C,96,8/2"3.46"/,)#$+,0", +8#*40(B,$:$/0#Y,
S3".,J&+7J$(".*"/$/0#!0"$J&+7J$"3$*#8&-#,(".*"/$/0#J, S3".!*#8&-#,(".*"/$/0#$-&$J&+7J,(".*"/$/0#,
;8/+8/<#Y$R,9-#*L7+#M$+&8:&9#9-M$9&C#S$0"$
R*#+#:-7+J#M$+&8:&9#9-M$9&C#S$
9:$/0#Y,T#/#9-!F:#M$5&.*+#'&8:&9#9-(EM$:7FJ&7CU$
F"+$,\]^J\_`JaJ\, F"+$,\]^J\_`JaJ^,
LooCI Bindings
!""-1,C8/+8/<#,"#$%!#$&'()*+',!*$-!('+'.&*+"',,"2,P+8O$3$/0Q,(".*"/$/0#, #",0B40,$:$/0#,"2,4,($3048/!'/'$&!&0.',(4/,C$,$Z(B4/<$+J, !""-1,C8/+8/<#,.4&,C$,%"(4%,"3!-#,&(#12&'-,43624(0#J, ,, ,
!8<B0E$/#"3, bcd, !8<B0=8#*%4&, bed, !15MWf@9>=1F5, b\^ed, 3/'$&! 4,&5!67-'! \^e, \]^J\_`JaJ^, 4',&5!879.5! e, E)C#(38*6"/,W4C%$, E)C#(38*6"/,W4C%$, :(+5879.! c, 3/'$&! :(+5!67-'! \^e, \]^J\_`JaJ\, :(+58795! c,
One-to-One Bindings
>,"/$'0"'"/$,C8/+8/<,%8/I#,4,#8/<%$,8/0$324($G,"2,4,)/8L)$,(".*"/$/0, 8/#04/($,3)//8/<,"/,4,#*$(8K(,/"+$,4++3$##,0",4/,$L)4%%&,)/8L)$, 3$($*04(%$J, ,, , S"3,$Z4.*%$,4,+$:$%"*$3,.4&,("//$(0,0B$,!15MWf@9>=1F5,8/0$324($,"2, 0B$,!8<B0E$/#"3,(".*"/$/0,3)//8/<,"/,/"+$,\]^J\_`JaJ\,0",0B$, !15MWf@9>=1F5,3$($*04(%$,"2,0B$,!8<B0=8#*%4&,(".*"/$/0,3)//8/<,"/, /"+$,\]^J\_`JaJ^J,
FV=9Y,\]^J\_`JaJ\, !8<B0E$/#"3, FV=9Y,\]^J\_`JaJ^, !8<B0=8#*%4&, !15MWf@9>=1F5,
Multi-Party Bindings
>,9*$0;&7;7$',%8/I#,.)%6*%$,(".*"/$/0,8/0$324($#,0",4,#8/<%$, 3$($*04(%$J, , ,
FV=9Y,\]^J\_`JaJ\, !8<B0E$/#"3, FV=9Y,\]^J\_`JaJ^, !8<B0=8#*%4&, !15MWf@9>=1F5, FV=9Y,\]^J\_`JaJc, !8<B0E$/#"3,
Multi-Party Bindings
>,7$';&7;9*$0,C8/+8/<,%8/I#,4,(".*"/$/0,8/0$324($#,0",.)%6*%$, 3$($*04(%$#J, , ,
FV=9Y,\]^J\_`JaJ\, !8<B0=8#*%4&, FV=9Y,\]^J\_`JaJ^, !8<B0E$/#"3, FV=9Y,\]^J\_`JaJc, !8<B0=8#*%4&, !15MWf@9>=1F5,
Use of Wildcards
P&C#$)CC*#55#5@$
T#$,"2,0B$,/"+$,4++3$##,H8%+'(43+,+$/"0$#,4%%,/"+$#,0B40,43$,8/, 34/<$J, AB$/,)#$+,8/,4,H83$S3".PXQ,,.$0B"+G,0B8#,3$#)%0#,8/,0B$,043<$0, 3$($*04(%$,3$($8:8/<,$:$/0#,23".,4/&,%"(46"/,0B40,#$/+#,0B$.J, AB$/,)#$+,8/,4,H83$W"PXQ,,.$0B"+G,0B8#,3$#)%0#,8/,0B$,043<$0,, 8/0$324($,$:$/0#,0",4%%,/"+$#,H80B8/,34/<$J,
'&8:&9#9-$(E5@$
T#$,"2,0B$,(".*"/$/0,1=,H8%+'(43+,+$/"0$#,4/&,(".*"/$/0J, AB$/,)#$+,8/,4,H83$S3".PXQ,.$0B"+G,0B8#,3$#)%0#,,8/,0B$,043<$0, 3$($*04(%$,3$($8:8/<,$:$/0#,23".,4/&,(".*"/$/0,0B40,#$/+#,0B$.J,,
A8%+(43+#,(4/,C$,(".C8/$+G,4%%"H8/<,:$3&,#*$(8K(G,"3,:$3&, C3"4+,C8/+8/<#,0",C$,(3$40$+J,
Opportunistic Interactions
1/,0B$,#04/+43+8N$+,."+$%G,/",(".*"/$/0#,43$,8.*%8(80%&,C")/+G, B"H$:$3G,,80,8#,#6%%,*"##8C%$,0",(3$40$,(".*"/$/0#,0B40,8/0$34(0, "**"30)/8#6(4%%&J, S"3,9Z4.*%$Y,("/#8+$3,4,."C8%$,#($/438"G,HB$3$,0B$,!8<B0E$/#"3, (".*"/$/0,#B")%+,034/#.80,0",4/&,!8<B0=8#*%4&,H80B8/,34/<$G,0B$, 2"%%"H8/<,#0$*#,H")%+,C$,04I$/Y,
WB$,+$:$%"*$3,H")%+,K3#0,(4%%,0B$,H83$S3".>%%,.$0B"+,"/,0B$,/"+$, B"#6/<,0B$,!8<B0=8#*%4&,)#8/<,0B$,/"+$,4++3$##,H8%+(43+J, WB$,+$:$%"*$3,H")%+,0B$/,(4%%,0B$,H83$W">%%,.$0B"+,"/,0B$,/"+$, B"#6/<,0B$,!8<B0E$/#"3,)#8/<,0B$,/"+$,4++3$##,H8%+(43+J, >g$3,0B$#$,"*$346"/#G,HB$/$:$3,0B$,/"+$#,(".$,H80B8/,34/<$G,0B$&, H8%%,8/0$34(0J,
Structure of this Talk
!"#$%&&'($)*+",-#+-.*#$
5$/$34%,1/03"+)(6"/, !""-1,-".*"/$/0#,7,!82$(&(%$, !""-1,9:$/0,;)#,7,;8/+8/<#,
!"#$%&&'($/012$)3(45$
!""-1,=$*%"&.$/0,>?1, !""-1,@)/6.$,-"/03"%,>?1, !""-1,1/03"#*$(6"/,>?1,
3*&6*788,96$7$%&&'($'&8:&9#9-$
LooCI v1.0 APIs
%&&'($E#:J&F8#9-$)3( ,P"/%&,4:48%4C%$,23".,<40$H4&Q, %&&'($G.9=8#$'&9-*&J$)3( ,P4:48%4C%$,"/,<40$H4&,4/+,/"+$#Q, %&&'($(9-*&5:#+=&9$)3( ,P4:48%4C%$,"/,<40$H4&,4/+,/"+$#Q,
LooCI Deployment API
! ! ! ! ! ,,
P&-#@$E#:J&F8#9-$&*$G#8&/7J$87F$&9JF$<#$#97+-#C$L*&8$-"#$67-#>7F1$
$
<+=7$! >*(*9'&'(,! ?'&2($!/*"2'!
- '."70!
#038/<,(".*"/$/0S8%$G, #038/<,/"+$1=, C&0$,(".*"/$/01=, ('97/'879.7$'$&! C&0$,(".*"/$/01=G,#038/<, /"+$1=, C""%$4/,3$#)%0,
LooCI Control API (1/2)
! ! ! ! ! ,,
<+=7$! >*(*9'&'(,! ?'&2($!/*"2'!
*+=/*&'! C&0$,(".*"/$/01=G,#038/<, /"+$1=, C""%$4/,3$#)%0,
- '*+=/*&'!
C&0$,(".*"/$/01=G,#038/<, /"+$1=, C""%$4/,3$#)%0, @#('A7! C&0$,8/0$324($9:$/0G, C&0$,#")3($-".*"/$/01=, #038/<,#")3($F"+$1=G, #038/<,+$#0F"+$1=, C""%$4/,3$#)%0, @#('B(79! C&0$,8/0$324($9:$/0G, C&0$,#")3($-".*"/$/01=, #038/<,#")3($F"+$1=G, C&0$,3$($*04(%$9:$/0G, C&0$,+$#0-".*"/$/01=G, #038/<,+$#0F"+$1=, C""%$4/,3$#)%0,
LooCI Control API (2/2)
! ! ! ! ! ,,
<+=7$! >*(*9'&'(,! ?'&2($!/*"2'!
@#('A7<""! C&0$,8/0$324($9:$/0G, C&0$,#")3($-".*"/$/01=G, #038/<,#")3($F"+$1=, C""%$4/,3$#)%0, @#('B(79<""! C&0$,8/0$324($9:$/0G, C&0$,3$($*04(%$9:$/0G, C&0$,+$#0-".*"/$/01=G, #038/<,+$#0F"+$1=, C""%$4/,3$#)%0, @#('C7+*"! C&0$,8/0$324($9:$/0G, C&0$,#")3($-".*"/$/01=, C&0$,3$($*04(%$9:$/0G, #038/<,+$#0-".*"/$/01=G, #038/<,/"+$1=, C""%$4/,3$#)%0, (','&D#(#$E,! C&0$,(".*"/$/01=, #038/<,/"+$1=, C""%$4/,3$#)%0,
LooCI Introspection API (1/3)
>0,/"+$,%$:$%Y, ! ! ! ! ,,
<+=7$! >*(*9'&'(,! ?'&2($!/*"2'!
E'&879.7$'$&F4,! #038/<,/"+$1=, C&0$bd,(".*"/$/01=#, E'&879.7$'$&F4,G)A0.'! #038/<,(".*"/$/0W&*$G, #038/<,/"+$1=, C&0$bd,(".*"/$/01=#,
LooCI Introspection API (2/3)
>0,(".*"/$/0,%$:$%Y, , , , , ,,
<+=7$! >*(*9'&'(,! ?'&2($!/*"2'!
E'&879.7$'$&A0.'! C&0$,(".*"/$/01=G, #038/<,/"+$1=, #038/<,(".*"/$/0W&*$, E'&:&*&'! C&0$,(".*"/$/01=, #038/<,/"+$1=, C&0$,#040$, E'&F$&'()*+',! C&0$,(".*"/$/01=G, #038/<,/"+$1=, C&0$bd,$:$/0W&*$, E'&?'+'.&*+"',! C&0$,(".*"/$/01=G, #038/<,/"+$1=, C&0$bd,$:$/0W&*$,
LooCI Introspection API (3/3)
>0,H83$,%$:$%Y, , , , , ,,
<+=7$! >*(*9'&'(,! ?'&2($!/*"2'!
E'&G2&E7#$E?'97&'D#(',! C&0$,8/0$324($9:$/0G, C&0$,(".*"/$/01=G, #038/<,/"+$1=, #038/<bd,/"+$1=#, E'&F$+79#$E?'97&'D#(',! C&0$,3$($*04(%$9:$/0G, C&0$,(".*"/$/01=G, #038/<,/"+$1=, h#038/<,/"+$1=G,C&0$, (".*"/$/01=ibd,, E'&C7+*"D#(',! C&0$,8/0$324($9:$/0G,C&0$, #")3($-".*"/$/01=G,E038/<, /"+$1=, C&0$bd,(".*"/$/01=#,
Structure of this Talk
!"#$%&&'($)*+",-#+-.*#$
5$/$34%,1/03"+)(6"/, !""-1,-".*"/$/0#,7,!82$(&(%$, !""-1,9:$/0,;)#,7,;8/+8/<#,
!"#$%&&'($/012$)3(45$
!""-1,=$*%"&.$/0,>?1, !""-1,@)/6.$,-"/03"%,>?1, !""-1,1/03"#*$(6"/,>?1,
3*&6*788,96$7$%&&'($'&8:&9#9-$
Programming LooCI/SPOT (1/2)
public class TempFilter extends LooCIComponent { private final int TEMP_THRESHOLD = 20; public TempFilter() { super("TempFilter", // component type new byte[]{EventTypes.TEMP_READING}, // interfaces new byte[]{EventTypes.TEMP_READING}); // receptacles } protected void start() { } protected void stop() { } public void receive(Event event) { ... } }
Programming LooCI/SPOT (2/2)
public class TempFilter extends LooCIComponent { private final int TEMP_THRESHOLD = 20; ... public void receive(Event event) { if (event.getType() == EventTypes.TEMP_READING) { PayloadBuilder payload = new PayloadBuilder(event.getPayload()); int reading = payload.getIntegerAt(0); if (reading > TEMP_THRESHOLD) { payload = new PayloadBuilder(); payload.addInteger(reading); publish(new Event(EventTypes.TEMP_READING, getComponentID(), payload.getPayload())); } } } }
References
WB$,"38<8/4%,!""-1,*4*$3Y,j!""-1Y,>,!""#$%&'(")*%$+,
- ".*"/$/0,1/234#03)(0)3$,2"3,F$0H"3I$+,9.C$++$+,