BEA logo

BEA到台灣、BEA在台灣

星期四, 四月 21, 2005

在WebLogic Portal中,如何讓每個user看到不同的look and feel?

在使用Portal的時候,讓user可以自己選擇版面的風格,或是利用不同的風格,來做一些使用者感覺上的區隔,算是再普通不過的需求了。例如,當一個 user登入系統之後,我們用程式去判斷使用屬於哪個群組,如果是內部員工,就給他藍色的版面,字體清晰;如果是外部的客戶,我們可能就利用很多圖片,和 比較活潑的顏色,把畫面弄得花俏一些,以吸引客戶的注意。

在WebLogic Portal中,要做到這樣的功能,牽涉到幾件事情:
1. 要有多組的look and feel用來切換<--廢話 2.Portal必須在streamed mode下執行,file mode是做不到的 3.使用Backing file的機制,讓user在login之後,利用程式切換桌面look and feel的設定 其中,關於2的部分,如果您不清楚什麼是streamed mode,什麼又是file mode,請參考http: //edocs.bea.com/wlp/docs81/lookandfeel/lookandfeel.html#999682。 關於3的部分,如果您不清楚什麼是Backing file,請到http://edocs.bea.com搜尋backing file這個詞,把相關的文件多看看,就會比較瞭解。基本上,他就是一個java程式,在JSP之前執行。也就是說,如果我們寫了一支JSP,然後把這個 JSP變成portlet,接著又給這個portlet指定了backing file。那麼當這個頁面要呈現的時候,server會先去執行這個backing file,在這個backing file中,我們可以設定一些屬性,這樣當JSP要呈現畫面的時候,就可以根據這些屬性,去做一些調整。 以本例來說,我們利用signin.jsp程式來做login的動作,可是在這個jsp的背後,有一支SigninBacking.java,在 backing file中,我們去讀取user的屬性,然後把屬於該user的look and feel設定好,接著才是JSP,根據backing file設定好的條件,呈現在畫面上。 多說無益,這邊提供一個完整的範例,總共三個壓縮檔都要下載,裡面都是原始程式碼,大家回去自行研究一下吧。 [下載LAFViewlets.zip]
這 是該如何測試這整套look and feel切換的範例程式的說明,都是動畫。在看動畫之前,你必須先建立一個全新的portal domain,然後利用workshop建立一個全新的portal application,裡面在建立一個portal web project。因為這個套件會覆蓋掉一些原有的檔案,因此一定要用全新的環境來測試,否則原來的檔案被蓋掉遺失,我可不負責。

[下載 LAFTestKit_WebApp.zip] 這是測試套件的一部份,裡面有兩套look and feel,一個是改過的default look and feel,另一套是叫做sdp winter look and feel,相關需要的圖檔也都在裡面。此外,這裡面還包括一個signin.jsp以及SigninBacking.java的backing file

[下載LAFTestKit_UserProfile.zip]
這 裡面只包含一個檔案,其實就是當你產生一個portal application的時候,那個data資料夾中,系統自動幫你建立的CustomerProperties這個user profile。套件中包含的,只是把原來的profile,加上一個叫做LookAndFeel的property,如此而已。

===
接 下來的說明,你一定要先把範例執行過,才知道我在說什麼。接下來我們就看程式。其實signin.jsp是一支再簡單不過的程式了,所以根本不需要看。 唯一要看的,就是SigninBacking.java,而這個backing file真正需要看的,也就只有49~71行中間而已,其他的不是重點。關鍵的指令在68行,我們要update desktop的instance,其中有一個參數,就是傳入look and feel的id,就是從這邊,我們得以重新設定user所使用的look and feel。但是為了要執行這個method,還有其他的參數要輸入,因此,49~57行就是在取得url的path資訊,記住,是streamed mode的url,不是file mode的url喔!59~64行,就是去抓剛剛登入的這個user的CustomerProperties的LookAndFeel這個 property的value。

其實就是這樣而已,沒什麼。如果你想更進一步知道updateDesktopInstance這個方法裡 面做了什麼,如果你的WebLogic Portal版本是8.1 SP4,你可以在你的portal web project的WEB-INF\src下面找找,可以找到PortalVisitorManager的原始碼。SP3應該也有。

其實這 個就是從visitorTools裡面擷取出來的功能啦。visitorTools不知道是什麼嗎?注意看一下你的portal web project,裡面不是都有個叫做visitorTools的目錄嗎?這是個讓user可以自己客製自己的portal的工具。又該怎麼用?請參考 http://e-docs.bea.com/workshop/docs81/doc/en/portal/buildportals/visitorToolsAdd.html

弄 懂之後,相信你的腦中應該浮現出各式各樣的應用方式,例如我不用user profile來讀取屬性,而是去讀取日期,當聖誕節前後,我就換上聖誕節的look and feel。或是我可以再做一個頁面,讓使用者自己來選擇他要套用的look and feel...等等。就WebLogic Portal來說,動態套用不同的look and feel,是一個複雜但是並不難的工作,如果能把這些關係搞懂,那麼將來對portal的操控就會更加得心應手。

以上的程式,在WebLogic Portal 8.1 SP3, SP4測試過。作業系統,Windows XP SP2.

1 Comments:

張貼意見

Links to this post:

建立連結

<< Home