&'05XOH)UDPHQRZDMDNRüWZRU]HQLDDSOLNDFML
trójwarstwowych
Tomasz Kazimierski
Oracle Polska
e–mail: Tomasz.Kazimierski@oracle.com
Abstrakt. Custom Development Method &'0 MHVW VSUDZG]RQ VWUXNWXUDOQ PHWRG UR]ZRMX DSOLNDFML
X*\ZDMF\FKWHFKQRORJLL2UDFOH0HWRGDUR]ZLMDVL ZUD]]ILUPRGZLHOXODW2EHFQLHWDNMDNZL NV]Rü
SURGXNWyZ2UDFOH]QDOD]áD]DVWRVRZDQLHZ,QWHUQHFLHMDNR&'0L
7HPDWHPWHJRUHIHUDWXMHVWW\ONRIUDJPHQW&'0L&'05XOH)UDPHMDNRLQWHUHVXMF\SRP\VáLPSOHPHQWDFML
UHJXáEL]QHVRZ\FKZDUFKLWHNWXU]HWUyMZDUVWZRZHM
:\PDJDQLDGODQDU] G]LDGRLPSOHPHQWDFMLUHJXáEL]QHVRZ\FK
:ND*GHMDSOLNDFMLED]RGDQRZHMZ\VW SXMUHJXá\EL]QHVRZH0RGHOUHODF\MQ\ZVSLHUDSURVWR
LPSOHPHQWDFMH QLHNWyU\FK ] QLFK QS ÄOLQLD ]DPyZLHQLD PXVL ZL]Dü VL ] LVWQLHMF\P
]DPyZLHQLHP´DOHZZL NV]RFLSURVWHZL ]\ED]RGDQRZHQLHZ\VWDUF]DMQSÄ]DPyZLHQLHPXVL
PLHü FR QDMPQLHM MHGQ OLQL ´ DOER ÄQLH PR*QD GRGDZDü OLQLL GR ]DPyZLHQLD Z VWDQLH
µ=DPNQL WH¶´
:VSDUFLH LPSOHPHQWDFML UHJXá ED]RGDQRZ\FK ]RVWDáR ZSURZDG]RQH Z *HQHUDWRU]H 6HUYHU Z
2UDFOH 'HVLJQHU]H 0R*QD WDP SU]\ SRPRF\ WDN ]ZDQHJR 7$3, $3, 7DEHOL LPSOHPHQWRZDü DXWRPDW\F]QLHWDNLHUHJXá\MDNSURVWDGHQRUPDOL]DFMDDXWRPDW\F]QHQXPHURZDQLH]VHNZHQFMLF]\
]DSDPL W\ZDQLH LQIRUPDFML R F]DVLH L X*\WNRZQLNX ]PLHQLDMF\P UHNRUG -HGQDN ZFL* LVWQLHM
UHJXá\SU]\NWyU\FKJHQHUDWRUQDPQLHSRPR*H
&] VWR SRGF]DV LPSOHPHQWDFML UHJXá SRMDZLDM VL SUREOHP\ NWyUH SRZRGXM *H SURMHNWDQFL
PQLHMOXEEDUG]LHMZLDGRPLHUH]\JQXM]XPLHV]F]HQLDLFKZED]LHGDQ\FKQDU]HF]NRGXDSOLNDFML
NOLHQWD 3UREOHPDPL W\PL V QD SU]\NáDG QLHPR*QRü áDWZHJR GRVW SX GR ZLHUV]\ WDEHOL ]
wyzwalacza ED]RGDQRZHJR RSDUWHJR R QL SUREOHP µmutating table¶ SUREOHPHP MHVW WDN*H SR
SURVWX]áR*RQRüNRGXZED]LHZSRUyZQDQLX]SRGREQ\PNRGHPSRVWURQLHNOLHQWDDOER
REVáXJD Z\MWNyZ ]JáDV]DQ\FK SU]H] WDNL NRG -HOL UHJXá\ QLH V Z ED]LH PXV] E \ü LPSOHPHQWRZDQHZND*GHMDSOLNDFMLNWyUD]GDQ\FKNRU]\VWD1LHPR*HP\E\üZyZF]DVSHZQL*H
]D ND*G\P UD]HP UHJXá\ G]LDáDM LGHQW\F]QLH ND*GD LPSOHPHQWDFMD PR*H ZQRVLü VZRMH ZáDVQH
Eá G\
.ROHMQ\P DVSHNWHP MHVW XWU]\PDQLH NRGX REVáXJL UHJXá &] VWR VSRVyE LPSOHPHQWDFML MHVW
SR]RVWDZLRQ\ SRV]F]HJyOQ\P SURJUDPLVWRP ZyZF]DV ]PLDQD MHGQHM UHJXá\ PR*H SRZRGRZDü NRQLHF]QRü]PLDQ\NRGXZZLHOXPLHMVFDFKLZUy*Q\VSRVyE
6SRVREHP UR]ZL]DQLD SRZ\*V]\FK SUREOHPyZ PD E\ü 5XOH)UDPH 3RGF]DV MHJR WZRU]HQLD
]RVWDá\ SU]\M WH QDVW SXMFH ]DáR*HQLD Z\QLNDMFH ] NZHVWLL ]ZL]DQ\FK ] VDP LPSOHPHQWDFM
UHJXáLNZHVWLL]ZL]DQ\FK]LFKXWU]\PDQLHP
8ZDJDRWHUPLQRORJLL3U]\MPXMF]DM ]\NLHPDQJLHOVNLP]Z\NOHPyZLVL RZ\PXV]DQLXUHJXá
EL]QHVRZ\FK -HGQDN SRQLHZD* UHJXá\ PRJ E\ü R ZLHOH EDUG]LHM VNRPSOLNRZDQH QL* SURVWH
VSUDZG]HQLHQSUHJXáEL]QHVRZMHVWDNWXDOL]DFMDVXP\FDáNRZLWHMIDNWXU\SU]\GRGDQLXGRQLHM
SR]\FML VáRZR ÄZ\PXV]DQLH´ Z\GDMH PL VL QLH]U F]QH 'ODWHJR GDOHM E G]LHP\ X*\ZDü
VIRUPXáRZDQLD Z\NRQDQLH UHJXá PDMF QD P\OL Z\NRQDQLH NRGX LPSOHPHQWXMFHJR RNUHORQ
UHJXá
Tomasz Kazimierski
,PSOHPHQWDFMDUHJXá
5XOH)UDPH SRZLQLHQ HIHNW\ZQLH ZVSLHUDü SRZVWDZDQLH LPSOHPHQWDFML UHJXá 'ODWHJR SU]\M WR
QDVW SXMFH]DáR*HQLD
1. Szybkie tworzenie kodu – najlepiej automatyczna generacja.
2. àDWZHGRGDZDQLHUHJXáSRSU]H]RNUHOHQLH]GDU]HQLDGDQ\FKRUD]NRGX
3. 8*\FLHLQIRUPDFML]HEUDQ\FKQDHWDSLHDQDOL]\L]DSLVDQ\FKZUHSR]\WRULXP
4. 8*\FLH VWDQGDUGRZ\FK PHFKDQL]PyZ XSUDV]F]DMF\FK ]áR*RQRü NRGX 5XOH)UDPH RSLHUD
VL QDIXQNFMRQDOQRFLED]\GDQ\FK2UDFOHDOHNRQFHSFMHWXRSLV\ZDQHPRJ]RVWDüWDN*H
X*\WHSRSHZQ\FK]PLDQDFKGODED]\2UDFOH
5. ,PSOHPHQWDFMD UHJXá ]DZDUWD MHVW FDáNRZLFLH Z ED]LH GDQ\FK MHVW QLH]DOH*QD RG NRGX
DSOLNDFML NOLHQWD .RG NOLHQWD EH] Z]JO GX QD WR F]\ MHVW WR NRG :HE )RUPV NDUWU\G*
3/64/ F]\ -$9$ MHVW RGSRZLHG]LDOQ\ Z\áF]QLH ]H REVáXJ E á GyZ ] LPSOHPHQWDFML
UHJXá=DáR*HQLHWRR]QDF]DZ\G]LHOHQLHZDUVWZ\LPSOHPHQWDFMLUHJXá
6. 0HFKDQL]P SRZLQLHQ ]DSHZQLDü PR*OLZRü Z\NRQDQLD UHJXá QD SR]LRPLH WUDQVDNFML
*ZDUDQWXMHP\VSHáQLHQLHUHJXáQDNRFXWUDQVDNFMLDOHSRGF]DVMHMSU]HSURZDG]DQLDUHJXá\
QLHNRQLHF]QLHPXV]E\üVSHáQLRQH3U]\NáDGHPMHVWUHJXáDÄND*GH]DPyZLHQLHPD]DZV]H
FR QDMPQLHM MHGQ OLQL ´ SRQLHZD* QLH GD VL ]URELü ]DPyZLHQLD EH] MHM FKZLORZHJR
QDUXV]HQLD ,PSOLNXMH WR NRQLHF]QRü VWZRU]HQLD PHFKDQL]PX WUDQVDNFML UR]V]HU]DMFHJR
VWDQGDUGRZHG]LDáDQLHED]\GDQ\FK
7. 6SUDZG]DQLH UHJXá PR*QD ]DEORNRZDü =DáR*HQLH WR Z\QLND ] NRQLHF]QRFL Z\NRQDQLD
G]LDáD ZVDGRZ\FK NLHG\ VSUDZG]DQLH UHJXá SURZDG]LáR E\ GR SUREOHPyZ
Z\GDMQRFLRZ\FK
8WU]\PDQLHUHJXá
5HJXá\áDWZRZVSLHUDüMHOL
8. .RGLPSOHPHQWDFMLPDSRGREQVWUXNWXU WX]QyZ]DáR*HQLHRJHQHUDFML
9. 6WUXNWXUD LPSOHPHQWDFML SRZLQQD E\ü PR*OLZLH RGSRUQD QD ]PLDQ\ UHJXá\ OXE VWUXNWXU
GDQ\FK=DáR*HQLHWRSURZDG]LGR]DVWRVRZDQLDWHFKQLNRELHNWRZ\FKZLPSOHPHQWDFML
10. 3RZLQQDLVWQLHüáDWZDPR*OLZRüRF]\V]F]DQLD]Eá GyZNRGXLPSOHPHQWDFML
CDM RuleFrame
:F] FLWHMRSLV\ZDQDMHVWDUFKLWHNWXUDUR]ZL]DQLDLSRV]F]HJyOQHMHJRHOHPHQW\
Struktura
=JRGQLH]]DáR*HQLDPLRSLVDQ\PZSRSU]HGQLHMF] FL5XOH)UDPHVWDQRZLGRGDWNRZZDUVWZ
ORJLNLDSOLNDFMLSRPL G]\ZDUVWZGDQ\FKED]DGDQ\FKXWU]\P\ZDQDSU]H]2UDFOHLZDUVWZ
SUH]HQWDFML NRG DSOLNDFML SRND]XMF\ GDQH L SU]HND]XMF\ G]LDáDQLD Z\NRQ\ZDQH SU]H]
X*\WNRZQLND
:DUVWZ 5XOH)UDPHQD]\ZDP\ZDUVWZORJLNLEL]QHVRZHM
Warstwa logiki biznesowej ma dalej dwie podwarstwy:
• :DUVWZ GRVW SXGRGDQ\FK
• :DUVWZ UHJXá
3HáQVWUXNWXU SU]HGVWDZLDSRQL*V]\U\VXQHN
CDM 5XOH)UDPHQRZDMDNRüWZRU]HQLDDSOLNDFMLWUyMZDUVWZRZ\FK
355
Warstwa prezentacji
WEB Forms
J Developer
PL/SQL (WEB)
…
Warstwa
Logiki
Warstwa
Perspektywy z wyzwalaczami „INSTEAD OF”
Biznesowej
GRVW SXGR
danych
Warstwa
UHJXá
TAPI
CAPI
=DU]G]DQLH
Transakcjami
Warstwa
Danych
Tabele i klucze bazodanowe
:D*Q\P NRPSRQHQWHP QLH ZFKRG]F\P Z VNáDG 5XOH)UDPH MHVW NRPSOHNVRZ\ PHFKDQL]P
REVáXJLEá GyZ0HFKDQL]PWHQ]RVWDáZSURZDG]RQ\ZSDNLHFLH+HDGVWDUW
'DOHMRSLV\ZDQHVSRV]F]HJyOQHNRPSRQHQW\ZDUVWZ\ORJLNLEL]QHVRZHM
:DUVWZDUHJXá
:DUVWZDUHJXáVNáDGDVL ]WU]HFKF] FL7$3,&$3,L]DU]G]DQLDWUDQVDNFMDPL3RV]F]HJyOQH
F] FLE GV]F]HJyáRZRRSLVDQHGDOHMSRQL*HMW\ONRNUyWNLRSLVNWyU\SRZLQLHQSRPyF]UR]XPLHü diagram.
TAPI jest to kod pakietów i wyzwalaczy generowanych przez Generator Serwera Oracle
'HVLJQHUD 5XOH)UDPH GRGDMH Z UHSR]\WRULXP GRGDWNRZ\ NRG ]DSHZQLDMF\ ZVSyáSUDF 7$3, ]
SR]RVWDá\PLNRPSRQHQWDPL
CAPI (Custom $3,SDNLHW\3/64/LPSOHPHQWXMFHUHJXá\RUD]GRGDWNRZHXVáXJL0RJE\ü F] FLRZRJHQHURZDQHSU]H]QDU] G]LD5XOH)UDPH
0RGXá]DU]G]DQLDWUDQVDNFMDPLMHVWJRWRZ\PSDNLHWHP3/64/]DZDUW\PZ5XOH)UDPH
356
Tomasz Kazimierski
Warstwa prezentacji
:DUVWZDUHJXáEL]QHVRZ\FK
CAPI
=DU]G]DQLH
1. Otwarcie transakcji
:\ZRáDQLH7$3,
TAPI
:VWDZLHQLHUHJXá\
3 WODSU]H]
:\ZRáDQLH
UHJXá\
=DPNQL FLH
Warstwa danych
3 WODSRUHJXáDFK
:\ZRáDQLH&$3,
9. Wykonanie
%á G
%áG
TA
TA
11. Zatwierdzenie
2EVáXJDEá GyZ
10. Dodanie na stos
2EVáXJDEá GyZ]H
3RZ\*V]\GLDJUDPSU]HGVWDZLDZVSRVyEXSURV]F]RQ\MDNSRV]F]HJyOQHF] FLZVSyáSUDFXM]H
VREGLDJUDPQLH]DZLHUDZDUVWZ\GRVW SX
1. $SOLNDFMDX*\WNRZQLNDSRSU]H]ZDUVWZ GRVW SXUR]SRF]\QDWUDQVDNFM
2. 7$3,REVáXJXMH'0/Z\NRQDQ\SU]H]DSOLNDFM
3. 7$3,Z\ZRáXMHSURFHGXU &$3,
4. 3URFHGXUD &$3, VSUDZG]D F]\ LVWQLHM UHJXá\ ED]RGDQRZH NWyUH Z\PDJDM Z\NRQDQLD
SRGF]DVWHJRZ\ZRáDQLD
5. -HOLWDNWRRGSRZLHGQLDLQIRUPDFMDXPLHV]F]DQDMHVWQDVWRVLHWUDQVDNFML'DOHMZUDPDFKWHM
WUDQVDNFMLPRJQDVWSLüNROHMQHZ\ZRáDQLD7$3,D*GR«
6. «FKZLOLNLHG\DSOLNDFMDX*\WNRZQLND]JáDV]DNRQLHFWUDQVDNFML
7. 0HFKDQL]P WUDQVDNF\MQ\ SU]HJOGD VWRV VSUDZG]DMF F]\ ]RVWDá\ WDP XPLHV]F]RQH
Z\ZRáDQLD&$3,GODREVáXJLUHJXá
8. 'ODND*GHMSR]\FMLVWRVXZ\ZRáXMHRGSRZLHGQLSURFHGXU &$3,
9. 3URFHGXUD &$3, Z\NRQXMH DNFMH Z\QLNDMFH ] UHJXá\ -HOL SURFHGXUD QDWUDILD QD EáG
LQIRUPDFMDRQLPMHVWSU]HND]\ZDQDGRPHFKDQL]PXREVáXJLEá GyZ
CDM 5XOH)UDPHQRZDMDNRüWZRU]HQLDDSOLNDFMLWUyMZDUVWZRZ\FK
357
10. 0HFKDQL]PREVáXJLEá GyZXPLHV]F]DLQIRUPDFMHQDVWRVLHEá GyZ:]DOH*QRFLRGURG]DMX
Eá GXMHVW]ZUDFDQ\DOERQLHMHVW]ZUDFDQ\Z\MWHNGRREVáXJLWUDQVDNFML
11. -HOL REVáXJD WUDQVDNFML RWU]\PDáD EáG DOER QLH PD ZL FHM LQIRUPDFML QD VWRVLH WUDQVDNFML
VSUDZG]DQHMHVWF]\LVWQLHMEá G\QDVWRVLHEá GyZ
12. -HOLWDNZ\ZRá\ZDQ\MHVWPHFKDQL]PREVáXJLEá GyZ
13. -HOLQLHWUDQVDNFMDNRF]\VL ]DWZLHUG]HQLHP
TAPI
:DUVWZDVNáDGDVL ]NRGXJHQHURZDQHJRSU]H]*HQHUDWRU6HUZHUD2UDFOH'HVLJQHUD:MHJR
VNáDGZFKRG]LNRGUHDOL]XMF\SRGVWDZRZHDNFMH'0/83''(/,16RGF]\WXGDQ\FK6(/
oraz blokowania (LCK).
*HQHUDWRU6HUZHUDPR*HXPLHFLüZNRG]LH7$3,NRG]DSHZQLDMF\Z\NRQDQLHQDVW SXMF\FK
GRGDWNRZ\FKG]LDáD
1. :\SHáQLDQLH NROXPQ ZDUWRFLDPL ] VHNZHQFML ED]RGDQRZ\FK .RG SRELHUD ZDUWRü ]
VHNZHQFML]ZL]DQHM]SROHWDEHOLSRGF]DVZVWDZLDQLDUHNRUGX
2. *HQHURZDQLHZDUWRFLGRP\OQ\FKGODNROXPQQDSRGVWDZLHLQIRUPDFML]UHSR]\WRULXP
3. 8WU]\P\ZDQLH LQIRUPDFML R GDFLH L X*\WNRZQLNX ZVWDZLDMF\P GDQH RUD] GDFLH L
X*\WNRZQLNXPRG\ILNXMF\PGDQH
4. .RQZHUVMDGDQ\FKGRGX*\FKOLWHU
5. 8WU]\PDQLH WDEHO *XUQDORZ\FK 7DEHOH ]DZLHUDM LQIRUPDFMH R ]PLDQDFK GDQ\FK ] WDEHOL
(UyGáRZHM 3RGF]DV PRG\ILNDFML L ZVWDZLDQLD UHNRUGX SRSU]HGQL VWDQ ZVWDZLDQ\ MHVW GR
WDEHOL*XUQDORZHM
6. 8WU]\P\ZDQLH GHQRUPDOL]DFML SURVWHM ± SU]HSLVDQLH GDQ\FK ] UHNRUGX QDGU] GQHJR GR
SRGU] GQHJRQSQD]ZDGHSDUWDPHQWXSU]HSLV\ZDQDGRUHNRUGXSUDFRZQLNDGHSDUWDPHQWX
RERNNOXF]DREFHJRQDQXPHU]HGHSDUWDPHQWX:\OLF]HQLRZHMNLHG\ZDUWRüNROXPQ\
UHNRUGXQDGU] GQHJRX]\VNLZDQDMHVW]G]LDáDQLDQDUHNRUGDFKSRGU] GQ\FKQSXWU]\PDQLH
VXP\FDáNRZLWHMZIDNWXU]HQDSRGVWDZLHZDUWRFLSRV]F]HJyOQ\FKOLQLLIDNWXU\
7. 6SUDZG]DQLH GRSXV]F]DOQ\FK ZDUWRFL SyO QD SRGVWDZLH G]LHG]LQ ]GHILQLRZDQ\FK Z
repozytorium.
8. :\NRQ\ZDQLHGRGDWNRZ\FKDNFML]ZL]DQ\FK]NOXF]DPLREF\PL*HQHUDWRUXPR*OLZLDDE\
Z FKZLOL ]PLDQ\ NOXF]D JáyZQHJR ]RVWDáD Z\NRQDQD MHGQD ] SRQL*V]\FK DNFML
DNWXDOL]DFMD SyO NOXF]\ REF\FK QD QRZ ZDUWRü XVWDZLHQLH SyO NOXF]\ REF\FK QD
ZDUWRü SXVW DOER XVWDZLHQLH SyO NOXF]\ REF\FK QD ZF]HQLHM RNUHORQ ZDUWRü GRP\OQ3RGREQLHSRGF]DVXVXZDQLDUHNRUGXQDGU] GQHJRPR*QDZ\PXVLüXVXQL FLH
UHNRUGyZSRGU] GQ\FKDOERXVWDZLüZDUWRüNOXF]\REF\FKZW\FKUHNRUGDFKQDZDUWRü
SXVWDOERZDUWRüGRP\OQ
9. :\PXV]DQLHáXNyZàXNMHVWMHGQ]GUyJLPSOHPHQWDFMLSRGW\SyZ1DSRGVWDZLHQDGW\SX
HQFML ]HZQ WU]QHM WZRU]RQD MHVW WDEHOD SRGU] GQD 7 GOD WDEHO XWZRU]RQ\FK ] SRGW\SyZ
WDEHOH 7 7« .OXF]H REFH SRPL G]\ 7 D 71! Z\NOXF]DM VL Z]DMHPQLH 1D
SU]\NáDGQDGW\SHPMHVWRVREDMHJRSRGW\SDPLMHVWRVREDIL]\F]QDLRVREDSUDZQD:yZF]DV
SRZVWDMWDEHOH262%<262%<B),=<&=1(L262%<B35$:1(.D*G\UHNRUG]WDEHOL
262%<MHVW]ZL]DQ\]UHNRUGHP]WDEHOL262%<B),=<&=1(DOER262%<B35$:1(
nigdy z dwoma na raz.
3R]DIXQNFMRQDOQRFLRSLVDQSRZ\*HMGR7$3,PR*QDGRGDZDüVZyMZáDVQ\NRGMDNRÄUser logic´:áDVQRüWDMHVWZ\NRU]\VWDQDSU]H]5XOH)UDPHGRSRGáF]HQLDZ\ZRáDIXQNFML&$3,
:\ZRáDQLD IXQNFML &$3, V ZSLV\ZDQH GR UHSR]\WRULXP DXWRPDW\F]QLH SU]H] QDU] G]LD
RuleFrame.
Tomasz Kazimierski
=DU]G]DQLHWUDQVDNFMDPL
=DU]G]DQLH WUDQVDNFMDPL ]RVWDáR ]DLPSOHPHQWRZDQH MDNR JHQHU\F]Q\ SDNLHW ED]RGDQRZ\
ZVSyOQ\GODZV]\VWNLFK&$3,]DZLHUDMF\XVáXJLRWZDUFLD]DPNQL FLDWUDQVDNFML]DSDPL W\ZDQLD
UHJXá SRWU]HEQ\FK SRGF]DV WUDQVDNFML QD VWRVLH WUDQVDNFML Z\NRQDQLH UHJXá RGURF]RQ\FK SU]\
]P\NDQLX WUDQVDNFML 3U]HG RPyZLHQLHP SRV]F]HJyOQ\FK XVáXJ NRQLHF]QH MHVW ZSURZDG]HQLH
SRM FLDSR]LRPXZ\NRQDQLDUHJXá
3R]LRPZ\NRQDQLDUHJXá
.D*GDPRG\ILNDFMDED]\GDQ\FKRGE\ZD VL Z NRQWHNFLH WUDQVDNFML ED]RGDQRZHM :HZQWU]
WUDQVDNFMLPR*HQDVWSLüMHGQDEG(ZLHOHPRG\ILNDFMLMHGQHMEG(ZLHOXWDEHO
1. 5HJXá\ PRJ ]RVWDü Z\NRQDQH GOD ND*GHJR PRG\ILNRZDQHJR UHNRUGX :yZF]DV PyZLP\
*HZ\NRQDQLHUHJXáQDVW SXMHQDSR]LRPLHZLHUV]D
2. ,QQH UHJXá\ PRJ Z\PDJDü Z\NRQDQLD SR ND*GHM PRG\ILNDFML 0yZLP\ ZWHG\ *H
Z\NRQDQLHUHJXáQDVW SXMHQDSR]LRPLHSROHFHQLD
3. , Z NRFX Z\NRQDQLH UHJXá PR*H RGE\ZDü VL GOD FDáHM WUDQVDNFML F]\OL QD SR]LRPLH
transakcji.
,VWQLHM UHJXá\ NWyUH PRJ E\ü Z\NRQ\ZDQH W\ONR QD SR]LRPLH WUDQVDNFML 3U]\NáDGHP MHVW
SUREOHP ]DPyZLHQLD ] FR QDMPQLHM MHGQ OLQL REOLJDWRU\MQ\ NOXF] REF\ $OH RGZURWQLH ND*GD
UHJXáD NWyUD PR*H E\ü Z\NRQDQD QD SR]LRPLH ZLHUV]D EG( SROHFHQLD PR*H ]RVWDü UyZQLH*
Z\NRQDQDQDSR]LRPLHWUDQVDNFML6WGSRGF]DVNRQVWUXNFML5XOH)UDPHSU]\M WR]DVDGX*\FLDW\ONR
WHJRSR]LRPXGODZ\NRQDQLDUHJXá3RGHMFLHWDNLHPDGRGDWNRZH]DOHW\
1. :\NRQDQLH UHJXá ]DZV]H W\ONR QD MHGQ\P SR]LRPLH F]\QL NRG SURVWV]\P L EDUG]LHM
F]\WHOQ\P 'R WHJR QLH WU]HED SRGHMPRZDü ]D ND*G\P UD]HP GHF\]ML JG]LH GDQ UHJXá
]DLPSOHPHQWRZDü
2. 0R*OLZD MHVW VSyMQD REVáXJD Eá GyZ 3RQLHZD* ZV]\VWNLH UHJXá\ ]RVWDQ VSUDZG]RQH GOD
WUDQVDNFMLPR*QDXQLNQüV\WXDFMLNLHG\X*\WNRZQLNMHVWLQIRUPRZDQ\RND*G\PSUREOHPLH
z osobna.
8VáXJLPHFKDQL]PX]DU]G]DQLDWUDQVDNFMDPL
= ]DáR*HQLD R Z\NRQDQLX UHJXá QD SR]LRPLH WUDQVDNFML Z\QLND *H PHFKDQL]P PXVL E\ü Z\SRVD*RQ\ Z XVáXJL ]DSHZQLDMFH ]ELHUDQLH LQIRUPDFML R UHJXáDFK NWyUH WUDQVDNFMD PXVL
Z\NRQDü6WGF]WHU\XVáXJLPHFKDQL]PX
• Otwieranie transakcji
2WZDUFLHWUDQVDNFMLMHVWNRQLHF]QHGODSUDZLGáRZHJRG]LDáDQLD5XOH)UDPH
: SU]\SDGNX X*\FLD DSOLNDFML Z QDU] G]LDFK WDNLFK MDN 2UDFOH )RUPV NWyUH V ZLDGRPH
WUDQVDNF\MQRFL SU]HWZDU]DQLD PR*QD Z\NRU]\VWDü ]GHILQLRZDQH WDP PHFKDQL]P\ GOD RWZDUFLD L
]DPNQL FLDWUDQVDNFML1DSU]\NáDG]LH)RUPVE G]LHWRSDUDZ\]ZDODF]\35(&200,7L3267
)250&200,7PRG\ILNDFMDNODV\ZáDVQRFLELEOLRWHNLRELHNWRZHMZSURZDG]LWDNLNRGGRFDáHM
aplikacji).
3U]\ X*\FLX LQQ\FK QDU] G]LDFK QD NRG NOLHQWD VSDGD NRQLHF]QRü RWZDUFLH WUDQVDNFML -HOL
MHGQDN NOLHQW QLH GRNRQD WHJR MDZQLH SU]\ SLHUZV]\P GRVW SLH GR GDQ\FK Z\NRQDQLX 7$3,
transakcja zostanie automatycznie otwarta.
• =ELHUDQLHGDQ\FKRUHJXáDFK
8VáXJD WD MHVW DXWRPDW\F]QLH Z\ZRá\ZDQD SU]H] NRG &$3, 6áX*\ GR ]DSLVDQLD LQIRUPDFML R
NRQLHF]QRFLVSUDZG]HQLDUHJXá\
• Zamykanie transakcji
CDM 5XOH)UDPHQRZDMDNRüWZRU]HQLDDSOLNDFMLWUyMZDUVWZRZ\FK
359
'ODZV]\VWNLFKSR]\FML]DSLVDQ\FKQDVWRVLHUHJXáZ\ZRá\ZDQHVRGSRZLHGQLHIXQNFMH&$3, LPSOHPHQWXMFHUHJXá\-HOLSRMDZLá\VL Eá G\]RVWDQRQH]ZUyFRQHMDNRZ\MWHNGRSURJUDPX
PDFLHU]\VWHJR-HOLQLHZ\VWSLá\Eá G\VWHURZDQLHZUDFDGRSURJUDPXPDFLHU]\VWHJRNWyU\PR*H
WHUD]]DWZLHUG]Lü]PLDQ\
• Anulowanie transakcji
&]\FLVWRVUHJXáLZ\FRIXMH]PLDQ\
3U]HFLZG]LDáDQLHSU]HGSRU]XFHQLHPWUDQVDNFML
3U]\ SRPRF\ RGURF]RQ\FK ZL ]yZ ED]RGDQRZ\FK ]RVWDá ]DLPSOHPHQWRZDQ\ PHFKDQL]P
]DSHZQLDMF\*HND*GDRWZDUWDWUDQVDNFMDPXVL]RVWDü]DPNQL WDOXEDQXORZDQD0HFKDQL]PWHQ
G]LDáDZ\áF]QLHZED]LHGDQ\FKLMHVWDEVROXWQLHQLH]DOH*Q\RGNRGXDSOLNDFMLX*\WNRZQLND']L NL
QLHPX ED]D GDQ\FK PR*H SU]HFLZG]LDáDü Eá GRP DSOLNDFML SROHJDMF\FK QD SRU]XFHQLX WUDQVDNFML
PHFKDQL]PX ]DU]G]DQLD WUDQVDNFMDPL DOER QLHNRQWURORZDQHPX ]DWZLHUG]HQLX PRG\ILNDFML EH]
Z\ZRáDQLDXVáXJL]DPNQL FLDWUDQVDNFML
Ten sam mechanizm zapewnia anulowanie transakcji przy wycofaniu zmian.
CAPI
&$3, MHVW WZRU]RQH MDNR SDNLHW\ 3/64/ GOD ND*GHM WDEHOL ED]RGDQRZHM ]QDMGXMFHM VL SRG
NRQWURO5XOH)UDPH
3URFHV WZRU]HQLD &$3, MHVW RSDUW\ R GRNXPHQWDFM UHJXá EL]QHVRZ\FK GRNRQDQ Z
UHSR]\WRULXPZID]LHDQDOL]\5HJXá\VZyZF]DV]DSLV\ZDQHMDNRIXQNFMHEL]QHVRZH
6NáDGRZH&$3,
.D*GDUHJXáDEL]QHVRZDMHVWLPSOHPHQWRZDQDMDNRWU]\SRGSURJUDP\ZSDNLHFLH&$3,
• )XQNFMDVSUDZG]DMFDF]\UHJXáDPXVLE\üZ\NRQ\ZDQD
=DGDQLHPWHMIXQNFMLMHVWVSUDZG]HQLHF]\PHFKDQL]P]DU]G]DQLDWUDQVDNFMLE G]LHPXVLDáZ
SU]\SDGNX ELH*FHM PRG\ILNDFML Z\PXV]Dü UHJXá -HOL WDN RGSRZLHGQLD LQIRUPDFMD ]RVWDQLH
XPLHV]F]RQDQDVWRVLHUHJXá
3U]\NáDGIXQNFML
function need_br_ord001_tpl
return boolean
is
begin
return g_inserting
or
( g_updating
and
(
g_clr_orders_ind.delivery_date
or
g_clr_orders_ind.orderdate
)
);
end need_br_ord001_tpl;
• )XQNFMDZ\NRQXMFDUHJXá
7XWDM QDVW SXMH IDNW\F]QH Z\NRQDQLH UHJXá\ Z SU]\NáDG]LH MHVW WR W\ONR VSUDZG]HQLH -HOL
VSUDZG]DQLHNRF]\VL VXNFHVHP]ZUDFDQDMHVWSUDZGD
Tomasz Kazimierski
function br_ord001_tpl
( p_order_date in date
,p_delivery_date in date
) return boolean
is
begin
return p_order_date < p_delivery_date -4
end br_ord001_tpl;
• 3URFHGXUDREVáXJL]HZQ WU]QHM
3URFHGXUDMHVWZ\ZRá\ZDQDSU]H]PHFKDQL]P]DU]G]DQLDWUDQVDNFML
3U]\NáDG
procedure br_ord001_tpl
is
begin
if not
br_ord001_tpl
( g_clr_orders_row.orderdate
,g_clr_orders_row.delivery_date )
then
qms_transaction_mgt.push_message(<message_code>,’E’);
end if;
end br_ord001_tpl;
.RG &$3, MHVW VNáDGRZDQ\ Z UHSR]\WRULXP WDP WH* GRNXPHQWRZDQ\ MHVW ]ZL]HN NRGX ]
funkcjami biznesowymi z etapu analizy.
8VáXJLRELHNWRZH
-HGQ\P]Z\PDJDGODPHFKDQL]P\E\áDRGSRUQRüNRGXLPSOHPHQWXMFHJRUHJXá\QD]PLDQ\PRGHOX
GDQ\FKLVDP\FKUHJXá
2GSRUQRüWDPR*H]RVWDüX]\VNDQDSRSU]H]Z\NRU]\VWDQLHWHFKQLNRELHNWRZ\FKSU]\GRVW SLHGRGDQ\FK
SU]\ NRQVWUXRZDQLX SRGSURJUDPyZ &$3, 2GZRáDQLD GR GDQ\FK SRZLQQ\ WX QDVW SRZDü SU]\ SRPRF\
VNáDGRZ\FKRGSRZLHGQLHJRSDNLHWX7$3,]DPLDVWSRSU]H]EH]SRUHGQLHRGZRáDQLDGRWDEHO7$3,FKRüQLH
MHVW VDPR ]DLPSOHPHQWRZDQH MDNR RELHNW VWDMH VL PHFKDQL]PHP NDSVXáNRZDQLD L XNU\ZDQLD ]DWHP
XPR*OLZLDSLVDQLHNRGXZVSRVyERELHNWRZ\
Automatyzacja tworzenia CAPI
-HGQ]JáyZQ\FK]DOHWX*\FLD7$3,&$3,MHVWPR*OLZRüDXWRPDW\F]QHMJHQHUDFMLNRGX
-HOLXGDáRE\VL ZVSRVyEIRUPDOQ\XGRNXPHQWRZDüUHJXá\ZUHSR]\WRULXPJHQHUDWRUPyJáE\
X*\ü WHM GHILQLFML GR XWZRU]HQLD NRGX &$3, 3U]\NáDGHP M ]\ND RSLVXMFHJR UHJXá\ MHVW 2&/
(Object Constraint Language), jest on proponowanym rozszerzeniem UML.
1DU] G]LD 5XOH)UDPH V Z\SRVD*RQH Z PHFKDQL]P\ JHQHUDFML NRGX &$3, RUD] IUDJPHQWyZ
7$3,RGSRZLHG]LDOQ\FK]DLQWHJUDFMH]&$3,.RGMHVWJHQHURZDQ\EH]SRUHGQLRGRUHSR]\WRULXP
:DUVWZDGRVW SXGRGDQ\FK
'RVW SGRGDQ\FKPR*HVL RGE\ZDüQDMHGHQ]SRQL*V]\FKVSRVREyZ
• 3RSU]H]Z\NRQ\ZDQLH]GD'0/]NRGXDSOLNDFML3U]\SRPRF\Z\]ZDODF]\ED]RGDQRZ\FK
]ZL]DQ\FK]7$3,XUXFKDPLDQ\MHVWPHFKDQL]P5XOH)UDPH
• 3RSU]H]EH]SRUHGQLHZ\ZRá\ZDQLHVNáDGRZ\FK7$3,
• 3RSU]H]Z\ZRáDQLHVNáDGRZ\FK0$3,PRGXOH$3,NWyUHGDOHMZ\ZRáXM7$3,
CDM 5XOH)UDPHQRZDMDNRüWZRU]HQLDDSOLNDFMLWUyMZDUVWZRZ\FK
361
• 3RSU]H] ZDUVWZ GRVW SX GR GDQ\FK 9$3, 9$3, MHVW WR ]ELyU SHUVSHNW\Z ZUD] ]
Z\]ZDODF]DPL W\SX ,167($'2) XNU\ZDMF\ SU]HG DSOLNDFM X*\WNRZQLND PHFKDQL]P
RuleFrame.
5XOH)UDPHQLHZ\PXV]DX*\FLH9$3,MHGQDNMHVWWRGURJD]ZLHOXZ]JO GyZQDMZ\JRGQLHMV]D
VAPI
1DMSURVWV]\PSU]\NáDGHP9$3,MHVWSHUVSHNW\ZDRVWUXNWXU]HLGHQW\F]QHM]WDEHOED]RGDQRZ
$E\ ]DSHZQLü *H '0/ E G]LH SU]HFKRG]Lá SU]H] SURFHGXU\ 7$3, NRQLHF]QH MHVW ]GHILQLRZDQLH
Z\]ZDODF]\ED]RGDQRZ\FKNWyUHZ\ZRáDMRGSRZLHGQLHIXQNFMH
3U]\NáDGZ\]ZDODF]D,167($'2)
create or replace trigger hsd_v_dep_io
instead of delete or insert or update
on hsd_v_departments
begin
declare
cg$rec cg$hsd_departments.cg$row_type;
cg$ind cg$hsd_departments.cg$ind_type;
cg$pk cg$hsd_departments.cg$pk_type;
begin
if inserting or updating
then
cg$rec.id:= :new.id;
cg$rec.name:= :new.name;
cg$rec.location:= :new.location;
end if; -- inserting or updating
if inserting
then
cg$ind.id:= true;
cg$ind.name:= true;
cg$ind.location:= true;
cg$hsd_departments.ins(cg$rec, cg$ind);
end if; -- inserting
if updating
then
cg$ind.id:= updating('id');
cg$ind.name:= updating('name');
cg$ind.location:= updating('location');
cg$hsd_departments.upd(cg$rec, cg$ind);
end if; -- updating
if deleting
then
cg$pk.id:= :old.id;
cg$hsd_departments.del(cg$pk);
end if; -- deleting
end;
end hsd_v_dep_io;
3HUVSHNW\ZD]áR*RQD
3UDZG]LZ]DOHWD]DVWRVRZDQLD9$3,MHVWGRSLHURX*\FLHSHUVSHNW\ZRSDUW\FKR]áF]HQLHZLHOX
WDEHO0R*QDZWHQVSRVyEEXGRZDüGRVW SGRGDQ\FKQLH]DOH*QLHRGSUDZG]LZHMLFKVWUXNWXU\
3U]\NáDGSHUVSHNW\Z\]áR*RQHM
create or replace force view hsd_v_emp_primary_address
(id
Tomasz Kazimierski
,name
,job
,hire_date
,dep_id
,street
,city
,zip_code
,country
)
as select
emp.id id,
emp.name name,
emp.job job,
emp.hire_date hire_date,
emp.dep_id dep_id,
adr.street street,
adr.city city,
adr.zip_code zip_code,
adr.country country
from hsd_employees emp
,hsd_addresses adr
where emp.id = adr.emp_id
and adr.seqno = 1
:\]ZDODF]H,167($'2)X*\ZDM7$3,REXWDEHOVNáDGRZ\FK
create or replace trigger hsd_v_emp_primary_address_io
instead of delete or insert or update
on hsd_v_emp_primary_address
begin
declare
cg$emp_rec cg$hsd_employees.cg$row_type;
cg$emp_ind cg$hsd_employees.cg$ind_type;
cg$emp_pk cg$hsd_employees.cg$pk_type;
cg$adr_rec cg$hsd_addresses.cg$row_type;
cg$adr_ind cg$hsd_addresses.cg$ind_type;
cg$adr_pk cg$hsd_addresses.cg$pk_type;
begin
if inserting or updating
then
cg$emp_rec.id:= :new.id;
cg$emp_rec.name:= :new.name;
cg$emp_rec.job:= :new.job;
cg$emp_rec.hire_date:= :new.hire_date;
cg$emp_rec.dep_id:= :new.dep_id;
cg$adr_rec.emp_id:= :new.id;
cg$adr_rec.seqno:= 1;
cg$adr_rec.street:= :new.street;
cg$adr_rec.city:= :new.city;
cg$adr_rec.zip_code:= :new.zip_code;
cg$adr_rec.country:= :new.country;
end if; -- inserting or updating
if inserting
then
cg$emp_ind.id:= true;
cg$emp_ind.name:= true;
cg$emp_ind.job:= true;
cg$emp_ind.hire_date:= true;
CDM 5XOH)UDPHQRZDMDNRüWZRU]HQLDDSOLNDFMLWUyMZDUVWZRZ\FK
363
cg$emp_ind.dep_id:= true;
cg$adr_ind.emp_id:= true;
cg$adr_ind.seqno:= true;
cg$adr_ind.street:= true;
cg$adr_ind.city:= true;
cg$adr_ind.zip_code:= true;
cg$adr_ind.country:= true;
cg$hsd_employees.ins(cg$emp_rec, cg$emp_ind);
cg$hsd_addresses.ins(cg$adr_rec, cg$adr_ind);
end if; -- inserting
if updating
then
cg$emp_ind.id:= updating('id');
cg$emp_ind.name:= updating('name');
cg$emp_ind.job:= updating('job');
cg$emp_ind.hire_date:= updating('hire_date');
cg$emp_ind.dep_id:= updating('dep_id');
cg$adr_ind.emp_id:=false;
cg$adr_ind.seqno:=false;
cg$adr_ind.street:= updating('street');
cg$adr_ind.city:= updating('city');
cg$adr_ind.zip_code:= updating('zip_code');
cg$adr_ind.country:= updating('country');
cg$hsd_employees.upd(cg$emp_rec, cg$emp_ind);
cg$hsd_addresses.upd(cg$adr_rec, cg$adr_ind);
end if; -- updating
if deleting
then
cg$emp_pk.id:= :old.id;
cg$adr_pk.emp_id:= :old.id;
cg$adr_pk.seqno:= 1;
cg$hsd_addresses.del(cg$adr_pk);
cg$hsd_employees.del(cg$emp_pk);
end if; -- deleting
end;
end hsd_v_emp_primary_address_io;
=DOHW\LZDG\X*\FLD9$3,MDNRZDUVWZ\GRVW SX
8*\FLH9$3,PDQDVW SXMFH]DOHW\
• 9$3, PR*H E\ü X*\ZDQH SU]H] ZV]\VWNLH QDU] G]LD GR WZRU]HQLD DSOLNDFML X*\WNRZQLND
G]L NLF]HPXLPSOHPHQWDFMDUHJXáSR]RVWDMHZMHGQ\PPLHMVFX
• ,VWQLHMFH DSOLNDFMH QLH Z\PDJDM *DGQ\FK PRG\ILNDFML GOD LQWHJUDFML ] 5XOH)UDPH MHOL
SHUVSHNW\Z\]RVWDQXWZRU]RQHQDSRGVWDZLHWDEHOEH]]áF]H
• 8*\FLH 9$3, F]\QL ZDUVWZ UHJXá FDáNRZLFLH SU]H]URF]\VW GOD NRGX DSOLNDFML NOLHQWD
3URJUDPLFLDSOLNDFMLNOLHQWDPRJE\üFDáNRZLFLHQLHZLDGRPLLVWQLHQLDWHMZDUVWZ\
• $E\ X*\ZDü ZDUVWZ\ UHJXá ] NRGX DSOLNDFML NOLHQWD QLH WU]HED SRVáXJLZDü VL 3/64/
'RVW SGRGDQ\FK]SXQNWXZLG]HQLDDSOLNDFMLRGE\ZDVL SU]\SRPRF\F]\VWHJR64/64/-
czy pakietu Oracle Business Components for JavaNWyU\X*\ZDZHZQ WU]QLH64/-
• 9$3,SR]ZDODEDUG]RGRNáDGQLH]DU]G]DüEH]SLHF]HVWZHPGDQ\FK
• 8*\FLHSHUVSHNW\Z9$3,GOD'0/L]DS\WDF]\QLNRGNOLHQWDSUDZG]LZLHEH]SLHF]Q\SU]HG
]PLDQDPLVWUXNWXUGDQ\FKOH*F\FKSRGVSRGHP
Tomasz Kazimierski
• 'RZROQH RSURJUDPRZDQLH LQQ\FK GRVWDZFyZ QL* 2UDFOH X*\ZDMFH VWDQGDUGRZHJR 64/
PR*HáDWZRLQWHJURZDüVL ]ZDUVWZUHJXá
8*\FLH9$3,PDQDVW SXMFHZDG\
• .RG SHUVSHNW\Z PXVL ]RVWDü XWZRU]RQ\ L XWU]\P\ZDQ\ Z UHSR]\WRULXP LVWQLHMH
automatyczny mechanizm jego generacji).
• *HQHUDWRU:HE2UDFOH'HVLJQHUDQLHZVSLHUDEH]SRUHGQLR9$3,LVWQLHMHREHMFLHDE\JRGR
WHJR]PXVLü
• 8*\FLH9$3,NRPSOLNXMHURGRZLVNRED]RGDQRZH
'RVW SGRGDQ\FKSRSU]H]Z\]ZDODF]H7$3,
:\]ZDODF]H ED]RGDQRZH PRJ SRZVWDü SU]\ SRPRF\ JHQHUDWRUD VHUZHUD SRGF]DV JHQHUDFML
$3, 'OD ND*GHM WDEHOL SRZVWDMH GZDQDFLH Z\]ZDODF]\ GOD ND*GHM DNFML QD SR]LRPLH ZLHUV]D L
polecenia przed i po zdarzeniu).
:DG\L]DOHW\X*\FLDZ\]ZDODF]\7$3,MDNRZDUVWZ\GRVW SX
Zalety:
• :\]ZDODF]H 7$3, PRJ E \ü X*\ZDQH SU]H] ZV]\VWNLH QDU] G]LD GR WZRU]HQLD DSOLNDFML
X*\WNRZQLNDG]L NLF]HPXLPSOHPHQWDFMDUHJXáSR]RVWDMHZMHGQ\PPLHMVFX
• ,VWQLHMFHDSOLNDFMHQLHZ\PDJDM*DGQ\FKPRG\ILNDFMLGODLQWHJUDFML]5XOH)UDPH
• 8*\FLHZ\]ZDODF]H7$3,F]\QLZDUVWZ UHJXáFDáNRZLFLHSU]H]URF]\VWGODNRGXDSOLNDFML
NOLHQWD3URJUDPLFLDSOLNDFMLNOLHQWDPRJE\üFDáNRZLFLHQLHZLDGRPLLVWQLHQLDWHMZDUVWZ\
• $E\ X*\ZDü ZDUVWZ\ UHJXá ] NRGX DSOLNDFML NOLHQWD QLH WU]HED SRVáXJLZDü VL 3/64/
'RVW SGRGDQ\FK]SXQNWXZLG]HQLDDSOLNDFMLRGE\ZDVL SU]\SRPRF\F]\VWHJR64/64/-
czy pakietu Oracle Business Components for JavaNWyU\X*\ZDZHZQ WU]QLH64/-
• :\]ZDODF]H7$3,SR]ZDODMEDUG]RGRNáDGQLH]DU]G]DüEH]SLHF]HVWZHPGDQ\FK
• 'RZROQH RSURJUDPRZDQLH LQQ\FK GRVWDZFyZ QL* 2UDFOH X*\ZDMFH VWDQGDUGRZHJR 64/
PR*HáDWZRLQWHJURZDüVL ]ZDUVWZUHJXá
-HG\Q ZD*Q ZDG Z\]ZDODF]\ 7$3, Z VWRVXQNX GR 9$3, MHVW WR *H QLH MHVW WR IDNW\F]QLH
GRGDWNRZD ZDUVWZD L]ROXMFD NRG DSOLNDFML RG ORJLNL VNáDGRZDQHM Z ED]LH .RG DSOLNDFML
X*\WNRZQLNDGDOHM]DOH*\RG]PLDQZVWUXNWXU]HED]\
'RVW SGRGDQ\FKSRSU]H]SURFHGXU\7$3,
1LH PR*H E\ü UR]ZD*DQD MDNR Z SHáQL IXQNFMRQDOQD ZDUVWZD GRVW SX ]H Z]JO GX QD GX*
]áR*RQRüX*\FLDLX]DOH*QLHQLHGRPR*OLZRFLZ\ZRá\ZDQLDNRG3/64/-HG\Q\PSRZRGHPGOD
NWyUHJRMHVWRPDZLDQDMHVWX*\FLHWHJRVSRVREXSU]H]JHQHUDWRU:HE2UDFOH'HVLJQHUD
'RVW SGRGDQ\FKSRSU]H]SURFHGXU\0$3,
3RGREQLH MDN SURFHGXU\ 7$3, QLH PHWRGD GRVW SX SRSU]H] SURFHGXU\ 0$3, QLH PR*H E\ü
XZD*DQD Z SHáQL ]D ZDUVWZ GRVW SX GR GDQ\FK : SRUyZQDQLX GR 7$3, PD W ]DOHW *H
XPR*OLZLD SU]HWZDU]DQLH FDá\FK PDFLHU]\ UHNRUGyZ ]DPLDVW SRV]F]HJyOQ\FK UHNRUGyZ 0HWRGD
PR*HE\üX*\WDSU]\JHQHUDFML)RUPV]'HVLJQHUD
Zastosowanie Business Components for JAVA
Business Components for -$9$%&-MHVWQDU] G]LHPXPR*OLZLDMF\PHIHNW\ZQHUR]ZLMDQLH
SU]HQRQ\FKLHODVW\F]Q\FKDSOLNDFMLED]RGDQRZ\FK
CDM 5XOH)UDPHQRZDMDNRüWZRU]HQLDDSOLNDFMLWUyMZDUVWZRZ\FK
365
=DVWRVRZDQLH 5XOH)UDPH ] ZDUVWZ GRVW SX ]DLPSOHPHQWRZDQ SU]H] 9$3, PR*H áDWZR
SRVáX*\ü GR LQWHJUDFML ] -$9 SU]\ SRPRF\ %&- 2ELHNW\ NODV\ -$9< RGSRZLDGDMFH
SHUVSHNW\ZRP9$3,VWDQRZLGRVNRQDá\RELHNWRZ\LQWHUIHMVGRGDQ\FKZED]LH2UDFOH
1DU] G]LD
3RGVWDZRZ\P QDU] G]LDPL SRWU]HEQ\PL GR EXGRZ\ 5XOH)UDPH MHVW 2UDFOH 'HVLJQHU RUD]
Headstart.
+HDGVWDUW MHVW SDNLHWHP QDU] G]L VWZRU]RQ\P SU]H] NRQVXOWDQWyZ 2UDFOH GRZLDGF]RQ\FK Z
X*\FLX 2UDFOH 'HVLJQHUD ZH ZV]\VWNLFK ID]DFK SURMHNWX : MHJR VNáDG ZFKRG] PL G]\LQQ\PL
QDU] G]LDGRJHQHUDFMLNRG&$3,7$3,RUD]9$3,7ZyUF\+HDGVWDUW6DQGUD0OOHU/DXUL%R\GL
6WHYHQ'DYHODDUVUyZQRF]HQLHDUFKLWHNWDPL5XOH)UDPH
Bibliografia
1.
CDM Standards and Guidelines Library: Vol.2 Generation of Multi-Tier Web Applications 2.
Headstart Oracle Designer - CDM RuleFrame