夏永壽
【摘 要】信息化建設(shè)是指自己的企業(yè)品牌利用現(xiàn)代計(jì)算機(jī)信息技術(shù)來(lái)支撐品牌管理的手段和過(guò)程。隨著計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)和通信技術(shù)的發(fā)展和應(yīng)用,企業(yè)信息化已成為企業(yè)品牌實(shí)現(xiàn)可持續(xù)化發(fā)展和提高市場(chǎng)競(jìng)爭(zhēng)力的重要保障。目前,國(guó)內(nèi)的信息化建設(shè)正在迅猛發(fā)展,許多的企業(yè)、政府、機(jī)構(gòu)、單位等都已建立起了自己的信息化組織架構(gòu)體系,并開(kāi)發(fā)出一系列信息化軟件管理系統(tǒng)來(lái)形成持續(xù)的信息化管理體制,支撐組織戰(zhàn)略目標(biāo)和業(yè)務(wù)的持續(xù)發(fā)展。
【關(guān)鍵詞】Liferay;企業(yè)門(mén)戶;開(kāi)發(fā)應(yīng)用
一、企業(yè)門(mén)戶
企業(yè)門(mén)戶就是一個(gè)聯(lián)接企業(yè)內(nèi)部和外部的網(wǎng)站,它可以為企業(yè)提供一個(gè)單一的訪問(wèn)企業(yè)各種信息資源的入口,企業(yè)的員工、客戶、合作伙伴和供應(yīng)商等等都可以通過(guò)這個(gè)門(mén)戶獲得個(gè)性化的信息和服務(wù),來(lái)完成企業(yè)自身的業(yè)務(wù)需求。企業(yè)門(mén)戶可以無(wú)縫地集成企業(yè)的內(nèi)容、商務(wù)和社區(qū):首先,通過(guò)企業(yè)門(mén)戶,企業(yè)能夠動(dòng)態(tài)地發(fā)布存儲(chǔ)在企業(yè)內(nèi)部和外部的各種信息;其次,企業(yè)門(mén)戶可以完成網(wǎng)上的交易;此外,企業(yè)門(mén)戶還可以支持網(wǎng)上的虛擬社區(qū),網(wǎng)站的用戶可以相互討論和交換信息。
企業(yè)門(mén)戶可以為企業(yè)的信息系統(tǒng)提供穩(wěn)定的、可伸縮和可靠的基礎(chǔ)和框架結(jié)構(gòu)。與傳統(tǒng)的電子商務(wù)相比,企業(yè)門(mén)戶的特點(diǎn)在于:多數(shù)企業(yè)的IT系統(tǒng)是由多個(gè)分散的內(nèi)部和外部的IT系統(tǒng)構(gòu)成的,企業(yè)門(mén)戶可以將這些系統(tǒng)集成起來(lái),從而更好地實(shí)現(xiàn)電子商務(wù)的功能;許多現(xiàn)有的商務(wù)站點(diǎn)都不能處理遺留系統(tǒng),企業(yè)門(mén)戶可以解決大型企業(yè)的遺留系統(tǒng)與電子商務(wù)應(yīng)用集成的一系列問(wèn)題;由于具有個(gè)性化的功能,因此可以為最終用戶提供更加直觀、易用的界面,并且能簡(jiǎn)化用戶的使用并節(jié)省時(shí)間。
企業(yè)從傳統(tǒng)的運(yùn)營(yíng)方式轉(zhuǎn)移到基于互聯(lián)網(wǎng)的電子商務(wù)是大勢(shì)所趨,而企業(yè)門(mén)戶則是充分考慮到企業(yè)面臨的特殊情況的電子商務(wù)系統(tǒng),企業(yè)可以充分利用原有的在IT方面的投資,迅速建立起個(gè)性化的電子商務(wù)系統(tǒng)——企業(yè)門(mén)戶,滿足企業(yè)用戶的需求,從而在激烈的市場(chǎng)競(jìng)爭(zhēng)中立于不敗之地。
二、門(mén)戶開(kāi)發(fā)現(xiàn)狀
當(dāng)前的信息化建設(shè)得益于計(jì)算機(jī)領(lǐng)域新技術(shù)的飛速發(fā)展,建設(shè)速度非常驚人。從傳統(tǒng)web開(kāi)發(fā)到現(xiàn)在的大數(shù)據(jù),云計(jì)算,云服務(wù),分布式技術(shù),人工智能等流行技術(shù),信息化技術(shù)得到了前所未有的進(jìn)步。很多的企業(yè)建立了自己信息化部門(mén)或者聘請(qǐng)實(shí)力雄厚的技術(shù)公司來(lái)打造自己的信息化平臺(tái)。目前企業(yè)的開(kāi)發(fā)方式主要有:自主研發(fā):這種方式適合于有一定實(shí)力的企業(yè),自己打造一個(gè)信息化隊(duì)伍來(lái)自己研發(fā),成本會(huì)比較高;外包:這種方式適合于所有的企業(yè),把開(kāi)發(fā)任務(wù)交給外包公司來(lái)完成,自己只需要將需求告訴給外包商;自主研發(fā)加外包:這種方式適合于小型企業(yè),主要開(kāi)發(fā)任務(wù)交給外包商,后期維護(hù)和修改等由自己來(lái)完成;購(gòu)買(mǎi):通過(guò)購(gòu)買(mǎi)成型的信息系統(tǒng),這種方式適合于已經(jīng)成熟通用的企業(yè)。
三、Liferay開(kāi)發(fā)應(yīng)用介紹
Liferay是一個(gè)開(kāi)源的二次開(kāi)發(fā)平臺(tái),它提供了一個(gè)強(qiáng)大的平臺(tái),可以快速構(gòu)建您的網(wǎng)站,并為所有客戶(無(wú)論是臺(tái)式機(jī)、移動(dòng)設(shè)備或兩者之間的任何設(shè)備)提供服務(wù);它提供了您在網(wǎng)站上運(yùn)行所需的所有標(biāo)準(zhǔn)應(yīng)用程序;它為新應(yīng)用程序或定制。除此之外,Liferay Portal是由世界各地的人使用開(kāi)源方法開(kāi)發(fā)的。該代碼庫(kù)是可靠的,在不同行業(yè)的關(guān)鍵任務(wù)部署中被證明是可靠和穩(wěn)定的。在開(kāi)發(fā)企業(yè)自己的門(mén)戶網(wǎng)站的過(guò)程中,你有多少次必須從頭開(kāi)始?可能和啟動(dòng)新項(xiàng)目的次數(shù)差不多,因?yàn)槊看文粌H要編寫(xiě)構(gòu)建項(xiàng)目的代碼,還要編寫(xiě)支持項(xiàng)目的底層代碼。一次又一次地寫(xiě)同一種代碼從來(lái)不是一種好的體會(huì)。但是一段時(shí)間后你所做的每一個(gè)新項(xiàng)目都會(huì)有這樣的體會(huì):你在寫(xiě)一套新的數(shù)據(jù)庫(kù)表,一套新的API,一套新的CSS類和HTML,一套新的js函數(shù)。
如果有一個(gè)平臺(tái)提供了一組基線特性,讓您在所有重復(fù)的代碼上有了一個(gè)良好的開(kāi)端,可以讓你正確使用你的應(yīng)用程序或網(wǎng)站的功能,而不是讓你每次都用基本的構(gòu)建塊重新開(kāi)始?有這樣一個(gè)東西,它被稱為L(zhǎng)iferay門(mén)戶。它是開(kāi)放源碼的,并強(qiáng)調(diào)遵循標(biāo)準(zhǔn);它基于Java EE,并充分利用OSGi和Java平臺(tái)上的幾種其他流行技術(shù)。 OSGi(Open Service Gateway Initiative)技術(shù)是Java動(dòng)態(tài)化模塊化系統(tǒng)的一系列規(guī)范。OSGi一方面指維護(hù)OSGi規(guī)范的OSGI官方聯(lián)盟,另一方面指的是該組織維護(hù)的基于Java語(yǔ)言的服務(wù)(業(yè)務(wù))規(guī)范。 簡(jiǎn)單來(lái)說(shuō),OSGi可以認(rèn)為是Java平臺(tái)的模塊層。它基于模塊化體系結(jié)構(gòu),并有助于遵循你自己項(xiàng)目的模塊化開(kāi)發(fā)范式;可以在上面構(gòu)建自己的Web應(yīng)用程序、portlet或移動(dòng)應(yīng)用程序;它提供了成熟的開(kāi)發(fā)工具,同時(shí)保持不可知性,這樣您就可以使用自己喜歡的工具;這一切都是關(guān)于重用、提供可重用的框架和庫(kù)以及允許你創(chuàng)建自己的框架和庫(kù)。Liferay的目標(biāo)是為我們的開(kāi)發(fā)人員和用戶提供最新、易于使用和穩(wěn)定的平臺(tái)來(lái)構(gòu)建服務(wù)。
在其基礎(chǔ)上,Liferay是一個(gè)JavaEE應(yīng)用程序,它還包括一個(gè)OSGi容器。這提供了兩個(gè)世界中最好的:訪問(wèn)世界上最強(qiáng)大和功能最全的企業(yè)平臺(tái),以及世界上功能最全和最穩(wěn)定的模塊化容器的好處?,F(xiàn)在,您可以在動(dòng)態(tài)的、基于組件的環(huán)境中開(kāi)發(fā)和部署企業(yè)級(jí)、可擴(kuò)展的基于Web和移動(dòng)的應(yīng)用程序。
1.模塊化開(kāi)發(fā)
Liferay為許多不同類型的客戶提供服務(wù)。這些目標(biāo)現(xiàn)在已經(jīng)達(dá)到了Liferay歷史上最遠(yuǎn)的程度,這都是因?yàn)槲覀兊男履K化架構(gòu)。好處是任何時(shí)候都不需要重新部署整個(gè)應(yīng)用程序或關(guān)閉服務(wù)器,只需要更改和重新部署需要更改的一小部分功能,而不是整個(gè)應(yīng)用程序。
※Modules:所有基于Liferay的新應(yīng)用程序、擴(kuò)展和定制都是以模塊化方式構(gòu)建的。模塊是模塊化體系結(jié)構(gòu)中的單個(gè)分發(fā)和部署單元。
※Services:Liferay的服務(wù)是OSGi聯(lián)盟定義的標(biāo)準(zhǔn)服務(wù)。編寫(xiě)任何東西,無(wú)論是應(yīng)用程序、數(shù)據(jù)庫(kù)接口,甚至是您定義的“服務(wù)”,都很容易作為OSGi服務(wù)實(shí)現(xiàn),因?yàn)樗鼈兗葟?qiáng)大又易于開(kāi)發(fā)。
在Liferay的OSGi容器中運(yùn)行的許多組件構(gòu)成了一個(gè)互補(bǔ)服務(wù)的生態(tài)系統(tǒng)。Liferay的大部分功能都在組件中,當(dāng)您部署代碼時(shí),它與Liferay處于相同的生態(tài)系統(tǒng)中,具有相同的擴(kuò)展點(diǎn)。可以編寫(xiě)組件來(lái)提供新的服務(wù)或用自己的實(shí)現(xiàn)覆蓋現(xiàn)有的服務(wù),容器管理所有這些服務(wù)。
2.環(huán)境搭建
安裝環(huán)境:win10,JDK1.8,mysql5.6及以上
解壓安裝包后進(jìn)行如下操作:
(1) 新建liferay workspace
New->liferay workspace project
(2) gradle.properties中添加工作目錄
liferay.workspace.home.dir=D:\liferay-ce-portal-7.1.2-ga3
(3) 添加服務(wù)器,并指定bundle project為D:\liferay-ce-portal-7.1.2-ga3
(4) 初次啟動(dòng)點(diǎn)擊登錄進(jìn)行基本設(shè)置后,通過(guò)http://localhost:8080進(jìn)入主畫(huà)面。
(5)在資源文件中配置數(shù)據(jù)庫(kù)等訪問(wèn)鏈接,mysql中新建數(shù)據(jù)庫(kù)后,重新啟動(dòng)tomcat,生成所有l(wèi)iferay用到的數(shù)據(jù)庫(kù)表
3.開(kāi)發(fā)工具
可以使用任何標(biāo)準(zhǔn)工具集為L(zhǎng)iferay編寫(xiě)代碼。Liferay是一個(gè)工具不可知論者,而不是把你放在特定的東西上??梢宰杂傻厥褂靡呀?jīng)高效利用的任何東西。 Liferay還創(chuàng)建了自己的工具來(lái)簡(jiǎn)化Liferay門(mén)戶開(kāi)發(fā)。這些工具與流行的構(gòu)建環(huán)境(如Gradle和Maven)集成。它們包括Liferay Dev Studio CE,Blade CLI,Liferay Workspace,MAVEN,Liferay IntelliJ plugin等。
4.Portlet
Liferay門(mén)戶中的Web應(yīng)用程序稱為portlet。與許多Web應(yīng)用程序一樣,portlet處理請(qǐng)求并生成響應(yīng)。在響應(yīng)中,portlet返回內(nèi)容(例如HTML、XHTML)以在瀏覽器中顯示。portlet和其他Web應(yīng)用程序之間的一個(gè)關(guān)鍵區(qū)別是portlet運(yùn)行在Web頁(yè)面的一部分中。在編寫(xiě)portlet應(yīng)用程序時(shí),您只需關(guān)注該應(yīng)用程序:頁(yè)面的其余部分(導(dǎo)航、頂部橫幅和界面的任何其他全局組件)由其他組件處理。另一個(gè)區(qū)別是portlet只在門(mén)戶服務(wù)器中運(yùn)行。因此,portlet可以使用門(mén)戶對(duì)用戶管理、身份驗(yàn)證、權(quán)限、頁(yè)面管理等的現(xiàn)有支持。這使您可以專注于開(kāi)發(fā)portlet的核心功能。在許多方面,將應(yīng)用程序編寫(xiě)為portlet比編寫(xiě)?yīng)毩⒌膽?yīng)用程序更容易。
新建portlet可以選擇Eclipde->New->Liferay Module Project->輸入項(xiàng)目名->Use the Gradle Build type,選擇mvc-portlet來(lái)創(chuàng)建。
5.Service Builder
Liferay Service Builder是一個(gè)模型驅(qū)動(dòng)的代碼生成工具,允許定義稱為實(shí)體的自定義對(duì)象模型。ServiceBuilder通過(guò)對(duì)象關(guān)系映射(ORM)技術(shù)生成一個(gè)服務(wù)層,該技術(shù)在對(duì)象模型和底層數(shù)據(jù)庫(kù)的代碼之間提供了一個(gè)清晰的分離。這使得可以為應(yīng)用程序添加必要的業(yè)務(wù)邏輯。ServiceBuilder將XML文件作為輸入,并為應(yīng)用程序生成必要的模型、持久性和服務(wù)層。這些層提供了一個(gè)清晰的關(guān)注分離。ServiceBuilder生成了在數(shù)據(jù)庫(kù)上實(shí)現(xiàn)創(chuàng)建、讀取、更新、刪除和查找操作所需的大多數(shù)公共代碼,使得能夠?qū)W⒂诜?wù)設(shè)計(jì)的更高級(jí)別方面。創(chuàng)建方法:New->Liferay Module Project->service builder
6.安全認(rèn)證
Liferay的開(kāi)發(fā)框架提供了一個(gè)應(yīng)用程序安全平臺(tái),該平臺(tái)擁有多年的開(kāi)發(fā)經(jīng)驗(yàn)。您不需要為應(yīng)用程序提供自己的安全保護(hù)。相反,您可以使用Liferay的框架為應(yīng)用程序指定安全性。 除了應(yīng)用程序的安全性之外,還有許多方法可以通過(guò)自定義身份驗(yàn)證過(guò)程來(lái)擴(kuò)展默認(rèn)的安全模型。包括一下:
※資源、角色和權(quán)限
Liferay中角色有用戶 、站點(diǎn) 、組織架構(gòu) 、角色 、用戶組
分別是:Users、 Site、 Organization、 Role、 UserGroups
Users:用戶是Liferay portal中的關(guān)鍵實(shí)體,分別和站點(diǎn) / 組織架構(gòu) / 用戶組相互關(guān)聯(lián);用戶是組織架構(gòu)的一部分;一個(gè)用戶可以通過(guò)訪問(wèn)權(quán)限訪問(wèn)多個(gè)站點(diǎn);用戶包含的權(quán)限有站點(diǎn)級(jí)別,組織架構(gòu)級(jí)別,門(mén)戶級(jí)別3種作用域:
Site:一個(gè)Liferay portal可以有多個(gè)站點(diǎn);站點(diǎn)有點(diǎn)像一種容器,包含了web pages、 web contents、 role、web apps...;站點(diǎn)管理員可以添加pages, users, look and feel,還有一些定制開(kāi)發(fā)的插件(如portlets);用戶的訪問(wèn)權(quán)限受到 site role訪問(wèn)控制的限制
Organization:組織架構(gòu),一種樹(shù)形組織和人員邏輯關(guān)系;不同組織可以定義(屬于)不同站點(diǎn),但反之不行(即站點(diǎn)不能包含組織架構(gòu)),即Liferay的組織架構(gòu)是全局的,即只能有一套組織架構(gòu),在這之下,可以自由組織站點(diǎn);比如有集團(tuán)總部、北京分公司、天津分公司的架構(gòu),可以定義3個(gè)站點(diǎn),即集團(tuán)門(mén)戶、天津門(mén)戶、天津門(mén)戶,但只能有一套統(tǒng)一的組織架構(gòu)
Role – Permission:基于角色的權(quán)限;定義權(quán)限,用于訪問(wèn)某些頁(yè)面或者功能;一個(gè)Role由一組Permissions組成(Role in Liferay is having set of Permissions.);Role的作用域有Organization、Sites、Regular (Portal Level)?
User Group:就是“組”,由多個(gè)用戶組成;組是可以跨組織架構(gòu)部門(mén)的,比如“HR組”,人員可以是集團(tuán)總部的hr、也可以是北京分公司的hr,組成一個(gè)獨(dú)立于組織架構(gòu)的邏輯集合;用戶組可以和多個(gè)站點(diǎn)關(guān)聯(lián)。
※自定義SSO提供程序
※身份驗(yàn)證管道
※服務(wù)訪問(wèn)策略
※身份驗(yàn)證驗(yàn)證程序
7. Web API
有兩種方式可以連接liferay的web APIS
※Hypermedia REST APIs (beta):這些服務(wù)是以一種固定的方式設(shè)計(jì)和構(gòu)建的,因此與內(nèi)部模型分離。它們遵循著名的行業(yè)標(biāo)準(zhǔn),允許在不破壞客戶機(jī)的情況下改進(jìn)API。這是在Liferay門(mén)戶中使用Web服務(wù)的現(xiàn)代首選方式。
※Plain Web/REST Services:這是在Liferay門(mén)戶中構(gòu)建和使用Web服務(wù)的舊方法,但仍受支持。例如,您可以使用JAX-RS、JAX-WS或服務(wù)構(gòu)建器來(lái)實(shí)現(xiàn)純REST或SOAP Web服務(wù)。
8.Liferay主題及樣式
liferay可以為不同的頁(yè)面、社區(qū)、組織等提供不同的主題,方便實(shí)現(xiàn)用戶的個(gè)性化配置,同時(shí)liferay提供的IDE方便開(kāi)發(fā)人員進(jìn)行主題的個(gè)性化開(kāi)發(fā)。用戶可以安裝Liferay Theme Generator,創(chuàng)建主題,發(fā)布主題,開(kāi)發(fā)主題,布局模板,開(kāi)發(fā)portlet和主題,開(kāi)發(fā)Clay CSS和主題。Liferay的產(chǎn)品導(dǎo)航包括用于自定義、配置和導(dǎo)航系統(tǒng)的主菜單。編輯頁(yè)面、切換到其他網(wǎng)站范圍、訪問(wèn)用戶憑據(jù)等時(shí),將使用默認(rèn)的導(dǎo)航菜單。為默認(rèn)菜單提供自定義可以幫助您的Liferay實(shí)例獲得獨(dú)特的觸感。您可以根據(jù)需要擴(kuò)展和自定義默認(rèn)產(chǎn)品導(dǎo)航。有四個(gè)產(chǎn)品導(dǎo)航部分可以擴(kuò)展:產(chǎn)品菜單、控制菜單、模擬菜單和用戶個(gè)人菜單。
9.移動(dòng)開(kāi)發(fā)
Liferay提供兩種方法來(lái)創(chuàng)建與Liferay實(shí)例一起工作的本機(jī)Android和iOS應(yīng)用程序:Liferay屏幕和Liferay Mobile SDK。
Liferay屏幕通過(guò)名為screenlets的現(xiàn)成組件來(lái)實(shí)現(xiàn)這一點(diǎn)。因?yàn)槠聊灰呀?jīng)包含了調(diào)用Liferay實(shí)例所需的代碼——以及一個(gè)完整的用戶界面——您所需要做的就是在Android或iOS應(yīng)用程序中插入和配置它們。屏幕為常見(jiàn)任務(wù)(如登錄、查看Web內(nèi)容、添加DDL記錄等)提供屏幕。您還可以自定義每個(gè)屏幕以滿足您的特定需求,或者編寫(xiě)自己的屏幕。在幕后,屏幕使用Liferay Mobile SDK調(diào)用Liferay的遠(yuǎn)程服務(wù)。
Liferay Mobile SDK是一個(gè)較低級(jí)別的工具,允許您手動(dòng)調(diào)用Liferay的遠(yuǎn)程服務(wù)。您需要使用MobileSDK編寫(xiě)自己的屏幕,或者獨(dú)立于屏幕調(diào)用Liferay的遠(yuǎn)程服務(wù)。在大多數(shù)情況下,你會(huì)發(fā)現(xiàn)使用屏幕可以節(jié)省你的時(shí)間和精力。