#425430394/0%:947,
Testo completo
(2) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(3) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 7XWRULDO2EMHFWLYHV $JXLGHGWRXURIWKH&25%$&RPSRQHQW0RGHO +RZWRGHVLJQLPSOHPHQWSDFNDJHGHSOR\H[HFXWH DQGXVH&25%$FRPSRQHQWV 3XWWLQJWKH&&0WRZRUN . ,OOXVWUDWHGZLWKDFRQFUHWHH[DPSOH :HOONQRZQ'LQLQJ3KLORVRSKHUV 'HPRQVWUDWHGRQYDULRXV2625%&&0SODWIRUPVDQG SURJUDPPLQJODQJXDJHV &-DYD20*,'/VFULSW
(4) . 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . $JHQGD :KDWLVWKH&25%$&RPSRQHQW0RGHO" 'HILQLQJ&25%$FRPSRQHQWV 3URJUDPPLQJ&25%$FRPSRQHQWFOLHQWV ,PSOHPHQWLQJ&25%$FRPSRQHQWV 3XWWLQJ&25%$FRQWDLQHUVWRZRUN 3DFNDJLQJ&25%$FRPSRQHQWV 'HSOR\LQJ&25%$FRPSRQHQWDSSOLFDWLRQV 6XPPDU\ 7XHVGD\ -XQH WK . F
(5) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(6) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. :KDWLVWKH &25%$&RPSRQHQW0RGHO". )URP&25%$[WRWKH&&0 &RPSDULVRQZLWK(-%&20DQG1(7 &&07HFKQRORJLHV 7\SLFDO8VH&DVH 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . :K\6RIWZDUH&RPSRQHQWV" 7LPHWRPDUNHW. ,PSURYHGDSSOLFDWLRQSURGXFWLYLW\ 5HGXFHGFRPSOH[LW\ 5HXVHRIH[LVWLQJFRGH . 3URJUDPPLQJE\DVVHPEO\ PDQXIDFWXULQJ
(7) UDWKHU. WKDQGHYHORSPHQW HQJLQHHULQJ
(8). 5HGXFHGVNLOOVUHTXLUHPHQWV )RFXVH[SHUWLVHRQGRPDLQSUREOHPV ,PSURYLQJVRIWZDUHTXDOLW\ . .H\EHQHILWZLWKFOLHQWVLGH VHUYHUVLGH. GHYHORSPHQW. 7XHVGD\ -XQH WK . F
(9) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(10) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. )URP&25%$ $GLVWULEXWHGREMHFWRULHQWHGPRGHO +HWHURJHQHLW\ 20* ,QWHUIDFH 'HILQLWLRQ /DQJXDJH 20* ,'/
(11) 3RUWDELOLW\ 6WDQGDUGL]HG ODQJXDJH PDSSLQJV ,QWHURSHUDELOLW\ *,23 ,,23 9DULRXV LQYRFDWLRQ PRGHOV 6,, ',, DQG $0, 0LGGOHZDUH 25% 32$ HWF PLQLPXP UHDOWLPH DQG IDXOWWROHUDQFH SURILOHV. 1RVWDQGDUGSDFNDJLQJDQGGHSOR\PHQWIDFLOLWLHV ([SOLFLWSURJUDPPLQJRIQRQIXQFWLRQDOSURSHUWLHV OLIHF\FOH GH
(12) DFWLYDWLRQ QDPLQJ WUDGLQJ QRWLILFDWLRQ SHUVLVWHQFH WUDQVDFWLRQV VHFXULW\ UHDOWLPH IDXOWWROHUDQFH . 1RYLVLRQRIVRIWZDUHDUFKLWHFWXUH 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . WRWKH&25%$&RPSRQHQW0RGHO $GLVWULEXWHGFRPSRQHQWRULHQWHGPRGHO $Q DUFKLWHFWXUH IRU GHILQLQJ FRPSRQHQWV DQG WKHLU LQWHUDFWLRQV )URP FOLHQWVLGH *8,
(13) WR VHUYHUVLGH EXVLQHVV
(14) FRPSRQHQWV. $ SDFNDJLQJ WHFKQRORJ\ IRU GHSOR\LQJ ELQDU\ PXOWLOLQJXDO H[HFXWDEOHV. $ FRQWDLQHU IUDPHZRUN IRU LQMHFWLQJ OLIHF\FOH GH
(15) DFWLYDWLRQ VHFXULW\ WUDQVDFWLRQV SHUVLVWHQFH DQG HYHQWV. ,QWHURSHUDELOLW\ ZLWK (QWHUSULVH -DYD %HDQV (-%
(16). 7KH,QGXVWU\¶V)LUVW0XOWL/DQJXDJH&RPSRQHQW6WDQGDUG 0XOWLODQJXDJHV PXOWL26V PXOWL25%V PXOWLYHQGRUV HWF 9HUVXV WKH -DYDFHQWULF (-% FRPSRQHQW PRGHO 9HUVXV WKH 06FHQWULF 1(7 FRPSRQHQW PRGHO. 7XHVGD\ -XQH WK . F
(17) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(18) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &&0&RPSDUHGWR(-%&20DQG1(7 /LNH6810LFURV\VWHPV¶V(QWHUSULVH-DYD%HDQV (-%
(19) &25%$ FRPSRQHQWV FUHDWHG DQG PDQDJHG E\ KRPHV 5XQ LQ FRQWDLQHUV PDQDJLQJ V\VWHP VHUYLFHV WUDQVSDUHQWO\ +RVWHG E\ DSSOLFDWLRQ FRPSRQHQW VHUYHUV. /LNH0LFURVRIW¶V&RPSRQHQW2EMHFW0RGHO &20
(20) +DYH VHYHUDO LQSXW DQG RXWSXW LQWHUIDFHV . %RWK V\QFKURQRXV RSHUDWLRQV DQG DV\QFKURQRXV HYHQWV. 1DYLJDWLRQ DQG LQWURVSHFWLRQ FDSDELOLWLHV. /LNH0LFURVRIW¶V1(7)UDPHZRUN &RXOG EH ZULWWHQ LQ GLIIHUHQW SURJUDPPLQJ ODQJXDJHV &RXOG EH SDFNDJHG LQ RUGHU WR EH GLVWULEXWHG. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . %XWZLWK&&0 $&&0DSSOLFDWLRQLV³UHDOO\´GLVWULEXWHG . &RXOGEHGHSOR\HGDQGUXQRQVHYHUDOGLVWULEXWHG QRGHVVLPXOWDQHRXVO\. $&25%$FRPSRQHQWFRXOGEH VHJPHQWHGLQWR. VHYHUDOFODVVHV. 7XHVGD\ -XQH WK . F
(21) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(22) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. :KDWLVWKH&&06SHFLILFDWLRQ" $EVWUDFW&RPSRQHQW0RGHO . ([WHQVLRQVWR,'/DQGWKHREMHFWPRGHO. &RPSRQHQW,PSOHPHQWDWLRQ)UDPHZRUN . &RPSRQHQW,PSOHPHQWDWLRQ'HILQLWLRQ/DQJXDJH &,'/
(23). &RPSRQHQW&RQWDLQHU3URJUDPPLQJ0RGHO &RPSRQHQWLPSOHPHQWHUDQGFOLHQWYLHZ ,QWHJUDWLRQZLWK6HFXULW\3HUVLVWHQFH7UDQVDFWLRQVDQG (YHQWV . 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . :KDWLVWKH&&06SHFLILFDWLRQ" 3DFNDJLQJDQGGHSOR\PHQWIDFLOLWLHV ,QWHURSHUDELOLW\ZLWK(-% &RPSRQHQW0HWDGDWD 0HWDPRGHO . ,QWHUIDFH5HSRVLWRU\DQG02)H[WHQVLRQV. 7XHVGD\ -XQH WK . F
(24) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(25) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 5HODWLRQVEHWZHHQ 20*'HILQLWLRQ/DQJXDJHV 20*,'/[. 20* ,'/ [. 2EMHFWRULHQWHG FROODERUDWLRQ. H[WHQGV. LH GDWD W\SHV LQWHUIDFHV DQG YDOXH W\SHV. 20*,'/ &RPSRQHQWRULHQWHG FROODERUDWLRQ. H[WHQGV. LH FRPSRQHQW W\SHV KRPHV DQG HYHQW W\SHV. . 20*36'/ 3HUVLVWHQW VWDWH GHILQLWLRQ. 20*. LH >DEVWUDFW@ VWRUDJH W\SHV DQG KRPHV. 36'/. 20*&,'/. 20* ,'/. H[WHQGV. H[WHQGV. &RPSRQHQW LPSOHPHQWDWLRQ GHVFULSWLRQ. 20*. LH FRPSRVLWLRQV DQG VHJPHQWV. &,'/. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &&08VHU5ROHV &RPSRQHQWGHVLJQHUV &RPSRQHQWFOLHQWV &RPSRVLWLRQGHVLJQHUV. aFRPSRQHQWLPSOHPHQWDWLRQGHVLJQHUV
(26). &RPSRQHQWLPSOHPHQWHUV &RPSRQHQWSDFNDJHUV &RPSRQHQWGHSOR\HUV &RPSRQHQWHQGXVHUV 7XHVGD\ -XQH WK . F
(27) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(28) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &RPSRQHQW'HVLJQHUV 'HILQHFRPSRQHQWDQGKRPHW\SHVYLD. 20*,'/H[WHQVLRQV. 2XWSXW 20*,'/ILOHV &OLHQWVLGH20*,'/PDSSLQJ &OLHQWVLGHVWXEV ,QWHUIDFH5HSRVLWRU\HQWULHV . 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &RPSRQHQW&OLHQWV &&0GHVLJQHGIRU&25%$FRPSOLDQFH . &RPSRQHQWFOLHQWVFRXOGUXQRQ³OHJDF\´25%V. 9LHZFRPSRQHQWVDQGKRPHVYLDWKH. FOLHQWVLGH20*,'/PDSSLQJ. 8VHFOLHQWVLGHVWXEV &RXOGQDYLJDWHDQGLQWURVSHFWFRPSRQHQWVYLDWKH. JHQHULFCCMObject DQGCCMHome LQWHUIDFHV. 7XHVGD\ -XQH WK . F
(29) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(30) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &RPSRVLWLRQ'HVLJQHUV 6SHFLI\SODWIRUPDQGODQJXDJHLQGHSHQGHQW. IHDWXUHVUHTXLUHGWRIDFLOLWDWHFRGHJHQHUDWLRQ &RPSRQHQW,PSOHPHQWDWLRQ'HILQLWLRQ/DQJXDJH &,'/
(31) 3HUVLVWHQFH6WDWH'HILQLWLRQ/DQJXDJH 36'/
(32) . 2XWSXW /RFDOVHUYHUVLGH20*,'/PDSSLQJ &RPSRQHQWVNHOHWRQV &RPSRQHQWPHWDGDWDDV;0/GHVFULSWRUV . 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &RPSRQHQW,PSOHPHQWHUV ,PSOHPHQWEXVLQHVVORJLFRSHUDWLRQV 'HILQHGE\ORFDOVHUYHUVLGH20*,'/LQWHUIDFHV &RXOGLQKHULWIURPJHQHUDWHG&,'/VNHOHWRQV &RXOGLPSOHPHQWORFDOFRQWDLQHUFDOOEDFNLQWHUIDFHV &RXOGLQYRNHORFDOFRQWDLQHULQWHUIDFHV . 2XWSXW &RPSRQHQWELQDULHV ;0/FRPSRQHQWGHVFULSWRUVHQULFKHG . 7XHVGD\ -XQH WK . F
(33) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(34) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. )URP&25%$&RPSRQHQW'HVLJQ WR3DFNDJLQJ 20* ,'/ 36'/ &,'/. &RPSRQHQW 'HVLJQHU. /RFDO VHUYHUVLGH 20* ,'/. 20* ,'/ 36'/ &,'/ &RPSLOHU. &OLHQWVLGH 20* ,'/. LPSOHPHQWV. ;0/ &RPSRQHQW 'HVFULSWRU. GHVFULEHV. %LQDU\ &RPSRQHQW &RPSRQHQW 3DFNDJHU. &RPSRQHQW &OLHQW 7XHVGD\ -XQH WK . &RPSRQHQW ,PSOHPHQWHU. 3URJUDPPLQJ /DQJXDJH 7RROV. 6WXEV 6NHOHWRQV. UHIHUV WR. &RPSRQHQW ([HFXWRU &RGH. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &RPSRQHQW3DFNDJHUV 3URGXFHFRPSRQHQWSDFNDJHVFRQWDLQLQJ &RPSRQHQWELQDULHV 6RIWZDUH FRPSRQHQW;0/GHVFULSWRUV 'HIDXOWSURSHUW\;0/GHVFULSWRUV 3UREDEO\GRQHXVLQJDQLQWHUDFWLYHYLVXDOWRRO . 2XWSXW FRPSRQHQWDUFKLYHILOH ]LSILOH
(35) ,I³QRIXUWKHUDVVHPEO\UHTXLUHG´VNLSWR. GHSOR\PHQW. 7XHVGD\ -XQH WK . F
(36) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(37) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &RPSRQHQW$VVHPEOHUV 3URGXFHDVVHPEO\SDFNDJHVFRQWDLQLQJ &XVWRPL]HGFRPSRQHQWSDFNDJHV $VVHPEO\;0/GHVFULSWRUV . &RPSRQHQW LQVWDQFHV DQG LQWHUFRQQHFWLRQV /RJLFDO GLVWULEXWLRQ SDUWLWLRQLQJ. . 3UREDEO\GRQHXVLQJDQLQWHUDFWLYHYLVXDOWRRO. 2XWSXW FRPSRQHQWDVVHPEO\DUFKLYHILOH 3URFHVVPD\EHLWHUDWHGIXUWKHU 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &RPSRQHQW'HSOR\HUV 'HSOR\PHQWLQVWDOODWLRQWRROWDNHVGHSOR\HU LQSXW. FRPSRQHQWDQGDVVHPEO\DUFKLYHV. $WWDFKYLUWXDOFRPSRQHQWORFDWLRQVWRSK\VLFDO. QRGHV. 6WDUWWKHGHSOR\PHQWSURFHVV . ,QVWDOOVFRPSRQHQWVDQGDVVHPEOLHVWRSDUWLFXODUQRGHV RQWKHQHWZRUN. 2XWSXW LQVWDQWLDWHGDQGFRQILJXUHGFRPSRQHQWV. DQGDVVHPEOLHVQRZDYDLODEOH . &&0DSSOLFDWLRQVGHSOR\HGLQ&&0FRQWDLQHUV. 7XHVGD\ -XQH WK . F
(38) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(39) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 7KH&&0%LJ3LFWXUH LPSOHPHQWHU. GHVLJQHUV. IDL/CIDL File User's Code. Programming Language Tools. Home Properties Component Properties. IDL/CIDL Default Properties Compiler Stubs, Skeletons Implementation. CORBA Component Package. Packaging Tool. CORBA Component. Assembly Tool. Package. Component Descriptor. SDFNDJHU softpkg Descriptor. User written file Compiler Generated files 7XHVGD\ -XQH WK . Component Assembly Package. DVVHPEOHU CORBA Component Package. Assembly Descriptor. Deployment Tool GHSOR\HU. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 1H[W7XWRULDO6WHSV 'HILQLQJ&25%$FRPSRQHQWW\SHV $EVWUDFW &RPSRQHQW 0RGHO DQG 20* ,'/ H[WHQVLRQV. 3URJUDPPLQJ&25%$FRPSRQHQWFOLHQWV &OLHQWVLGH 20* ,'/ PDSSLQJ. ,PSOHPHQWLQJ&25%$FRPSRQHQWV &RPSRQHQW ,PSOHPHQWDWLRQ )UDPHZRUN &,)
(40) /RFDO VHUYHUVLGH 20* ,'/ PDSSLQJ &RPSRQHQW ,PSOHPHQWDWLRQ 'HILQLWLRQ /DQJXDJH &,'/
(41). 3XWWLQJ&25%$FRQWDLQHUVWRZRUN 3DFNDJLQJ&25%$FRPSRQHQWV $VVRFLDWHG ;0/ '7'V. 'HSOR\LQJ&25%$FRPSRQHQWDSSOLFDWLRQV &RPSRQHQW GHSOR\PHQW REMHFWV DQG ³EDVLF´ SURFHVV 7XHVGD\ -XQH WK . F
(42) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(43) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 'HILQLQJ&25%$&RPSRQHQWV. 7KH$EVWUDFW&RPSRQHQW0RGHO 20*,'/([WHQVLRQV 7KH'LQLQJ3KLORVRSKHUV([DPSOH. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 7KH$EVWUDFW&RPSRQHQW0RGHO $OORZVFRPSRQHQWGHVLJQHUVWRFDSWXUHKRZ&25%$. FRPSRQHQWVDUHYLHZHGE\RWKHUFRPSRQHQWVDQGFOLHQWV :KDW D FRPSRQHQW RIIHUV WR RWKHU FRPSRQHQWV :KDW D FRPSRQHQW UHTXLUHV IURP RWKHU FRPSRQHQWV :KDW FROODERUDWLRQ PRGHV DUH XVHG EHWZHHQ FRPSRQHQWV . 6\QFKURQRXV YLD RSHUDWLRQ LQYRFDWLRQ $V\QFKURQRXV YLD HYHQW QRWLILFDWLRQ. :KLFK FRPSRQHQW. SURSHUWLHV DUH FRQILJXUDEOH. :KDW WKH EXVLQHVV OLIH F\FOH RSHUDWLRQV DUH LH. KRPH
(44). ([SUHVVHGYLD20*,'/H[WHQVLRQV 6\QWDFWLF FRQVWUXFWLRQ IRU ZHOO NQRZQ GHVLJQ SDWWHUQV 0DSSHG WR 20* ,'/ LQWHUIDFHV IRU FOLHQWV DQG LPSOHPHQWHUV 7XHVGD\ -XQH WK . F
(45) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(46) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. :KDWLVD&25%$&RPSRQHQW" component LVDQHZ&25%$PHWD W\SH ([WHQVLRQRIObject ZLWKVRPHFRQVWUDLQWV
(47) +DVDQLQWHUIDFHDQGDQREMHFWUHIHUHQFH $OVRDVW\OL]HGXVHRI&25%$LQWHUIDFHVREMHFWV . 3URYLGHVFRPSRQHQWIHDWXUHV DOVRQDPHG SRUWV
(48) &RXOGLQKHULWIURPDVLQJOHFRPSRQHQWW\SH &RXOG supports PXOWLSOHLQWHUIDFHV (DFKFRPSRQHQWLQVWDQFHLVFUHDWHGDQG. PDQDJHGE\DXQLTXHFRPSRQHQWKRPH. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &RPSRQHQW)HDWXUHV $WWULEXWHV. FRQILJXUDEOHSURSHUWLHV. )DFHWV. RIIHUHGRSHUDWLRQLQWHUIDFHV. 5HFHSWDFOHV. UHTXLUHGRSHUDWLRQLQWHUIDFHV. (YHQWVRXUFHV SURGXFHGHYHQWV (YHQWVLQNV. FRQVXPHGHYHQWV. 1DYLJDWLRQDQGLQWURVSHFWLRQVXSSRUWHG 7XHVGD\ -XQH WK . F
(49) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(50) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. $&25%$&RPSRQHQW Component interface. OFFERED. Receptacles My Business Component. Event sinks. Event sources. REQUIRED. Facets. Attributes 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . %XLOGLQJ&&0$SSOLFDWLRQV $VVHPEOLQJ&25%$&RPSRQHQW,QVWDQFHV. 7XHVGD\ -XQH WK . F
(51) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(52) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &RPSRQHQW$WWULEXWHV 1DPHGFRQILJXUDEOHSURSHUWLHV. 9LWDONH\IRUVXFFHVVIXOUHXVDELOLW\ ,QWHQGHGIRUFRPSRQHQWFRQILJXUDWLRQ . HJ RSWLRQDO EHKDYLRUV PRGDOLW\ UHVRXUFH KLQWV HWF. &RXOGUDLVHH[FHSWLRQV ([SRVHGWKURXJKDFFHVVRUV DQGPXWDWRUV . &RXOGEHFRQILJXUHG. %\YLVXDOSURSHUW\VKHHWPHFKDQLVPVLQDVVHPEO\RU GHSOR\PHQWHQYLURQPHQWV %\KRPHVRUGXULQJLPSOHPHQWDWLRQLQLWLDOL]DWLRQ 3RWHQWLDOO\UHDGRQO\ WKHUHDIWHU . 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &RPSRQHQW)DFHWV 'LVWLQFWQDPHGLQWHUIDFHVWKDWSURYLGHWKH. FRPSRQHQW¶VDSSOLFDWLRQIXQFWLRQDOLW\WRFOLHQWV. (DFKIDFHWHPERGLHVDYLHZRIWKHFRPSRQHQW. FRUUHVSRQGVWRDUROHLQZKLFKDFOLHQWPD\DFW UHODWLYHO\WRWKHFRPSRQHQW. $IDFHWUHSUHVHQWVWKHFRPSRQHQWLWVHOIQRWD. VHSDUDWHWKLQJFRQWDLQHGE\WKHFRPSRQHQW. )DFHWVKDYHLQGHSHQGHQWREMHFWUHIHUHQFHV. 7XHVGD\ -XQH WK . F
(53) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(54) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &RPSRQHQW5HFHSWDFOHV 'LVWLQFWQDPHGFRQQHFWLRQSRLQWVIRUSRWHQWLDO. FRQQHFWLYLW\. $ELOLW\WRVSHFLDOL]HE\GHOHJDWLRQFRPSRVHIXQFWLRQV 7KHERWWRPRIWKH/HJRLI\RXZLOO . 6WRUHDVLPSOHUHIHUHQFHRUPXOWLSOHUHIHUHQFHV . %XWQRWLQWHQGHGDVDUHODWLRQVKLSVHUYLFH. &RQILJXUDWLRQ. 6WDWLFDOO\GXULQJLQLWLDOL]DWLRQVWDJHRUDVVHPEO\VWDJH '\QDPLFDOO\PDQDJHGDWUXQWLPHWRRIIHULQWHUDFWLRQV ZLWKFOLHQWVRURWKHUFRPSRQHQWV HJFDOOEDFN
(55) . 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &RPSRQHQW(YHQWV 6LPSOHSXEOLVKVXEVFULEHHYHQWPRGHO ³SXVK´PRGHRQO\ 6RXUFHV NLQGV
(56) DQGVLQNV . (YHQWVDUHYDOXHW\SHV 'HILQHGZLWKWKHQHZeventtype PHWDW\SH valuetype VSHFLDOL]DWLRQIRUFRPSRQHQWHYHQWV . 7XHVGD\ -XQH WK . F
(57) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(58) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &RPSRQHQW(YHQW6RXUFHV 1DPHGFRQQHFWLRQSRLQWVIRUHYHQWSURGXFWLRQ . 3XVKDVSHFLILHGeventtype. 7ZRNLQGV3XEOLVKHU (PLWWHU. publishes PXOWLSOHFOLHQWVXEVFULEHUV emits RQO\RQHFOLHQWFRQQHFWHG . &OLHQWVXEVFULEHVRUFRQQHFWVWRGLUHFWO\. FRPSRQHQWHYHQWVRXUFH. &RQWDLQHUPHGLDWHVDFFHVVWR &RV1RWLILFDWLRQ. FKDQQHOV . VFDODELOLW\TXDOLW\RIVHUYLFHWUDQVDFWLRQDOHWF. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &RPSRQHQW(YHQW6LQNV 1DPHGFRQQHFWLRQSRLQWVLQWRZKLFKHYHQWVRID. VSHFLILFW\SHPD\EHSXVKHG. 6XEVFULSWLRQWRHYHQWVRXUFHV . 3RWHQWLDOO\PXOWLSOH QWR
(59). 1RGLVWLQFWLRQEHWZHHQHPLWWHUDQGSXEOLVKHU . %RWKSXVKLQHYHQWVLQNV. 7XHVGD\ -XQH WK . F
(60) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(61) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. :KDWLVD&25%$&RPSRQHQW+RPH" 0DQDJHVDXQLTXHFRPSRQHQWW\SH 0RUHWKDQRQHKRPHW\SHFDQPDQDJHWKHVDPH FRPSRQHQWW\SH %XWDFRPSRQHQWLQVWDQFHLVPDQDJHGE\DVLQJOH KRPHLQVWDQFH . home LVDQHZ&25%$PHWD W\SH +RPHGHILQLWLRQLVGLVWLQFWIURPFRPSRQHQWRQH +DVDQLQWHUIDFHDQGDQREMHFWUHIHUHQFH . &RXOGLQKHULWIURPDVLQJOHKRPHW\SH &RXOG supports PXOWLSOHLQWHUIDFHV ,VLQVWDQWLDWHGDWGHSOR\PHQWWLPH 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . $&25%$&RPSRQHQW+RPH Home interface. MyBusinessHome c1 …. cN. 7XHVGD\ -XQH WK . F
(62) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(63) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &RPSRQHQW+RPH)HDWXUHV $OORZVOLIHF\FOHFKDUDFWHULVWLFVRUNH\W\SHWR. YDU\HYROYHZLWKRXWFKDQJLQJFRPSRQHQW GHILQLWLRQ. 2SWLRQDOXVHRI primarykey IRUEXVLQHVV. FRPSRQHQWLGHQWLW\DQGSHUVLVWHQF\SULPDU\NH\. 6WDQGDUG factory DQGfinder EXVLQHVVORJLF. RSHUDWLRQV. ([WHQVLEOHZLWKDUELWUDU\XVHU GHILQHGEXVLQHVV. ORJLFRSHUDWLRQV. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 3ULPDU\.H\V 9DOXHVH[SRVHGWRFOLHQWVWRFUHDWHILQGDQGGHVWUR\. FRPSRQHQWLQVWDQFHV. 8QLTXHO\ LGHQWLILHV D FRPSRQHQW LQVWDQFH ZLWKLQ D KRPH $VVLJQHG DW FUHDWLRQ WLPH RU LQ SUHH[LVWLQJ GDWDEDVH 0XVW EH D YDOXH W\SH GHULYHG IURP. Components::PrimaryKeyBase. HPSW\ DEVWUDFW
(64). $VVRFLDWLRQEHWZHHQDSULPDU\NH\DQGDFRPSRQHQWLV. GHILQHGDQGPDLQWDLQHGE\LWVKRPH. 'LIIHUHQW KRPH W\SHV PD\ GHILQH GLIIHUHQW NH\ W\SHV RU QR NH\
(65) IRU WKH VDPH FRPSRQHQW W\SH. 3ULPDU\ NH\ LV QRW QHFHVVDULO\ D SDUW RI WKH FRPSRQHQW¶V VWDWH. 7XHVGD\ -XQH WK . F
(66) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(67) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 2WKHU20*,'/([WHQVLRQV 7KHQHZimport NH\ZRUG ,PSRUWDWLRQRI20*,'/VFRSHV 7RUHSODFH#include . 7KHQHZtypeprefix NH\ZRUG . 7RUHSODFH#pragma prefix. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 7KH'LQLQJ3KLORVRSKHUV([DPSOH 7KLQNLQJ +XQJU\ 6WDUYLQJ (DWLQJ 'HDG. 7KLQNLQJ +XQJU\ 6WDUYLQJ (DWLQJ 'HDG. )RUN 'HVFDUWHV .DQW. )RUN )RUN. 7KLQNLQJ +XQJU\ 6WDUYLQJ (DWLQJ 'HDG. $ULVWRWOH. 7XHVGD\ -XQH WK . F
(68) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(69) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 'LQLQJ3KLORVRSKHUVDV &25%$&RPSRQHQWV. Component Base ref. Facet Receptacle Event Sink. Philosopher QDPH. Fork. Event Source. .DQW. Fork Philosopher QDPH. Fork 'HVFDUWHV. Philosopher QDPH. $ULVWRWOH. 7XHVGD\ -XQH WK . Observer. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 20*,'/IRU'LQLQJ3KLORVRSKHUV // Importation of the Components module // when access to OMG IDL definitions contained // into the CCM's Components module is required.. import Components; module DiningPhilosophers {. // Sets the prefix of all these OMG IDL definitions. // Prefix generated Java mapping classes.. typeprefix DiningPhilosophers "omg.org"; . . . }; 7XHVGD\ -XQH WK . F
(70) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(71) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 7KH)RUN,QWHUIDFH exception InUse {}; interface Fork { void get() raises (InUse); void release(); };. Fork Manager. // The fork component. component ForkManager { // The fork facet used by philosophers. provides Fork the_fork; }; // Home for instantiating ForkManager components. home ForkHome manages ForkManager {}; 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 7KH)RUN0DQDJHU&RPSRQHQW exception InUse {}; interface Fork { void get() raises (InUse); void release(); };. Fork Manager. // The fork component. component ForkManager { // The fork facet used by philosophers. provides Fork the_fork; }; // Home for instantiating ForkManager components. home ForkHome manages ForkManager {}; 7XHVGD\ -XQH WK . F
(72) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(73) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 7KH)RUN0DQDJHU&RPSRQHQW)DFHW exception InUse {}; interface Fork { void get() raises (InUse); void release(); };. Fork Manager. // The fork component. component ForkManager { // The fork facet used by philosophers. provides Fork the_fork; }; // Home for instantiating ForkManager components. home ForkHome manages ForkManager {}; 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. 7KH)RUN0DQDJHU+RPH. . ForkHome. exception InUse {}; interface Fork { void get() raises (InUse); void release(); };. Fork Manager. // The fork component. component ForkManager { // The fork facet used by philosophers. provides Fork the_fork; }; // Home for instantiating ForkManager components. home ForkHome manages ForkManager {}; 7XHVGD\ -XQH WK . F
(74) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(75) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 7KH3KLORVRSKHU6WDWH7\SHV enum PhilosopherState { EATING, THINKING, HUNGRY, STARVING, DEAD }; eventtype { public public public public public };. Philosopher QDPH. ;;;. StatusInfo string name; PhilosopherState state; unsigned long ticks_since_last_meal; boolean has_left_fork; boolean has_right_fork;. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 7KH3KLORVRSKHU&RPSRQHQW component Philosopher { attribute string name;. // The left fork receptacle. uses Fork left;. Philosopher QDPH. ;;;. // The right fork receptacle. uses Fork right; // The status info event source. publishes StatusInfo info; }; home PhilosopherHome manages Philosopher { factory new(in string name); }; 7XHVGD\ -XQH WK . F
(76) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(77) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 7KH3KLORVRSKHU&RPSRQHQW5HFHSWDFOHV component Philosopher { attribute string name;. // The left fork receptacle. uses Fork left;. Philosopher QDPH. ;;;. // The right fork receptacle. uses Fork right; // The status info event source. publishes StatusInfo info; }; home PhilosopherHome manages Philosopher { factory new(in string name); }; 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 7KH3KLORVRSKHU&RPSRQHQW5HFHSWDFOHV component Philosopher { attribute string name;. // The left fork receptacle. uses Fork left;. Philosopher QDPH. ;;;. // The right fork receptacle. uses Fork right; // The status info event source. publishes StatusInfo info; }; home PhilosopherHome manages Philosopher { factory new(in string name); }; 7XHVGD\ -XQH WK . F
(78) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(79) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 7KH3KLORVRSKHU&RPSRQHQW(YHQW6RXUFH component Philosopher { attribute string name;. // The left fork receptacle. uses Fork left;. Philosopher QDPH. ;;;. // The right fork receptacle. uses Fork right; // The status info event source. publishes StatusInfo info; }; home PhilosopherHome manages Philosopher { factory new(in string name); }; 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 7KH3KLORVRSKHU+RPH PhilosopherHome component Philosopher { attribute string name;. // The left fork receptacle. uses Fork left;. Philosopher QDPH. ;;;. // The right fork receptacle. uses Fork right; // The status info event source. publishes StatusInfo info; }; home PhilosopherHome manages Philosopher { factory new(in string name); }; 7XHVGD\ -XQH WK . F
(80) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(81) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 7KH2EVHUYHU&RPSRQHQW. component Observer { // The status info sink port. consumes StatusInfo info; };. Observer. // Home for instantiating observers. home ObserverHome manages Observer {};. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 7KH2EVHUYHU&RPSRQHQW. component Observer { // The status info sink port. consumes StatusInfo info; };. Observer. // Home for instantiating observers. home ObserverHome manages Observer {};. 7XHVGD\ -XQH WK . F
(82) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(83) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 7KH2EVHUYHU+RPH Observer Home. component Observer { // The status info sink port. consumes StatusInfo info; };. Observer. // Home for instantiating observers. home ObserverHome manages Observer {};. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 3URJUDPPLQJ&25%$&RPSRQHQW&OLHQWV. 7KH&OLHQW6LGH20*,'/0DSSLQJ 7KH&OLHQW3URJUDPPLQJ0RGHO &OLHQW8VH([DPSOHV. 7XHVGD\ -XQH WK . F
(84) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(85) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 7KH&OLHQW6LGH20*,'/0DSSLQJ (DFK20*,'/FRQVWUXFWLRQKDVDQHTXLYDOHQW. LQWHUPVRI20*,'/. &RPSRQHQWDQGKRPHW\SHVDUHYLHZHGE\FOLHQWV. WKURXJKWKH&&0FOLHQW VLGH20*,'/PDSSLQJ. 3HUPLWVQRFKDQJHLQFOLHQWSURJUDPPLQJ. ODQJXDJHPDSSLQJ . &OLHQWVVWLOOXVHWKHLUIDYRULWH,'/RULHQWHGWRROVOLNH &25%$VWXEJHQHUDWRUVHWF. &OLHQWVGR127KDYHWREH³FRPSRQHQW DZDUH´ . 7KH\MXVWLQYRNHLQWHUIDFHRSHUDWLRQV. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 7KH&OLHQW6LGH20*,'/0DSSLQJ &RPSRQHQW &OLHQW. &RPSRQHQW 'HVLJQHU. &OLHQW $SSOLFDWLRQ. 8VHU ZULWWHQ &RPSLOHU *HQHUDWHG ILOHV. 20* ,'/ . XVHV 20* ,'/ &RPSLOHU. &OLHQWVLGH 20* ,'/ [. LPSOHPHQWHG E\ &OLHQW 6WXE 7XHVGD\ -XQH WK . F
(86) 3KLOLSSH0HUOH/,)/ ,15,$. 25%. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. Component . .
(87) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 0DLQ&OLHQW6LGH20*,'/0DSSLQJ5XOHV $FRPSRQHQWW\SHLVPDSSHGWRDQLQWHUIDFH. LQKHULWLQJIURPComponents::CCMObject. )DFHWVDQGHYHQWVLQNVDUHPDSSHGWRDQ. RSHUDWLRQIRUREWDLQLQJWKHDVVRFLDWHGUHIHUHQFH. 5HFHSWDFOHVDUHPDSSHGWRRSHUDWLRQVIRU. FRQQHFWLQJGLVFRQQHFWLQJDQGJHWWLQJWKH DVVRFLDWHGUHIHUHQFH V
(88). (YHQWVRXUFHVDUHPDSSHGWRRSHUDWLRQVIRU. VXEVFULELQJDQGXQVXEVFULELQJWRSURGXFHGHYHQWV. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 0DLQ&OLHQW6LGH20*,'/0DSSLQJ5XOHV $QHYHQWW\SHLVPDSSHGWR . $YDOXHW\SH. LQKHULWLQJ IURP. . Components::EventBase. $FRQVXPHULQWHUIDFH LQKHULWLQJ IURP. Components::EventConsumerBase. $KRPHW\SHLVPDSSHGWRWKUHHLQWHUIDFHV . 2QHIRUH[SOLFLWRSHUDWLRQVXVHUGHILQHG LQKHULWLQJ IURP. Components::CCMHome. 2QHIRULPSOLFLWRSHUDWLRQVJHQHUDWHG 2QHLQKHULWLQJIURPERWKSUHYLRXVLQWHUIDFHV . 7XHVGD\ -XQH WK . F
(89) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(90) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &OLHQW6LGH0DSSLQJIRU )RUN0DQDJHU &RPSRQHQW component ForkManager { provides Fork the_fork; };. Fork Manager. ,VPDSSHGWR interface ForkManager : ::Components::CCMObject { Fork provide_the_fork(); };. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. &OLHQW6LGH0DSSLQJ IRU)RUN+RPH. . ForkHome. home ForkHome manages ForkManager {}; Fork Manager ,VPDSSHGWR interface ForkHomeExplicit : ::Components::CCMHome {}; interface ForkHomeImplicit : ::Components::KeylessCCMHome { ForkManager create(); }; interface ForkHome : ForkHomeExplicit, ForkHomeImplicit {}; 7XHVGD\ -XQH WK . F
(91) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(92) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &OLHQW6LGH0DSSLQJIRU 6WDWXV,QIR (YHQW7\SH eventtype StatusInfo {. . .}; ,VPDSSHGWR valuetype StatusInfo : ::Components::EventBase { . . . }; interface StatusInfoConsumer : ::Components::EventConsumerBase { void push_StatusInfo(in StatusInfo the_StatusInfo); }; 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &OLHQW6LGH0DSSLQJ IRU2EVHUYHU&RPSRQHQW component Observer { consumes StatusInfo info; };. Observer. ,VPDSSHGWR interface Observer : ::Components::CCMObject { StatusInfoConsumer get_consumer_info(); };. 7XHVGD\ -XQH WK . F
(93) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(94) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &OLHQW6LGH0DSSLQJ IRU2EVHUYHU+RPH home ObserverHome manages Observer {};. Observer Home. ,VPDSSHGWR. Observer. interface ObserverHomeExplicit : ::Components::CCMHome {}; interface ObserverHomeImplicit : ::Components::KeylessCCMHome {. Observer create(); };. interface ObserverHome : ObserverHomeExplicit, ObserverHomeImplicit {}; 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &OLHQW6LGH0DSSLQJ IRU3KLORVRSKHU&RPSRQHQW component Philosopher { attribute string name; uses Fork left; uses Fork right; publishes StatusInfo info; }; ,VPDSSHGWR. Philosopher QDPH. ;;;. interface Philosopher : ::Components::CCMObject { attribute string name; .../... 7XHVGD\ -XQH WK . F
(95) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(96) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &OLHQW6LGH0DSSLQJ IRU3KLORVRSKHU&RPSRQHQW. Philosopher QDPH. ;;;. void connect_left(in Fork cnx) raises(…); Fork disconnect_left() raises(…); Fork get_connection_left(); void connect_right(in Fork cnx) raises (…); Fork disconnect_right() raises (…); Fork get_connection_right(); Components::Cookie subscribe_info( in StatusInfoConsumer consumer) raises(…);. StatusInfoConsumer unsubscribe_info( in Components::Cookie ck) raises(…); }; 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. &OLHQW6LGH0DSSLQJ IRU3KLORVRSKHU+RPH. . PhilosopherHome. home PhilosopherHome. Philosopher. manages Philosopher { };. factory new(in string name); ,VPDSSHGWR. QDPH. ;;;. interface PhilosopherHomeExplicit : ::Components::CCMHome {. Philosopher new(in string name); }; interface PhilosopherHomeImplicit : ::Components::KeylessCCMHome {. Philosopher create(); };. interface PhilosopherHome : PhilosopherHomeExplicit, PhilosopherHomeImplicit {}; 7XHVGD\ -XQH WK . F
(97) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(98) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 7KH&OLHQW3URJUDPPLQJ0RGHO &RPSRQHQWDZDUHDQGXQDZDUHFOLHQWV &OLHQWVVHHWZR GHVLJQSDWWHUQV . )DFWRU\ ± &OLHQW ILQGV D KRPH DQG XVHV LW WR FUHDWH D QHZ FRPSRQHQW LQVWDQFH. . )LQGHU &OLHQW VHDUFKHV DQ H[LVWLQJ FRPSRQHQW LQVWDQFH WKURXJK 1DPH 6HUYLFH 7UDGHU 6HUYLFH RU KRPH ILQGHU RSHUDWLRQV. 2SWLRQDOO\GHPDUFDWLRQRIWUDQVDFWLRQV &RXOGHVWDEOLVKLQLWLDOVHFXULW\ FUHGHQWLDOV ,QYRNHVRSHUDWLRQVRQFRPSRQHQWLQVWDQFHV . 7KRVH GHILQHG E\ WKH FOLHQWVLGH PDSSLQJ. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &25%$&RPSRQHQW+RPH)LQGHU $EURNHUDJHRIKRPHVWRFOLHQWV +RPHLPSOHPHQWDWLRQVUHJLVWHUZLWKKRPHILQGHU &OLHQWVUHTXHVWKRPHVIURPKRPHILQGHU . +RPHILQGHUPDNHVGHWHUPLQDWLRQRIZKDWLVWKH. ³EHVW´KRPHIRUDFOLHQWEDVHGRQWKHFOLHQW¶V UHTXHVWDQGDQ\DYDLODEOHHQYLURQPHQWDORU FRQILJXUDWLRQGDWD. $KRPHILQGHUFRQVWLWXWHVDGRPDLQRI. KRPHFRQWDLQHULPSOHPHQWDWLRQYLVLELOLW\. 7XHVGD\ -XQH WK . F
(99) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(100) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 8VLQJ&25%$&RPSRQHQWV ZLWK20*,'/VFULSW # Obtains the component home finder. chf = CORBA.ORB.resolve_initial_references (“ComponentHomeFinder”) # Finds a home by its home type. forkHome = chf.find_home_by_type(ForkHome.id()) # Creates a fork manager component. forkManager = forkHome.create() # Obtains the fork facet. fork = forkManager.provide_the_fork () # Uses the fork facet. fork.get() . . . . . . .. fork.release() 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &RQQHFWLQJ&25%$&RPSRQHQWV ZLWK20*,'/VFULSW # Obtaining CORBA components to be interconnected. kant = Philosopher(“corbaname:…”) observer = Observer(“corbaname:…”). Philosopher QDPH. .DQW. Observer. # Connects kant and observer. ck = kant.subscribe_info(observer.get_consumer_info()) . . . . . . # Disconnects kant and observer. kant.unsubscribe_info(ck) 7XHVGD\ -XQH WK . F
(101) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(102) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 1DYLJDWLRQDQG,QWURVSHFWLRQ 1DYLJDWLRQIURPDQ\IDFHWWRFRPSRQHQWEDVH. UHIHUHQFHZLWK CORBA::Object::get_component
(103) 5HWXUQVQLOLIWDUJHWLVQ¶WDFRPSRQHQWIDFHW 5HWXUQVFRPSRQHQWUHIHUHQFHRWKHUZLVH . 1DYLJDWLRQIURPFRPSRQHQWEDVHUHIHUHQFHWR. DQ\IDFHWYLDJHQHUDWHGIDFHW VSHFLILFRSHUDWLRQV. 1DYLJDWLRQDQGLQWURVSHFWLRQFDSDELOLWLHVSURYLGHG. E\ CCMObject. 9LDWKHNavigation LQWHUIDFHIRUIDFHWV 9LDWKHReceptacles LQWHUIDFHIRUUHFHSWDFOHV 9LDWKHEvents LQWHUIDFHIRUHYHQWSRUWV . 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . ,PSOHPHQWLQJ&25%$&RPSRQHQWV &RPSRQHQW,PSOHPHQWDWLRQ)UDPHZRUN &,)
(104) /RFDO6HUYHU6LGH20*,'/0DSSLQJ. 7XHVGD\ -XQH WK . F
(105) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(106) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &RPSRQHQW,PSOHPHQWDWLRQ)UDPHZRUN &,)GHILQHVDSURJUDPPLQJPRGHOIRU. FRQVWUXFWLQJFRPSRQHQWLPSOHPHQWDWLRQV . +RZFRPSRQHQWVVKRXOGEHLPSOHPHQWHG. )DFLOLWDWHVFRPSRQHQWLPSOHPHQWDWLRQ . ³RQO\´EXVLQHVVORJLFVKRXOGEHLPSOHPHQWHG 1RW DFWLYDWLRQ LGHQWLI\ SRUW PDQDJHPHQW DQG LQWURVSHFWLRQ. !/RFDOVHUYHUVLGH20*,'/PDSSLQJ ,QWHUDFWLRQV EHWZHHQ LPSOHPHQWDWLRQV DQG FRQWDLQHUV. 0DQDJHVVHJPHQWDWLRQDQGSHUVLVWHQF\. !&RPSRQHQW,PSOHPHQWDWLRQ'HILQLWLRQ/DQJXDJH. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &RPSRQHQW,PSOHPHQWDWLRQ)UDPHZRUN WR&RPSRQHQW6NHOHWRQ*HQHUDWLRQ 20* ,'/ . Component executor. 20* &,'/. 6HUYHU6LGH 0DSSLQJ. ,V PDSSHG WR. 7XHVGD\ -XQH WK . F
(107) 3KLOLSSH0HUOH/,)/ ,15,$. Skeletons managing ports, life cycle, persistency, etc. + GIOP/IIOP. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(108) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. ([HFXWRUVDQG+RPH([HFXWRUV 3URJUDPPLQJDUWLIDFWVLPSOHPHQWLQJD. FRPSRQHQW¶VRUFRPSRQHQWKRPH¶VEHKDYLRU . /RFDO&25%$REMHFWVZLWKLQWHUIDFHVGHILQHG E\WKHORFDOVHUYHUVLGH20*,'/PDSSLQJ. &RPSRQHQWH[HFXWRUVFRXOGEHPRQROLWKLF . $OOFRPSRQHQWDWWULEXWHVVXSSRUWHGLQWHUIDFHVIDFHW RSHUDWLRQVDQGHYHQWVLQNVLPSOHPHQWHGE\RQHFODVV. &RPSRQHQWH[HFXWRUVFRXOGDOVREHVHJPHQWHG . &RPSRQHQWIHDWXUHVVSOLWLQWRVHYHUDOFODVVHV ,PSOHPHQWVExecutorLocator LQWHUIDFH. +RPHH[HFXWRUVDUHDOZD\VPRQROLWKLF 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . ([HFXWRUV$UH+RVWHGE\&RQWDLQHU &RQWDLQHULQWHUFHSWVLQYRFDWLRQVRQH[HFXWRUV. IRUPDQDJLQJDFWLYDWLRQVHFXULW\WUDQVDFWLRQV SHUVLVWHQF\DQGVR. &RPSRQHQWH[HFXWRUVPXVWLPSOHPHQWDORFDO. FDOOEDFNOLIHF\FOHLQWHUIDFHXVHGE\WKHFRQWDLQHU SessionComponent IRUWUDQVLHQWFRPSRQHQWV EntityComponent IRUSHUVLVWHQWFRPSRQHQWV . &RPSRQHQWH[HFXWRUVFRXOGLQWHUDFWZLWKWKHLU. FRQWDLQHUVDQGFRQQHFWHGFRPSRQHQWVWKURXJK DORFDOFRQWH[WLQWHUIDFH. 7XHVGD\ -XQH WK . F
(109) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(110) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. $0RQROLWKLF&RPSRQHQW([HFXWRU &RPSRQHQWFRQWDLQHU. 0RQROLWKLFH[HFXWRU. &RPSRQHQW VSHFLILF FRQWH[W. &RQWDLQHU FRQWH[W. Component-oriented context interface Container-oriented context interface Context use Container interposition. Main component executor interface Facet or event sink executor interface SessionComponent or EntityComponent 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . $6HJPHQWHG&RPSRQHQW([HFXWRU &RPSRQHQWFRQWDLQHU 0DLQVHJPHQW. 6HJ. 6HJ. 6HJ. &RPSRQHQW VSHFLILF FRQWH[W. &RQWDLQHU FRQWH[W. ExecutorLocator 7XHVGD\ -XQH WK . F
(111) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(112) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 0RQROLWKLFYHUVXV6HJPHQWHG$SSURDFK 0RQROLWKLFDSSURDFK 3RRUOLIHF\FOHFRQWURORIIDFHWH[HFXWRUV %XWVLPSOLFLW\RILPSOHPHQWDWLRQ 6KRXOGEHXVHGIRUKDQGFRGHGLPSOHPHQWDWLRQ . 6HJPHQWHGDSSURDFK )LQHJUDLQOLIHF\FOHFRQWURORIIDFHWH[HFXWRUV %XWFRPSOH[LW\RILPSOHPHQWDWLRQ 6KRXOGEHXVHGIRU&,'/EDVHGLPSOHPHQWDWLRQ . 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 7KH6HUYHU6LGH20*,'/0DSSLQJ &RPSRQHQW &OLHQW &OLHQW $SSOLFDWLRQ. &RPSRQHQW 'HVLJQHU. &RPSRQHQW ,PSOHPHQWHU. 20* ,'/ . &RPSRQHQW ([HFXWRU. XVHV. LPSOHPHQWHG E\ 20* ,'/ &RPSLOHU. &OLHQWVLGH 20* ,'/ [. 8VHU ZULWWHQ &RPSLOHU *HQHUDWHG ILOHV. LPSOHPHQWHG E\. 7XHVGD\ -XQH WK . F
(113) 3KLOLSSH0HUOH/,)/ ,15,$. /RFDO VHUYHUVLGH 20* ,'/ [. GHOHJDWHV WR. &OLHQW 6WXE. 25%. &RPSRQHQW 6NHOHWRQ. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(114) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 0DLQ6HUYHU6LGH20*,'/0DSSLQJ5XOHV $FRPSRQHQWW\SHLVPDSSHGWRWKUHHORFDOLQWHUIDFHV 7KH PDLQ FRPSRQHQW H[HFXWRU LQWHUIDFH ,QKHULWLQJ IURP. Components::EnterpriseComponent. 7KH PRQROLWKLF FRPSRQHQW H[HFXWRU LQWHUIDFH 2SHUDWLRQV WR REWDLQ IDFHW H[HFXWRUV DQG UHFHLYH HYHQWV. 7KH FRPSRQHQW VSHFLILF FRQWH[W LQWHUIDFH 2SHUDWLRQV WR DFFHVV FRPSRQHQW UHFHSWDFOHV DQG HYHQW VRXUFHV. $KRPHW\SHLVPDSSHGWRWKUHHORFDOLQWHUIDFHV 2QH IRU H[SOLFLW RSHUDWLRQV XVHUGHILQHG ,QKHULWLQJ IURP. Components::HomeExecutorBase. 2QH IRU LPSOLFLW RSHUDWLRQV JHQHUDWHG 2QH LQKHULWLQJ IURP ERWK SUHYLRXV LQWHUIDFHV. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . ,PSOHPHQWLQJ&25%$&RPSRQHQWV 'LQLQJ3KLORVRSKHUV([DPSOH ,Q-DYD ,Q&. 7XHVGD\ -XQH WK . F
(115) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(116) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. ,PSOHPHQWDWLRQ5XOHV *HQHUDO. /RFDOVHUYHUVLGHHTXLYDOHQW,'/LQWHUIDFHVDUH LPSOHPHQWHGDFFRUGLQJWRWKHXVHGODQJXDJHPDSSLQJ &KRLFHEHWZHHQPRQROLWKLFDQGORFDWRULPSOHPHQWDWLRQ HQWU\SRLQW IDFWRU\IRUHDFKKRPHW\SH . -DYDVSHFLILF. ([HFXWRUFODVVHVLQKHULWIURP org.omg.CORBA.LocalObject (QWU\SRLQWV VWDWLFPHWKRGVRIKRPHH[HFXWRUFODVVHV . &VSHFLILF . (QWU\SRLQWV H[WHUQ³&´IXQFWLRQVWKDWFDQEHIRXQG LQVKDUHGOLEUDU\. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU)RUN0DQDJHU &RPSRQHQW. . Fork Manager. )RUN0DQDJHU. GHSHQGV RQ XVHG VWUDWHJ\ )RUN. 6HVVLRQ&RPSRQHQW. &&0B)RUN. ([HFXWRU. &&0B)RUN0DQDJHUB&RQWH[W. 6HVVLRQ&RQWH[W. 7XHVGD\ -XQH WK . F
(117) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(118) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU)RUN0DQDJHU &RPSRQHQW. Fork. // Executor interface for the the_fork facet. local interface CCM_Fork : Fork { // No declarations added. }; // Component-specific context interface. local interface CCM_ForkManager_Context : // Container context interface. ::Components::CCMContext { // Empty because no receptacles or event sources. };. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. )RUN)DFHW,PSOHPHQWDWLRQLQ-DYD -XVW%XVLQHVV2SHUDWLRQV. . Fork. public class ForkImpl extends org.omg.CORBA.LocalObject implements CCM_Fork { private boolean available_ = true; public void get() throws InUse { // Check if there is no current philosopher. if (!available_) throw new InUse(); available_ = false; } public void release() { available_ = true; } } 7XHVGD\ -XQH WK . F
(119) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(120) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. )RUN)DFHW,PSOHPHQWDWLRQLQ& -XVW%XVLQHVV2SHUDWLRQV. Fork. class Fork_impl : virtual public CCM_Fork { bool available_; public: Fork_impl() { available_ = true; } void get() { if (!available_) throw InUse(); available_ = false; } void release() { available_ = true; } }; 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU)RUN0DQDJHU &RPSRQHQW. . Fork Manager. )RUN0DQDJHU. &&0B)RUN0DQDJHU. )RUN. 6HVVLRQ&RPSRQHQW. &&0B)RUN. 0RQROLWKLFH[HFXWRU. &&0B)RUN0DQDJHUB&RQWH[W. 6HVVLRQ&RQWH[W. 7XHVGD\ -XQH WK . F
(121) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(122) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU)RUN0DQDJHU &RPSRQHQW. Fork Manager. // Monolithic executor interface. local interface CCM_ForkManager : // Executors base interface. ::Components::EnterpriseComponent { // Requested by container. CCM_Fork get_the_fork(); // No attributes. };. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. )RUN0DQDJHU ([HFXWRU 0RQROLWKLFLQ-DYD. . Fork Manager. public class MonolithicForkManagerImpl // Fork implementation. extends ForkImpl implements CCM_ForkManager, // Is monolithic. // Is a session executor org.omg.Components.SessionComponent { // Required by CCM_ForkManager interface. public CCM_Fork get_the_fork() { // Itself as it extends ForkImpl. return this; } // Also SessionComponent operations. } 7XHVGD\ -XQH WK . F
(123) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(124) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. )RUN0DQDJHU ([HFXWRU 0RQROLWKLFLQ&. Fork Manager. // IDL implied by the IDL to C++ mapping. local interface MyFork : CCM_ForkManager, CCM_Fork, Components::SessionComponent {}; // C++ class ForkManager_impl : virtual public MyFork, virtual public Fork_impl { public: // Required by CCM_ForkManager interface. CCM_Fork_ptr get_the_fork() { return CCM_Fork::_duplicate(this); } // Also SessionComponent operations. }; 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU)RUN0DQDJHU &RPSRQHQW. . Fork Manager. )RUN0DQDJHU. &&0B)RUN0DQDJHUB([HFXWRU ([HFXWRU/RFDWRU. 0DLQVHJPHQW )RUN. 6HVVLRQ&RPSRQHQW &&0B)RUN0DQDJHUB&RQWH[W. &&0B)RUN. 6HJ 6HVVLRQ&RQWH[W. 7XHVGD\ -XQH WK . F
(125) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(126) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU)RUN0DQDJHU &RPSRQHQW. Fork Manager. // Main component executor interface. local interface CCM_ForkManager_Executor : // Executors base interface. ::Components::EnterpriseComponent { // Empty because no attributes. };. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. 6HJPHQWHG)RUN0DQDJHU ([HFXWRU :LWK7ZR6HJPHQWVLQ-DYD. . Fork Manager. public class MainSegForkManagerImpl extends org.omg.CORBA.LocalObject implements CCM_ForkManager_Executor, org.omg.Components.SessionComponent { // SessionComponent to implement. }. 7XHVGD\ -XQH WK . F
(127) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(128) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 6HJPHQWHG)RUN0DQDJHU ([HFXWRU :LWK7ZR6HJPHQWVLQ&. Fork Manager. class MainSegForkManager_impl : virtual public CCM_ForkManager_Executor, virtual public Components::SessionComponent { // SessionComponent to implement. };. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU)RUN0DQDJHU &RPSRQHQW. . Fork Manager. // Container callback implemented by the main segment. local interface ExecutorLocator : ::Components::EnterpriseComponent { // Obtain the specified port executor segment. Object obtain_executor(in string name) raises(CCMException); // Release a port executor. void release_executor(in Object obj) raises(CCMException); // Notify configuration completion. void configuration_complete() raises(CCMException); };. 7XHVGD\ -XQH WK . F
(129) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(130) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 6HJPHQWHG)RUN0DQDJHU ([HFXWRU ([HFXWRU/RFDWRULQ-DYD. Fork Manager. public class ForkManagerExecutorLocatorImpl extends org.omg.CORBA.LocalObject implements ExecutorLocator { private CCM_Fork fork_; private CCM_ForkManager_Executor mgr_; public ForkManagerExecutorLocatorImpl() { fork_ = new ForkImpl(); mgr_ = new MainSegForkManagerImpl(); }. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. 6HJPHQWHG)RUN0DQDJHU ([HFXWRU ([HFXWRU/RFDWRULQ-DYD FRQWG
(131). . Fork Manager. public org.omg.CORBA.Object obtain_executor(String name) throws org.omg.Components.CCMException { if (name.equals("ForkManager")) return mgr_; if (name.equals("the_fork”)) return fork_; throw new org.omg.Components.CCMException(); } public void release_executor(org.omg.CORBA.Object obj) throws org.omg.Components.CCMException { // Nothing to do. } public void configuration_complete() throws org.omg.Components.CCMException { // Nothing to do. } } 7XHVGD\ -XQH WK . F
(132) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(133) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 6HJPHQWHG)RUN0DQDJHU ([HFXWRU ([HFXWRU/RFDWRULQ&. Fork Manager. class ForkManagerExecutorLocator_impl : virtual public ExecutorLocator { CCM_Fork_var fork_; CCM_ForkManager_Executor_var mgr_; public: ForkManagerExecutorLocator_impl() { fork_ = new Fork_impl; mgr_ = new MainSegForkManager_impl; }. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. 6HJPHQWHG)RUN0DQDJHU ([HFXWRU ([HFXWRU/RFDWRULQ& FRQWG
(134). . Fork Manager. CORBA::Object_ptr obtain_executor(const char* name){ if (strcmp(name, “ForkManager”)==0) return CORBA::Object::_duplicate(mgr_); else if (strcmp(name, “the_fork”)==0) return CORBA::Object::_duplicate(fork_); throw Components::CCMException(); } void release_executor(CORBA::Object_ptr obj) { // Nothing to do. } void configuration_complete() { // Nothing to do. } }; 7XHVGD\ -XQH WK . F
(135) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(136) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU)RUN+RPH +RPH. ForkHome Fork Manager. )RUN+RPH. &&0B)RUN+RPH. 0RQROLWKLFH[HFXWRU. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU)RUN+RPH +RPH. . ForkHome Fork Manager. local interface CCM_ForkHomeExplicit : // Base home executors interface ::Components::HomeExecutorBase { // Empty as no user-defined home operations. }; local interface CCM_ForkHomeImplicit { ::Components::EnterpriseComponent create() raises(::Components::CreateFailure); }; local interface CCM_ForkHome : CCM_ForkHomeExplicit, CCM_ForkHomeImplicit {}; 7XHVGD\ -XQH WK . F
(137) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(138) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. )RUN+RPH ([HFXWRU LQ-DYD. ForkHome Fork Manager. public class ForkHomeImpl extends org.omg.CORBA.LocalObject implements CCM_ForkHome { // Required by CCM_ForkHome interface. public org.omg.Components.EnterpriseComponent create() { // Return locator or monolithic instance. return new ...ForkManager...Impl(); }. // Called at deployment time. public static org.omg.Components.HomeExecutorBase create_home() { return new ForkHomeImpl(); } } 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. )RUN+RPH ([HFXWRU LQ&. . ForkHome Fork Manager. class ForkHome_impl : virtual public CCM_ForkHome { // Required by CCM_ForkHome interface. Components::EnterpriseComponent_ptr create() { // Return locator or monolithic instance. return new ...ForkManager..._impl; } };. extern “C” { Components::HomeExecutorBase_ptr create_ForkHome() { return new ForkHome_impl; } } 7XHVGD\ -XQH WK . F
(139) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(140) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU2EVHUYHU&RPSRQHQW. Observer. 2EVHUYHU. &&0B2EVHUYHU. 6HVVLRQ&RPSRQHQW. &&0B6WDWXV,QIR&RQVXPHU. 6WDWXV,QIR&RQVXPHU. 0RQROLWKLF([HFXWRU. &&0B2EVHUYHUB&RQWH[W. 6HVVLRQ&RQWH[W. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU2EVHUYHU&RPSRQHQW. . Observer. // Container callback implemented by the component local interface SessionComponent : ::Components::EnterpriseComponent { // The context is fixed by the container. void set_session_context(SessionContext ctx) raises(CCMException); // Called when component is activated. void ccm_activate() raises(CCMException); // Called when component is deactivated. void ccm_passivate() raises(CCMException); // Called when component is removed. void ccm_remove() raises(CCMException); }; 7XHVGD\ -XQH WK . F
(141) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(142) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU2EVHUYHU&RPSRQHQW. Observer. // Info event sink executor interface. local interface CCM_StatusInfoConsumer { void push(in StatusInfo ev); }; // Main component executor interface. local interface CCM_Observer_Executor : ::Components::EnterpriseComponent { }; // Monolithic executor interface. local interface CCM_Observer : CCM_Observer_Executor { void push_info(in StatusInfo ev); }; // Component-specific context interface. local interface CCM_Observer_Context : ::Components::CCMContext {}; 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. 2EVHUYHU([HFXWRU 0RQROLWKLFLQ-DYD. . Observer. public class ObserverImpl extends org.omg.CORBA.LocalObject implements CCM_Observer, org.omg.Components.SessionComponent { // Required for monolithic interface. public void push_info(StatusInfo event) { … update GUI … }. 7XHVGD\ -XQH WK . F
(143) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(144) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 2EVHUYHU([HFXWRU 0RQROLWKLFLQ-DYD FRQWG
(145). Observer. // Required for SessionComponent interface. public void set_session_context(SessionContext ctx) throws CCMException { ... } public void ccm_activate() throws CCMException { … display GUI … } public void ccm_passivate() throws CCMException { … hide GUI … } public void ccm_remove() throws CCMException { … free GUI … } } 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. 2EVHUYHU([HFXWRU 0RQROLWKLFLQ&. . Observer. // IDL implied by the IDL to C++ mapping. local interface MyObserver : CCM_Observer, Components::SessionComponent {}; class Observer_impl : virtual public MyObserver { public: // Required for monolithic interface. void push_info(StatusInfo * event) { … update GUI … }. 7XHVGD\ -XQH WK . F
(146) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(147) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 2EVHUYHU([HFXWRU 0RQROLWKLFLQ& FRQWG
(148). Observer. // Required for SessionComponent interface. void set_session_context( Components::SessionContext_ptr ctx) { ... } void ccm_activate() { … display GUI … } void ccm_passivate() { … hide GUI … } void ccm_remove() { … free GUI … } };. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU2EVHUYHU+RPH +RPH. . Observer Home Observer. 2EVHUYHU+RPH. &&0B2EVHUYHU+RPH. 0RQROLWKLFH[HFXWRU. 7XHVGD\ -XQH WK . F
(149) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(150) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU2EVHUYHU+RPH +RPH. Observer Home Observer. local interface CCM_ObserverHomeExplicit : ::Components::HomeExecutorBase {}; local interface CCM_ObserverHomeImplicit { ::Components::EnterpriseComponent create() raises(::Components::CreateFailure); }; local interface CCM_ObserverHome : CCM_ObserverHomeExplicit, CCM_ObserverHomeImplicit {}; 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. 2EVHUYHU+RPH ([HFXWRU ,Q-DYD. . Observer Home Observer. public class ObserverHomeImpl extends org.omg.CORBA.LocalObject implements CCM_ObserverHome { // Required by CCM_ObserverHome interface. public org.omg.Components.EnterpriseComponent create() { return new ObserverImpl(); }. // Called at deployment time. public static org.omg.Components.HomeExecutorBase create_home() { return new ObserverHomeImpl(); } }. 7XHVGD\ -XQH WK . F
(151) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(152) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 2EVHUYHU+RPH ([HFXWRU ,Q&. Observer Home Observer. class ObserverHome_impl : virtual public CCM_ObserverHome { Components::EnterpriseComponent_ptr create () { return new Observer_impl; } }; extern “C” { Components::HomeExecutorBase_ptr create_ObserverHome () { return new ObserverHome_impl; } }. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU3KLORVRSKHU&RPSRQHQW. . Philosopher QDPH. ;;;. 3KLORVRSKHU. &&0B3KLORVRSKHU. 6HVVLRQ&RPSRQHQW. &&0B3KLORVRSKHUB&RQWH[W. 0RQROLWKLF([HFXWRU 6HVVLRQ&RQWH[W. 7XHVGD\ -XQH WK . F
(153) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(154) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU3KLORVRSKHU&RPSRQHQW. Philosopher QDPH. ;;;. // Main component executor interface. local interface CCM_Philosopher_Executor : ::Components::EnterpriseComponent { attribute string name; }; // Monolithic executor interface. local interface CCM_Philosopher : CCM_Philosopher_Executor { };. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU3KLORVRSKHU&RQWH[W. . Philosopher QDPH. ;;;. local interface CCM_Philosopher_Context : ::Components::CCMContext { // To obtain the connected left fork. Fork get_connection_left();. // To obtain the connected right fork. Fork get_connection_right(); // To push an info event to all subscribers. void push_info(in StatusInfo ev); };. 7XHVGD\ -XQH WK . F
(155) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(156) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 3KLORVRSKHU([HFXWRU 0RQROLWKLFLQ-DYD. Philosopher QDPH. ;;;. public class PhilosopherImpl extends org.omg.CORBA.LocalObject implements CCM_Philosopher, org.omg.CORBA.SessionComponent, java.lang.Runnable { // Transient state. private String name_; // Constructor. public PhilosopherImpl(String n) { name_ = n; }. // Required by the CCM_Philosopher // Executor interface. public void name(String n) { name_ = n; } public String name() { return name_; } 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. 3KLORVRSKHU([HFXWRU 0RQROLWKLFLQ-DYD
(157). . Philosopher QDPH. ;;;. // The philosopher behavior state machine. private java.lang.Thread behavior_; // The philosopher CCM context. private CCM_Philosopher_Context the_context_; public void set_session_context(SessionContext ctx) throws CCMException { the_context_ = (CCM_Philosopher_Context)ctx; } public void ccm_activate() throws CCMException { behavior_ = new Thread(this); behavior_.start(); } public void ccm_passivate() throws CCMException { behavior_.stop(); } public void ccm_remove() throws CCMException {...} 7XHVGD\ -XQH WK . F
(158) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(159) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 3KLORVRSKHU([HFXWRU 0RQROLWKLFLQ-DYD
(160). Philosopher QDPH. ;;;. public void run() { // The state machine. ... // Pushes the current status to all observers.. the_context_.push_info(...); ... // Takes the left fork.. the_context_.get_connection_left().get(); ... // Takes the right fork.. the_context_.get_connection_right().get(); ... // Releases the left fork.. the_context_.get_connection_left().release(); ... // Releases the right fork.. the_context_.get_connection_right().release(); ... } 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. 3KLORVRSKHU([HFXWRU 0RQROLWKLFLQ&. . Philosopher QDPH. ;;;. // IDL implied by the IDL to C++ mapping. local interface MyPhilosopher : CCM_Philosopher, Components::SessionComponent {}; // C++ class Philosopher_impl : virtual public MyPhilosopher { CCM_Philosopher_Context_var ctx_; CORBA::String_var name_; public: // Constructor. Philosopher_impl(const char* nn) { name_ = nn; } void name(const char* nn) { name_ = nn; } char* name() { return CORBA::string_dup(name_); } 7XHVGD\ -XQH WK . F
(161) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(162) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 3KLORVRSKHU([HFXWRU 0RQROLWKLFLQ&
(163). Philosopher QDPH. ;;;. void set_session_context( Components::SessionContext_ptr ctx) { ctx_ = CCM_Philosopher_Context::_narrow (ctx); } void ccm_activate() {. … start philosopher thread … }. void ccm_passivate() {. … stop philosopher thread … }. void ccm_remove() {. … }. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. 3KLORVRSKHU([HFXWRU 0RQROLWKLFLQ&
(164). . Philosopher QDPH. ;;;. void timer() { // The state machine. ... ctx_->push_info(...); ... ctx_->get_connection_left()->get(); ... ctx_->get_connection_right()->get(); ... ctx_->get_connection_left()->release(); ... ctx_->get_connection_right()->release(); ... }. 7XHVGD\ -XQH WK . F
(165) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(166) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU3KLORVRSKHU+RPH +RPH. PhilosopherHome Philosopher. 3KLORVRSKHU+RPH. &&0B3KLORVRSKHU+RPH. 0RQROLWKLFH[HFXWRU. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. /RFDO6HUYHU6LGH(TXLYDOHQW,'/ IRU3KLORVRSKHU+RPH +RPH. . PhilosopherHome Philosopher. local interface CCM_PhilosopherHomeExplicit : ::Components::HomeExecutorBase { ::Components::EnterpriseComponent new(in string name); }; local interface CCM_PhilosopherHomeImplicit { ::Components::EnterpriseComponent create() raises(Components::CreateFailure); }; local interface CCM_PhilosopherHome : CCM_PhilosopherHomeExplicit, CCM_PhilosopherHomeImplicit {}; 7XHVGD\ -XQH WK . F
(167) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(168) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 3KLORVRSKHU+RPH([HFXWRU LQ-DYD. PhilosopherHome Philosopher. public class PhilosopherHomeImpl extends org.omg.CORBA.LocalObject implements CCM_PhilosopherHome {. // Required by CCM_PhilosopherHomeImplicit interface. public org.omg.Components.EnterpriseComponent create() { return new PhilosopherImpl(“”); } // Required by CCM_PhilosopherHomeExplicit interface.. public org.omg.Components.EnterpriseComponent _new(String name) { return new PhilosopherImpl(name); }. // Called at deployment time. public static org.omg.Components.HomeExecutorBase create_home() { return new PhilosopherHomeImpl(); } } 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. 3KLORVRSKHU+RPH([HFXWRU ,Q&. . PhilosopherHome Philosopher. class PhilosopherHome_impl : virtual public CCM_PhilosopherHome { Components::EnterpriseComponent_ptr create() { return new Philosopher_impl(“unnamed”); } Components::EnterpriseComponent_ptr _cxx_new(const char * name) { return new Philosopher_impl(name); } }; extern “C” { Components::HomeExecutorBase_ptr create_PhilosopherHome() { return new PhilosopherHome_impl; } } 7XHVGD\ -XQH WK . F
(169) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(170) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. ,PSOHPHQWLQJ&25%$&RPSRQHQWV ZLWK&,'/. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &RPSRQHQW,PSOHPHQWDWLRQ'HILQLWLRQ /DQJXDJH &,'/
(171) 'HVFULEHVFRPSRQHQWFRPSRVLWLRQ . $JJUHJDWHHQWLW\ZKLFKGHVFULEHVDOOWKHDUWLIDFWV UHTXLUHGWRLPSOHPHQWDFRPSRQHQWDQGLWVKRPH. 0DQDJHVFRPSRQHQWSHUVLVWHQFHVWDWH. :LWK20*3HUVLVWHQW6WDWH'HILQLWLRQ/DQJXDJH 36'/
(172) /LQNVVWRUDJHW\SHVWRVHJPHQWHGH[HFXWRUV . *HQHUDWHVH[HFXWRUVNHOHWRQVSURYLGLQJ. 6HJPHQWDWLRQRIFRPSRQHQWH[HFXWRUV 'HIDXOWLPSOHPHQWDWLRQVRIFDOOEDFNRSHUDWLRQV &RPSRQHQW¶VVWDWHSHUVLVWHQF\ . 7XHVGD\ -XQH WK . F
(173) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(174) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. %DVLF&,'/&RPSRVLWLRQ)HDWXUHV &RPSRQHQWOLIHF\FOHFDWHJRU\ . 6HUYLFHVHVVLRQSURFHVVHQWLW\. 1DPHRIKRPHH[HFXWRUVNHOHWRQWRJHQHUDWH &RPSRQHQWKRPHW\SHLPSOHPHQWHG . ,PSOLFLWO\WKHFRPSRQHQWW\SHLPSOHPHQWHG. 1DPHRIPDLQH[HFXWRUVNHOHWRQWRJHQHUDWH 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . &,'/&RPSRVLWLRQIRU 2EVHUYHU&RPSRQHQW #include <philo.idl> // or import DiningPhilosophers; composition service ObserverComposition {. home executor ObserverHomeServiceImpl {. implements DiningPhilosophers::ObserverHome; manages ObserverServiceImpl; }; };. 7XHVGD\ -XQH WK . F
(175) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(176) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. 20*&,'/&RPSLODWLRQ3URFHVV &RPSRQHQW 'HVLJQHU. &RPSRVLWLRQ 'HVLJQHU. 20* ,'/ . LQFOXGHV LPSRUWV. /RFDO 6HUYHUVLGH 20* ,'/. 20* ,'/ &RPSLOHU. GHOHJDWHV WR. &RPSRQHQW 6NHOHWRQ. SDUWLDOO\ LPSOHPHQWHG. 7XHVGD\ -XQH WK . &RPSRQHQW ,PSOHPHQWHU &RPSRQHQW ([HFXWRU. 20* &,'/. 20* &,'/ &RPSLOHU. LQKHULWHG E\ DQG FRPSOHWHG. &RPSRQHQW ([HFXWRU 6NHOHWRQ. 8VHU ZULWWHQ &RPSLOHU *HQHUDWHG ILOHV. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . $GYDQFHG&,'/&RPSRVLWLRQ)HDWXUHV $VVRFLDWHGDEVWUDFWVWRUDJHKRPHW\SHIRU. FRPSRQHQWSHUVLVWHQF\. 0XOWLSOHH[HFXWRUVHJPHQWV. ,PSOHPHQWDVXEVHWRIWKHFRPSRQHQW¶VIDFHWV &RXOGKDYHDQDVVRFLDWHGDEVWUDFWVWRUDJHKRPH . &RPSRQHQWIHDWXUHVVWRUHGDXWRPDWLFDOO\ . $WWULEXWHYDOXHVUHIHUHQFHVFRQQHFWHGWRUHFHSWDFOHV DQGHYHQWVRXUFHVDUHGHOHJDWHGWRVWRUDJH. 3UR[\KRPHV 7XHVGD\ -XQH WK . F
(177) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(178) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &,'/&RPSRVLWLRQ IRU)RUN0DQDJHU &RPSRQHQW #include <philo.idl> // or import DiningPhilosophers; composition session ForkManagerComposition { home executor ForkHomeSessionImpl { implements DiningPhilosophers::ForkHome; manages ForkManagerSessionImpl { segment Seg { provides facet the_fork; } }; }; }; 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 20*36'/IRU'LQLQJ3KLORVRSKHUV #include <philo.idl> abstract storagetype Person { state string name; state DiningPhilosophers::PhilosopherState philosopher_state; . . . }; abstract storagehome PersonHome of Person { factory create(); }; storagetype PersonBase implements Person {}; storagehome PersonHomeBase of PersonBase implements PersonHome {};. 7XHVGD\ -XQH WK . F
(179) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . .
(180) &25%$&RPSRQHQW0RGHO7XWRULDO 2UODQGR20*0HHWLQJ. 7XHVGD\-XQHWK. &,'/&RPSRVLWLRQIRU'LQLQJ3KLORVRSKHUV #include <philo.psdl> composition process PhilosopherComposition { home executor PhilosopherHomeProcessImpl { implements DiningPhilosophers::PhilosopherHome; bindsTo PersonHome; manages PhilosopherProcessImpl; }; };. 7XHVGD\ -XQH WK . &25%$ &RPSRQHQW 0RGHO 7XWRULDO. . 20*&,'/ 36'/&RPSLODWLRQ3URFHVV 20* ,'/. 'DWDEDVH 'HVLJQHU 20* 36'/. . LQFOXGHV. 20* 36'/ &RPSLOHU. 6WRUDJH 6WXE. &RPSRVLWLRQ 'HVLJQHU. &RPSRQHQW ,PSOHPHQWHU. 20* &,'/. &RPSRQHQW ([HFXWRU. 20* &,'/ &RPSLOHU. XVHV. LQKHULWHG E\ DQG FRPSOHWHG. &RPSRQHQW ([HFXWRU 6NHOHWRQ. 'DWDEDVH 7XHVGD\ -XQH WK . F
(181) 3KLOLSSH0HUOH/,)/ ,15,$. &25%$ &RPSRQHQW 0RGHO 7XWRULDO. 8VHU ZULWWHQ &RPSLOHU *HQHUDWHG ILOHV . .
Documenti correlati
Al fine di coprire interamente le spese per la progettazione preliminare, definitiva ed esecutiva, i lavori di ristrutturazione, il coordinamento della sicurezza, la direzione
In Italia è presente in tutte le regioni del versan- te tirrenico dalla Liguria alla Calabria, in Sicilia, Sardegna e Isole minori, nel versante adriatico dalle Marche alla
[r]
Tiberio Rabboni, Assessore Agricoltura, economia ittica, attività faunistico-venatoria della Regione Emilia-Romagna. Utilizzo del RUC: alcuni esempi
9.30 – Introduzione ai lavori e presentazione servizi del Punto Impresa Digitale (PID) della Camera di commercio di Torino Paolo Veneruso, Camera di commercio di Torino, Punto
[r]
COMPLEMENTI DI ANALISI MATEMATICA - 16
The WHO Traditional Medicine Strategy 2014-2023 will help health care leaders to develop solutions that contribute to a broader vision of improved health and patient autonomy.