前言
如果你是開發者
你已經是多少次開發一個項目,一次次的用一些框架,一次次的寫類似的重復的代碼,一次次建表\寫類和方法\寫HTML\CSS\JAVASCRIPT,一次次測試,一次次的寫Bug。。。
如果有一個平台,提供基線的框架,可以是應用程序\網站,支持移動端,不必一次次開發無法重用,一次次造就信息孤島。
那么試試Liferay。 很多的應用開箱即用,如CMS\博客\企業協作\動態表單\良好的組織架構和權限體系。
先別急着上船,你得接受和適應Liferay的擴展框架體系,比如Portlet,還有應用程序顯示模版的機制,這有些代價,但對於真正的JavaEE開發者,並不會困難,另外你還會學到另你獲益終身的設計模式思想,OK,想好了就上船吧,這必將是愉快的旅程。
如果你是IT主管
可能選型選擇開源不容易,哪怕是Liferay如此成功的產品,實際上Liferay的企業服務費用不算低,要節省成本用社區版,必然要有好的開發服務團隊。
這必須非常謹慎,誠然,Liferay還有軟肋,這個是其產品定位造成的,比如:
- 工作流較弱,它集成的兩個BPM都偏弱,而工作流是中國企業門戶或OA應用的核心,必然要集成更強大的BPM進來,如Activiti;
- 還有中國式的組織架構;
- 項目數據遷移,比如員工,組織架構數據;
- 和其他系統的集成;
- 還有一些中國式的操作習慣改造;
國內的甲方公司很難有這樣的開發實力,這需要技術和耐力相結合,雖然只是開發連接器插件,但做好並不容易,開發技能棧必須全面。
言歸正傳,介紹Liferay的企業特性。
Liferay7架構 :

模塊:

權限和認證體系
Liferay支持 權限、組、用戶、團隊、組織架構 的權限控制體系,詳情見上一篇文章:http://www.cnblogs.com/starcrm/p/5919294.html 。
支持的用戶認證方式:
- Liferay自帶認證
- LDAP
- SSO
- CAS
- NTLM
- OpenId
- Crowd
- Open SSO
- SiteMinder
- Shibboleth
- SAML
開發擴展方式
Liferay幾乎什么都可以定制。應用程序接口可以重新設計,整個用戶界面可以定制為主題,菜單項可以添加或刪除...
所有的應用程序及擴展,是建立在liferay自定義分布式部署模塊(典型的jar文件),用Java開發人員熟悉的方式開發,編譯,定義模板,資源,和一些元數據。
它遵循一套非常強大的標准稱為OSGi。多模塊可以相互依賴、相互溝通,實時部署,不用重啟服務器(熱部署)。
模塊可以有一個或多個組件。創建一個組件和Java類開發一樣簡單。
一個組件是一個更大的應用程序的最小的構建塊,並且應用程序本身是由許多小的組件組成的,就是以重復使用的堆積木的方式開發系統。
組件由組件容器管理,該容器提供安裝和激活。組件提供服務,通過一個強大的依賴管理系統,在運行時自動處理。
您可以編寫組件以提供新的服務或以重寫現有的服務,容器管理所有一切。Liferay是一個激動人心的平台,使開發人員更高效。
擴展方式介紹:
- OSGi Modules
- 建立Liferay Portal Web應用程序最常用的方法是用一個portlet;
- 利用Liferay的移動SDK,開發移動應用;
- 開發主題(theme);
- 開發MVCPortlet
可以使用現有框架,如Struts、Spring。使用Service Builder,很容易創建后台數據庫表、對象關系映射。
它還可以生成JSON或SOAP的Web服務,為開發者提供完整的開發元素用於存儲和檢索數據,用於Web或移動客戶端。
工作流
Liferay自身支持的BPM工作流:
1 、Kaleo,集成Liferay表單的內置工作流,極簡單,沒有圖形設計器;
2 、jBPM3, 現在都6.4版了,有點跟不上時代;
另外還有兩個外接集成插件:
集成Activiti5.11版:https://github.com/emdev-limited/activiti-liferay ,功能還不夠完善,已經3年沒有更新;
集成Bonita BPM:http://www.bonitalife.org ,Bonita 也是一款強大的BPM,這個插件還待試用評;
Activiti是完全實現BPMN 2.0規范的工作流引擎,它對比jBPM的優勢是輕量級,容易集成,可單機或集群部署。
目前Activiti支持的數據庫:
- DB2
- H2
- Oracle
- MySQL
- MS SQL
- PostgreSQL
Activiti的集成開發方式有:
- Standalone JDBC :通過Portlet方式,加入Activiti的jar包,直接集成;
- Spring:通過Spring MVC方式集成;
- JTA:對J2EE異構分布式數據源的集成開發;
- Web API:通過restful接口進行集成;
所有的開發重點在UI的集成、用戶權限的集成、單點登錄、流程設計器、控制面板、和Liferay表單的集成,待辦已辦待閱面板開發,工程較大。
目前Activiti只有用戶組、用戶上級、用戶三種權限概念(用於流程節點分配);
擴展更復雜更集成業務系統的權限機制的方案:http://www.kafeitu.me/activiti/2012/04/23/synchronize-or-redesign-user-and-role-for-activiti.html
一些企業擴展
企業社交代理
通過整合OAuth服務作為一個HTTP代理服務器的應用程序,該插件為您的應用程序提供了一個安全的令牌,可以將類似的網站推特,LinkedIn、微信;

圖表插件
https://web.liferay.com/zh/marketplace/-/mp/application/48919330

一個使用 Liferay 和 Lucene 實現企業門戶智能幫助機器人的方法
很有意思
http://www.ibm.com/developerworks/cn/java/j-lo-LiferayLucene/index.html
企業門戶智能幫助機器人總體架構圖

簡易敏捷插件
https://web.liferay.com/zh/marketplace/-/mp/application/44480388


用戶反饋插件
https://web.liferay.com/zh/marketplace/-/mp/application/56687742
相冊插件
https://web.liferay.com/zh/marketplace/-/mp/application/48594640
https://web.liferay.com/zh/marketplace/-/mp/application/52543103
MongoDB CRUD 簡單應用插件
features.
1. Insert New Record (in Collection/Table).
2 Update inserted records.
3. Delete Single/Multiple Record(s).
4. Sorting (Ascending/Descending)
5. Searching (AND search / OR search)
https://web.liferay.com/zh/marketplace/-/mp/application/56256837

集成導入插件
https://web.liferay.com/zh/marketplace/-/mp/application/76233767
使用這個Web服務插件,你可以從其他平台導入內容到Liferay中
更多插件
在應用商店:地址鏈接
選擇Liferay的好處是除了自帶的強大功能,和海量商店應用,它還是可以靈活開發擴展的平台。
