&'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á

354

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.

358

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

360

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

362

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

364

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\+HDGVWDUW6DQGUD0OOHU/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