Phát sin hs kin

Một phần của tài liệu xay dung cms module cho he thong intranet cua cong ty tma-lu (Trang 105 - 109)

11 .L ng Ngh eS Kin Trên Repository (Observation)

11.1 Phát sin hs kin

M t s ki n đ c phát sinh hay đ c kích ho t (Fired) khi có s thay đ i x y ra và s thay đ i này đ c c p nh t lên Repository. C ng c n nh c l i là có nh ng thay đ i ch x y ra t m th i và nh ng thay đ i t m th i này ch đ c c p nh t th c s lên Repository khi g i đ n ph ng th c save c a đ i t ng thay đ i t m th i.

Phát tri n CMS module cho h th ng Intranet cu Công ty TMA

S ki n s không đ c phát sinh khi nh ng thay đ i t m th i x y ra mà ch a đ c l u xu ng Repository. i v i nh ng ph ng th c mà khi th c hi n ph ng th c đó, n i dung c a Repository b thay đ i ngay l p t c (ch ng h n nh ng ph ng th c Workspace.copy hay Workspace.move) thì s ki n s đ c t o ra. Thông tin v s ki n đ c phát sinh có th tìm th y thơng qua các ph ng th c đ c khai báo trong giao di n javax.jcr.observation.Event.

11.2 Các lo i s ki n

M i lo i s ki n phát sinh có m t giá tr ki u long đ i di n và các giá tr này là các h ng s đ c đnh ngh a tr c trong giao di n javax.jcr.observation.EventType

javax.jcr.observation.EventType long ITEM_ADDED long ITEM_CHANGED long ITEM_REMOVED long ITEM_VERSIONED long ITEM_RESTORED long LABEL_ADDED long LABEL_REMOVED long ITEM_LOCKED long ITEM_UNLOCKED long LOCK_EXPIRED

Phát tri n CMS module cho h th ng Intranet cu Công ty TMA

Các lo i s ki n này có th phân thành các nhóm sau

• Nhóm s ki n liên quan đ n nh ng thay đ i trên các Item c a Repository, bao g m: ITEM_ADDED, ITEM_REMOVED, ITEM_CHANGED.

• Nhóm s ki n liên quan đ n vi c qu n lý phiên b n trên Repository, bao g m: ITEM_VERSIONED, ITEM_RESTORED, LABEL_ADDED, LABEL_REMOVED.

• Nhóm s ki n liên quan đ n vi c qu n lý khoá (Locking) trên Repository, bao g m: ITEM_LOCKED, ITEM_UNLOCKED, LOCK_EXPIRED .

11.3 i t ng l ng nghe và x lý s ki n

có th x lý các s ki n x y ra trên Repository, ng d ng c n ph i đ ng ký v i Repository đ i t ng dùng đ l ng nghe s ki n trên Repository. Các đ i t ng l ng nghe s ki n này ph i hi n th c hóa giao di n EventListener hay giao di n VetoableEventListener.

javax.jcr.observation.EventListener

void onEvent(Event event)

Ph ng th c này đ c g i khi s ki n x y ra.

javax.jcr.observation.VetoableEventListener

void onEvent(Event event)

Phát tri n CMS module cho h th ng Intranet cu Công ty TMA

i t ng EventListener đ c thông báo s ki n x y ra trên Repository m t cách b t đ ng b (asynchoronous). i u đó có ngh a là khi s ki n x y ra trong m t giao tác (transaction) và ch đ n khi giao tác đ c y nhi m thì đ i t ng EventListener m i đ c thông báo s ki n x y ra.

i t ng VetoableEventListener đ c thông báo s ki n x y ra trên Repository m t cách đ ng b (synchoronous). i u đó có ngh a là khi s ki n x y ra trong m t giao tác (transaction) thì ngay l p t c s ki n này s đ c thông báo đ n cho đ i t ng VetoableEventListener mà không c n ph i đ i đ n lúc submit giao tác. N u s ki n đã đ c đ ng ký b i đ i t ng VetoableEventListener v i Repository (có ngh a là ng d ng khơng mu n s ki n đó x y ra trên Repository khi ng d ng th c hi n) và trong m t giao tác, s ki n này l i x y ra thì khi th c hi n ph ng th c save đ c p nh t d li u xu ng Repository s phát sinh l i ActionVetoedException và khi đó giao tác này s đ c RollBack.

11.4 L a ch n s ki n đ l ng nghe

gi m s l ng s ki n mà m t đ i t ng nh n s ki n ph i l ng nghe trên Reporitory, khi đ ng ký đ i t ng nh n s ki n v i Reporitory, Ta có th t o thêm m t đ i t ng dùng đ l a ch n ch l ng nghe và x lý nh ng s ki n nào th c s c n thi t cho ng d ng đang xây d ng. i t ng này ph i hi n th c hóa giao di n EventSelector.

11.5 Các s ki n x y ra đ i v i m t hành đ ng trên Repository

11.5.1 Hành đ ng thêm m t Item

Khi m t Node hay m t Property m i đ c thêm vào Repository thì các s ki n sau s x y ra:

Phát tri n CMS module cho h th ng Intranet cu Cơng ty TMA

• S ki n ChangeEvent t ng ng v i Item m i đ c thêm vào. Trong đó ̇ getType() tr v EventType.ITEM_ADDED

̇ getItem() tr v Item v a đ c thêm vào ̇ getOldItem() tr v giá tr null

• S ki n ChangeEvent t ng ng v i Node cha. Trong đó ̇ getType() tr v EventType.ITEM_CHANGED

̇ getItem() tr v Node cha c a Item m i đ c thêm vào

̇ getOldItem() tr v b n sao c a Node cha tr c khi thêm Item

Một phần của tài liệu xay dung cms module cho he thong intranet cua cong ty tma-lu (Trang 105 - 109)

Tải bản đầy đủ (PDF)

(167 trang)