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