天天看點

Liferay:對Liferay架構的幾點分析總結

http://blog.csdn.net/smilingleo/article/details/1933541

一、JSP中如何使用Tab

Liferay的jsp頁面中,如果用了tab的選項,則tab1為第一層,tab2為第二層,tab3為第三層,從上到下,為父子關系。

如何開發一個帶選擇框的清單應用?

1、建立資料庫模型(廢話)

2、建立dao及相關portlet.service服務架構,接口和Util

3、實作服務接口;

4、開發對應的JSP頁面;

5、開發相應的Action;

6、在liferay中進行配置Portlet

這裡重點說一下如何開發JSP頁面的内容。

頁面一:初始化頁面init.jsp

引入需要的包,類以及一些初始化工作;

頁面二:查詢、顯示頁面 view.jsp, search.jsp,search_contents.jsp

可以根據group, article name進行查詢,查詢結果在同一個頁面中顯示,用帶選擇框的清單。

二、内置Portlet

有一些Portlet是内置的,并沒有在liferay-display.xml中配置進行顯示,但是卻會被其他Portlet引用,比如:ID:87, Layout Configuration; ID 88, Layout Management; ID 90:, Portal; ID 92:Messaging, ID 103:Tags Compiler, ID 113:Portlet CSS 

三、如何自動生成初始化資料?

在系統中,通過一些系統變量的設定,以及VM模闆的應用,可以通過DBBuilder來産生預設的系統初始化資料SQL,具體請參見DBBuilder, DBUtil.buildTemplate(), evaluateVM()的實作,以及portal-data-sample.vm

四、如何實作客戶化定制查詢?

portal-impl/classes/custom-sql/default.xml中定義自定義查詢的SQL清單,具體哪個子產品有對應的xml做定義,比如journal.xml,<sql id="查詢類的查詢方法">

五、資料結構分析

liferay中每個page(layout)的界面順序是通過layout表的priority,layoutId, parentLayoutId字段來确定的。

organization_表中存儲組織和場所,通過location=0 or 1來區分是組織還是場所;

usergroup 存儲使用者組,user group與community, organization, locations不同,僅僅是用來做實作管理的便捷性。比如,将使用者分組,然後對這個組進行配置設定角色,這樣所有組中的使用者就都有了該角色,在資料庫存儲中,通過usergrouprole的關聯,與users_roles并列。

group_表中存儲communities, organizations, user

role_表存儲所有角色,其中type_ = 1表示是正常角色, type_=2表示是communities角色

account_ company_ 一起儲存instance中存儲的資料;

user_表和contact_表:如果是自己注冊的使用者(或者系統自帶的預設使用者),則user_.userid = contact_.contactId - 1;如果是管理者建立的 contact_.userid = 建立人id;是以從另外一個角度來說,建立使用者的步驟應該是先在user_表中建立記錄,然後再到contact_表中插入;

使用者注冊,如果指定了一個組織的話,則會在注冊時users_orgs中插入對應記錄