Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
Trong bi u đ trên, root có 3 node con là a,b và c. M i node con có nhi u node con hay nhi u Property, ch ng h n node a có 2 con là d và e, node e có 2 property là j và k, Property j ch a m t hình nh và Property k ch a m t s th c.
B t k item nào trong c u trúc trên đ u có th đ c xác đnh b ng m t đ ng d n tuy t đ i. Ví d đ ng d n / ch đ n root, đ ng d n /a/d/i ch đ n 1 Property có giá tr là true. ng d n tuy t đ i luôn b t đ u v i / .
ng d n t ng đ i ch ra m t node hay m t property t m t node đã đ c xác đ nh tr c. Ví d : v i node /a trong bi u đ trên thì đ ng d n t ng đ i đ n property v i giá tr true là d/i, đ n property có giá tr -25 là ../c/h.
3. M t s API c b n
Toàn b Repository đ c đ i di n b i m t đ i t ng Repository. M t Client k t n i t i m t Repository b ng cách cung c p m t đ i t ng Credentials và xác đnh m t Workspace c th bên trong m t Repository. N u Credentials đ c thơng qua thì Client có th truy c p đ n m t Workspace đã xác đnh, sau đó Client s nh n m t Ticket.
Ví d :
// L y đ i t ng Repository
Repository repository = (Repository)java.rmi.Naming.lookup("MyRepo");
// L y đ i t ng Credentials
Credentials credentials = new SimpleCredentials("MyName", "MyPassword".toCharArray());
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
// L y m t Ticket
Ticket myTicket = repository.login(credentials, "MyWorkspace");
V i đ i t ng Ticket, Client có th truy c p đ n b t k m t Node hay Property nào trong cây c a Workspace đang truy c p :
// L y Node Root
Node root = myTicket.getRootNode();
// L y m t Node b t k v i đ ng d n tuy t đ i Node myNode = root.getNode("a/e");
// L y m t Property c a myNode
Property myProperty = myNode.getProperty("k");
// L y ra giá tr c a m t Property
Value myValue = m Poperty.getValue();
// Chuy n đ i m t Value v m t ki u nào đó double myDouble = myValue.getDouble();
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
3.1 Thao tác trên repository
Sau khi có m t Ticket, Client có th thao tác vào Repository b ng cách thêm hay xoá các node, property và thay đ i các giá tr c a các Property
Ví d :
Sau khi có m t node, Client có th thêm vào m t node con và thêm m t Property vào node con đó.
//Thêm m t Node con
Node newNode = myNode.addNode(“n”);
//Thêm m t Property
newNode.setProperty(“x”,”Hello”);
S thay đ i b i các ph ng th c c a Node và Property không tác đ ng ngay vào Workspace c a Repository. Các s thay đ i đó đ c l u gi t m th i cùng v i đ i t ng Ticket cho đ n khi ph ng th c Ticket.save ho c Node.save đ c g i
Ticket.save s c p nh t t t c s thay đ i t l n save tr c đó.
Ph ng th c Node.save(boolean shallow) l u toàn b cây con c a đ i t ng node (khi shallow = false) ho c ch l u các property c a node đó (khi shallow = true)
V m t t ng quát, Ticket là m t kho l u tr t m th i, t t c nh ng s thay đ i đ c th c hi n thông qua nh ng ph ng th c c a Ticket ho c gián ti p thông qua các ph ng th c c a Node và Property.
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
4. S liên h gi a Node, Property và Item
Do các Node và các Property có m t s ch c n ng chung nên các ph ng th c chung đ c đnh ngh a trong Interface Item.