Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
13.4 Tính duy nh t c a các giá tr trong đ c t tri n khai Portlet Portlet
Các giá tr trong đ c t tri n khai sau ph i là duy nh t trong ph m vi c a đnh ngh a ng d ng Portlet (Portlet Application Definition):
• Tên Portlet : <portlet-name>.
• Ki u Portlet tùy ch n : <portlet-mode>. • Ki u c a s tùy ch n : <window-state>. • Thu c tính ng i s d ng : <name>.
Các giá tr trong đ c t tri n khai sau ph i là duy nh t trong ph m vi c a đnh ngh a Portlet (Portlet Definition):
• Giá tr kh i t o: <name>. • H tr ki u: <mime-type>. • Tham chi u: <name>.
• Tham chi u vai trò b o m t: <role-name>.
14. Th vi n các th Portlet
Th vi c các th Portlet dùng đ h tr cho các trang JSP khi đ c g i t Portlet có th truy nh p vào các thành ph n c a Portlet nh là : RenderRequest, RenderResponse…Các th vi n này c ng giúp cho các trang JSP có th truy c p vào các ch c n ng c a Portlet nh vi c t o ra các Portlet URL.
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
Các trang JSP khi s d ng các th vi n này c n ph i khai báo chúng trong th th vi n theo nh m u sau:
<%@ taglib uri=http://java.sun.com/portlet prefix=”portlet” %>
14.1 Th actionURL
Th actionURL t o ra m t URL tham chi u đ n Portlet hi n t i và th c thi m t s yêu c u v i các tham s kh i t o.
Các tham s này có th đ c thêm vào URL b ng cách nh p th param gi a th đóng và th m actionURL nh trong ví d sau :
<portlet:actionURL windowState=”maximized” portletMode=”edit”>
<portlet:param name=”action” value=”editStocks”/>
</portlet:actionURL>
14.2 Th renderURL
Th renderURL t o ra m t URL tham chi u đ n Portlet hi n t i và th c thi m t s yêu c u render v i các tham s kh i t o.
Các tham s này có th đ c thêm vào URL b ng cách nh p th param gi a th đóng và th m renderURL.
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
Ch ng 6 Chu n JSR 170
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
1. Gi i thi u v chu n JSR 170
Chu n JSR 170 dùng đ đ nh ngh a cách th c l u tr và truy xu t d li u. Có nhi u lo i d li u đ c h tr nh : h qu n tr c s d li u, h th ng t p tin c a h đi u hành, t p tin XML…Ngồi ra, chu n này cịn cung c p các API và các c ch đ chuy n đ i gi a các c s d li u c ng nh h tr cho vi c truy xu t c s d li u, nh : l u tr d li u theo c u trúc cây, qu n lý phiên b n d li u, l ng nghe s ki n x y ra trên c u trúc l u tr d li u, không cho truy c p vào d li u…
Phiên b n hi n t i c a chu n JSR 170 là 0.16.2 đ c đ a ra b i Day Management AG vào ngày 25/01/2005. (http://jcp.org/en/jsr/detail?id=170). Hình v sau mơ t cách th c giao ti p c a JSR 170 v i các h c s d li u. Hình 18: Chu n JSR 170 giao ti p v i c s d li u Repository DBMS Repository File System Repository XML
Phát tri n CMS module cho h th ng Intranet cu Cơng ty TMA
2. Mơ hình repository
M t JCR (Java Content Repository) bao g m m t hay nhi u workspace, m i workspace là m t c u trúc cây g m nhi u item, m t item có th là m t node hay m t property, m i node có th khơng có con hay có nhi u con và khơng có property hay có nhi u property. Có duy nh t m t node khơng có cha g i là root. T t c các node ngo i tr root có ít nh t m t cha. Property có m t cha và khơng có con, đ c g i là lá c a cây. Property là m t đ n v n i dung nh nh t bao g m tên và giá tr t ng ng . D li u th c s đ c ch a đ ng trong giá tr c a property.
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.
Hình 20: M i liên h gi a Node, Property và Item
Bi u đ UML trên ch ra Property và Node là các SubInterface c a Item. M t Property có m t và ch m t Node cha, m t Node có th có m t hay nhi u Node cha và có nhi u Item con.
5. S s p x p các Item con
M t node đ c h tr s p th t ngh a là s t n t i 2 danh sách, m t cho các node con và m t cho các property. các node con và các property s không chung th t v i nhau.
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
Khi m t item con có th m c là n b xố kh i m t node có h tr s p th t thì t t c các item có ch m c l n h n n s b gi m đi 1 đ n v . Khi m t item đ c thêm vào mà không ch rõ ch m c, nó s t đ ng đ c thêm vào cu i danh sách.
6. Namespace
Gi ng nh XML, JCR c ng đ a ra khái ni m Namespaces đnh ngh a các ti n t tham chi u đ n các URI.Các ti n t này dùng cho vi c đ t tên các Item trong Repository đ ng th i tránh s trùng tên gi a các Node hay các Property trong các mã ngu n khác nhau.
M i JCR Repository đ u có m t đ i t ng NamespaceRegistry dùng đ th c hi n các thao tác liên quan đ n đ ng ký các Namespace.
Trong khi đ ng ký Namespace, m t s ti n t đ c t đ ng t o ra và khơng th xóa b đ c. Các ti n t đó là :
• jcr -> http://www.jcp.org/jcr/1.0 : Dùng cho vi c đ t tên các lo i Node có s n. Ví d : jcr: content.
• nt -> http://www.jcp.org/jcr/nt/1.0 : Dùng cho vi c đ t tên các lo i Node chính (primary node types).
• mix -> http://www.jcp.org/jcr/mix/1.0 : Dùng cho vi c đ t tên các lo i Node ph (mixin node types).
• pt -> http://www.jcp.org/jcr/pt/1.0 : Dùng cho vi c đ t tên các Property và s d ng trong vi c chuy n n i dung c a Repository sang d ng th c XML.
• sv -> http://www.jcp.org/jcr/sv/1.0 : Dùng trong khung nhìn System View khi chuy n n i dung c a Repository sang d ng th c XML.
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
7. Property
7.1 Property đa tr
Trong m t s tr ng h p, m t property có th ch a nhi u giá tr . i u này tùy thu c vào ki u c a node cha.
truy xu t các giá tr c a m t property, ta s d ng ph ng th c Property.getValues(), ph ng th c này tr v m t m ng các đ i t ng Value ch a các giá tr c a Property.
Các giá tr ch a trong property đa tr đ u có chung m t ki u.
7.2 Các ki u d li u c a Property Có 9 ki u d li u c a Property đ c đ nh ngh a b ng các h ng s trong l p PropertyType. Bao g m : PropertyType.STRING PropertyType.BINARY PropertyType.DATE PropertyType.LONG PropertyType.DOUBLE PropertyType.BOOLEAN PropertyType.NAME PropertyType.PATH PropertyType.REFERENCE
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
Các ki u STRING, BINARY, LONG, DOUBLE, BOOLEAN c a Property t ng t nh các ki u string, binary, long, double, boolean đ c đnh ngh a trong package java.lang c a Java.
7.2.1 Ki u Date
nh d ng c a d li u có ki u Date ph i theo chu n ISO 8601 :
YYYY - MM - DDThh:mm:ss.sssTZD. Trong đó : YYYY 4 ch s bi u di n n m MM 2 ch s bi u di n tháng ( t 01 đ n 12 ) DD 2 ch s bi u di n ngày ( t 01 đ n 31 ) hh 2 ch s bi u di n gi ( t 00 đ n 23 )
(không cho phép bi u di n d ng am/pm) mm 2 ch s bi u di n phút ( t 00 đ n 59 )
ss.sss 5 ch s bi u di n gi v i sai s l y 3 ch s th p phân ( t 00.000 đ n 59.999 )
TZD Time Zone Designator
7.2.2 Ki u Reference, Path và Name
Property có ki u Name dùng đ ch a các thu c tính a namespace, nó là m t giá tr ki u string ch a m t ph n c a namespace.
Property có ki u Path đ i di n cho m t đ ng d n trong m t workspace bao g m c đ ng d n tuy t đ i và t ng đ i. Path khơng ph i là ki u tham chi u, nó có th ch a m t đ ng d n ch đ n m t Item không t n t i trong workspace.
Phát tri n CMS module cho h th ng Intranet cu Cơng ty TMA
Property có ki u Reference dùng đ tham chi u đ n m t node trong workspace. Giá tr c a property này là m t UUID c a node mà nó tham chi u. Nó khơng cho phép xóa b t k m t node nào có trong đích đ n c a nó. N u mu n xố node, tr c tiên ph i xoá các tham chi u đ n node đó.
8. Node
8.1 Quan h gi a các node cùng tên và cùng cha ( Same-Name Siblings ) Siblings )
M t node có th ch p nh n các node khác có cùng cha và cùng tên v i nó. Trong tr ng h p này, m t đ ng d n không xác đnh duy nh t m t node mà là m t m ng các node. Ch m c c a các node trong m ng các node này có th b thay đ i khi ta xóa hay thêm m t node m i vào.
Ph ng th c chu n đ l y v t p h p các Node là
Node.getNodes(String namePattern). Ph ng th c này tr v m t m ng các node con c a đ i t ng Node.
Khác v i node, m t property có th có nhi u giá tr ch khơng t n t iquan h này.
8.2 Các ki u c a Node
Nét đ c bi t c a JCR là kh n ng h tr ki u cho node.
Ki u node quy đnh các Node con hay các Property mà Node đó có th có ho c b t bu c ph i có.
Phát tri n CMS module cho h th ng Intranet cu Cơng ty TMA
• Name: tên c a ki u . JCR quy đnh s n m t s ki u bao g m các ki u node chính có tên b t đ u v i “nt:” và các ki u node ph có tên b t đ u v i “mix:”.
• Supertype: m i ki u node có th là m r ng c a m t hay nhi u ki u node khác và ki u node đ c m r ng là Supertype c a ki u node m r ng. • Property Definitions: m i ki u node quy đ nh m t t p các thu c tính mà
Node có ki u này có th có hay b t bu c ph i có. ng th i ki u node c ng quy đnh nh ng đ c đi m mà các thu c tính này ph i có, nh ng đ c đi m này g i là Property Definition.
• Child Node Definitions: m i ki u node quy đ nh m t t p các Node con mà Node có ki u này có th có hay b t bu c ph i có. ng th i ki u node c ng quy đnh nh ng đ c đi m mà các Node con c a Node này ph i có, nh ng đ c đi m này g i là Node Definition.
• Mixin Status: JCR quy đnh m i ki u node ch có th là ki u node chính hay ki u node ph ..
Phát tri n CMS module cho h th ng Intranet cu Công ty TMA
8.2.1 Ki u node chính và ki u node ph
JCR quy đnh m i Node b t bu c ph i có m t và ch m t ki u node chính và ki u node chính này s quy đnh nh ng đ c đi m c a các Node con và các thu c tính mà Node có ki u này có th có.
Ngồi m t ki u node chính duy nh t, JCR cịn cho phép m i Node có th có nhi u ki u node ph dùng đ đnh ngh a thêm nh ng đ t tính mà Node có th có. Ki u node chính đ c l u trong giá tr c a thu c tính jcr:primaryType và ki u Node ph đ c l u trong giá tr c a thu c tính jcr:mixinTypes. Do m i Node có th có nhi u ki u node ph nên thu c tính jcr:mixinTypes là thu c tính đa tr
Ki u node nt:base là Supertype cu m i ki u node chính trong Repository
8.2.2 Property definitions
M i Property Definition c a ki u node ch a các thơng tin sau:
• Name: tên c a thu c tính. • Type: ki u thu c tính.
• Value constraints: mi n giá tr đ c gi i h n cho thu c tính.
• Default value: gíá tr m c đnh c a thu c tính khi thu c tính đ c t o ra mà không xác đnh rõ giá tr .
• Auto-created: cho bi t thu c tính có t đ ng đ c t o ra khi Node s h u lo i Node đ c t o ra hay khơng.
• Mandatory: cho bi t thu c tính là b t bu c ph i có trong Node hay khơng.
Phát tri n CMS module cho h th ng Intranet cu Cơng ty TMA
• On-parent-version: tr ng thái c a thu c tính dùng đ cho bi t nh ng gì s