30

progressokulu.com Advanced Business Language Slide 7

Embed Size (px)

DESCRIPTION

"ABL'e Giriş Eğitimi" nde kullandığımız 7. Bölüm sunumudur.

Citation preview

Page 1: progressokulu.com Advanced Business Language Slide 7
Page 2: progressokulu.com Advanced Business Language Slide 7

Bölüm 7 : Transaction Yönetimi

Bu dersi tamamladığımız zaman şunları yapabileceksiniz;

• Bir transaction tanımlamak• Veritabanı bütünlüğünü tanımlamak• Bir transaction’ın nerede başlayıp nerede bittiğini bilmek• Transaction’ların ne zaman etkin olduklarını bilmek• Varsayılan transaction kapsamını değiştirmek

Page 3: progressokulu.com Advanced Business Language Slide 7

Transaction: Ya Hep Ya Hiç

Page 4: progressokulu.com Advanced Business Language Slide 7

Bir Transaction İçinde Veritabanını Güncellemek

REPEAT:. . .

CREATE Customer.. . .END.

Transaction

Page 5: progressokulu.com Advanced Business Language Slide 7

Veri Bütünlüğünü Korumak

REPEAT:. . .

CREATE Customer.. . .END.

REPEAT:. . .

CREATE Customer.. . .END.

Tamamlanmış Transaction (Ġkinci Customer kaydını ekle)

Tamamlanmamış Transaction (3. Customer kaydını ekle)

Veritabanı

SİSTEM

HATASI!

Page 6: progressokulu.com Advanced Business Language Slide 7

Neler Saklandı?

SİSTEM

HATASI!

Page 7: progressokulu.com Advanced Business Language Slide 7

Transaction Kapsamını Tanımlamak

. . .DEFINE VARIABLE iCount AS INTEGER NO-UNDO.REPEAT WHILE iCount < 3:CREATE Customer.DISPLAY CustNum.UPDATE Name EmailAddress Contact WITH 1 COLUMN.iCount = iCount + 1.

END.. . .

Transaction bloğu Doğrudan veritabanına yazılır

Page 8: progressokulu.com Advanced Business Language Slide 7

Transaction Kapsamı Nedir?

. . .

. . .FOR EACH Invoice WHERE Invoice.CustNum = iCustNum:MESSAGE "Are you sure you want to delete invoice#" invoice.invoicenum

"of customer #" invoice.custnum VIEW-AS ALERT-BOX BUTTONS YES-NO UPDATE lYesno.

IF lYesno THENDELETE Invoice.ELSE DO: /* DO statement #1 */MESSAGE "Cancelled deletion of invoice #" invoice.invoicenum .RETURN NO-APPLY.

END. /* End DO statement #1 */END. /* End FOR EACH Invoice3 */

FOR EACH Order WHERE Order.CustNum = iCustNum:. . .. . .

Page 9: progressokulu.com Advanced Business Language Slide 7

Bir LISTING Dosyasının Derlenmesi (COMPILE)

forOrder:

FOR EACH Order WHERE OrderNum < 5:

FOR EACH Customer OF Order:

DISPLAY Customer.NAME FORMAT "x(15)"

Ordernum FORMAT ">>9".

1 /***********************/

2 /* eTrans1.p */

3 /***********************/

4 forOrder:

5 1 FOR EACH Order WHERE OrderNum < 5:

6 2 FOR EACH Customer OF Order:

7 2 DISPLAY Customer.NAME FORMAT "x(15)"

8 2 Ordernum FORMAT ">>9".

COMPILE eTrans1.p LISTING eTrans1.lst.

Page 10: progressokulu.com Advanced Business Language Slide 7

Transaction Kapsamının Belirlenmesi

File Name Line Blk.Type Tran Blk.Label--------- ---- -------- ---- ---------eTrans1.p 0 Procedure No eTrans1.p 9 For No forOrderBuffers: Mysports.Order

eTrans1.p 10 For Yes Buffers: Mysports.CustomerFrames: Unnamed

Page 11: progressokulu.com Advanced Business Language Slide 7

TRANSACTION Fonksiyonunun Kullanımı

. . .

. . .FOR EACH Invoice WHERE Invoice.CustNum = iCustNum:MESSAGE "Are you sure you want to delete invoice#" invoice.invoicenum

"of customer #" invoice.custnum VIEW-AS ALERT-BOX BUTTONS YES-NO UPDATE lYesno.

IF lYesno THEN

FOR EACH Order WHERE Order.CustNum = iCustNum:. . .. . .

Bir transaction aktif

olduğunda çalışması

gereken kod

Transaction’ın aktif

OLMADIĞI durumda

çalışması gereken kod

IF TRANSACTION THEN response-if-true ELSE response-of-false

Page 12: progressokulu.com Advanced Business Language Slide 7

Transaction’ın Aktif Olup Olmadığını Sorgulamak

REPEAT: MESSAGE "A transaction" (IF TRANSACTION THEN "IS" ELSE

"IS NOT")"active in the outer REPEAT block," SKIP" before creating the Order" VIEW-AS ALERT-BOX.

CREATE Order.DISPLAY OrderNum OrderDate.UPDATE CustNum.

Page 13: progressokulu.com Advanced Business Language Slide 7

Uygulama 1 : Transaction Kapsamının Tespit Edilmesi

Page 14: progressokulu.com Advanced Business Language Slide 7

Transaction Kapsamının Özel Olarak Belirlenmesi

Belirtilmiş transaction kapsamı

. . .DO TRANSACTION:. . .. . .FOR EACH . . .

. . .

. . .END.. . .. . .

END.

Varsayılan Transaction Kapsamı

Page 15: progressokulu.com Advanced Business Language Slide 7

Varsayılan Transaction Kapsamının Değiştirilmesi

<start outer transaction-scoping block>. . .FOR EACH Customer

WHERE SalesRep = "RDR" TRANSACTION:

ASSIGN SalesRep = “DOS".

DISPLAY NAME SalesRep.

END.. . .

<end outer transaction-scoping block>

Game Set Match DOS

Lagt Kort Ligger DOS

Soccer Universe DOS

Play Sports DOS

Trans 1

Trans 2

Trans 3

Trans 4

Page 16: progressokulu.com Advanced Business Language Slide 7

Neler Kaydedildi?

SİSTEM

HATASI!

Veritabanı

Page 17: progressokulu.com Advanced Business Language Slide 7

Uygulama 2 : Varsayılan Kapsamla Kaydedilen Veri

Page 18: progressokulu.com Advanced Business Language Slide 7

Bir Transaction’ın Kapsamının Genişletilmesi

Orjinal Transaction Kapsamı

DO TRANSACTION:REPEAT:

. . .

. . .

. . .REPEAT:

. . .

. . .

END. /* Inner REPEAT block */END. /* Outer REPEAT block */

END. /* Transaction */

Yeni transaction kapsamı

Page 19: progressokulu.com Advanced Business Language Slide 7

Uygulama 3 : Artırılmış Kapsamla Kaydedilen Veri

Page 20: progressokulu.com Advanced Business Language Slide 7

Bir Transaction’ın Kapsamının Küçültülmesi

Daha küçük iki transaction kapsamı

REPEAT:DO TRANSACTION:

<Do task 1>. . .. . .

END. /* end first transaction */REPEAT TRANSACTION:

<Do task 2>. . .. . .

END. /* end second transaction */END. /* End REPEAT block */

Orjinal transaction kapsamı

Page 21: progressokulu.com Advanced Business Language Slide 7

Uygulama 4 : Küçültülmüş Kapsamla Kaydedilen Veri

Page 22: progressokulu.com Advanced Business Language Slide 7

Bir Alt-transaction ile Çalışmak

REPEAT: /* Start of the transaction */

PROMPT-FOR Order.OrderNum.. . .SET Order.PO.

REPEAT:. . .

SET Qty.. . .

END. /* Inner REPEAT block - subtransaction */

END. /* Outer REPEAT block – transaction */

Transaction Alt-transaction

Page 23: progressokulu.com Advanced Business Language Slide 7

Alt-transaction’ları Tanımlamak

Line Blk

---- ---

2 1 REPEAT: /* Start of the transaction */

3 1 PROMPT-FOR Order.OrderNum.

4 1 FIND Order WHERE OrderNum = INPUT Order.OrderNum.

5 1 DISPLAY OrderNum CustNum PO SalesRep.

6 1 SET Order.PO.

7 2 REPEAT:

8 2 FIND NEXT OrderLine OF order.

9 2 DISPLAY LineNum ItemNum Qty Price . . .

10 2 SET Qty.

11 2 DISPLAY Qty * Price LABEL "Total price".

12 1 END. /* FIND OrderLine block */

13 END. /* End of the transaction */

Ġlk düzey blok

Ġkinci düzey blok

Page 24: progressokulu.com Advanced Business Language Slide 7

Değişkenleri Saklamak

lbi4321

iVctr = 1

dNewPrice = 10.25

iLineNum = 16

Page 25: progressokulu.com Advanced Business Language Slide 7

Bir Trsansaction içinden Bir Alt-prosedur’ü Çağırmak

eRunTrans.p

eUpdOrder.p

Transaction Kapsamı

FOR EACH Order OF Customer:DISPLAY Order...UPDATE Carrier....

END.

REPEAT:PROMPT-FOR Customer.CustNum.FIND Customer USING CustNum.

...

UPDATE CreditLimit.....

RUN eUpdOrder.p (BUFFER Customer)....

END.

Page 26: progressokulu.com Advanced Business Language Slide 7

Uygulama 5 : Bir Transaction İçinden Bir Alt-procedur’ü Çağırmak

Page 27: progressokulu.com Advanced Business Language Slide 7

Neler Kaydedildi?

SİSTEM

HATASI!

Veritabanı

Page 28: progressokulu.com Advanced Business Language Slide 7

Uygulama 6 : Varsayılan Transaction Kapsamını Değiştirmek

Page 29: progressokulu.com Advanced Business Language Slide 7
Page 30: progressokulu.com Advanced Business Language Slide 7