與 IBM 對可存取性的承諾一致,本版產品說明文件是可存取的。
您可以從瀏覽器儲存此文件的本端副本。每一個瀏覽器的功能表和功能表選項不同。本端儲存文件時,如需協助,請參閱瀏覽器說明。
如果要提供關於此文件的建議與意見,請參閱提交建議與意見網站。
IBM® WebSphere® Portlet Factory 學習資源的更多鏈結。
將 WebSphere Portlet Factory Designer 整合至 Eclipse 開發環境。
WebSphere Portlet Factory Designer 是用於開發 Java 2 Platform Enterprise Edition (J2EE) Web 應用程式、Portlet 及要發佈至 IBM Lotus Mashups 之小組件的工具。
WebSphere Portlet Factory Designer 是 Eclipse 型整合開發環境 (IDE) 的外掛程式。 在 Eclipse 的 WebSphere Portlet Factory 視景中工作,您可以建立專案,在其下使用建置器及設定檔集來開發模型,並從那些模型產生結果 Web 應用程式。
每個建置器都具有精靈使用者介面,透過該使用者介面可以指定輸入。 建置器會自動產生或修改應用程式的某些部分。 設定檔集中的設定檔可讓您調整一個應用程式並產生多個版本,例如,不同人類語言或不同使用者群組的不同版本。
在模型中組合建置器,可實作使用者介面或資料服務。 如果您變更模型中建置器的輸入,則會重新產生應用程式碼。 重新產生程式碼可讓您重複開發應用程式。 建置器會產生所有必要的應用程式碼,包括 JSP、Java 類別及 XML 文件。 使用建置器來實作設計型樣,以協助疊代式開發。
IBM WebSphere Portal 伺服器架構會提供多個服務,例如頁面導覽及協同作業特性。
WebSphere Portlet Factory Designer 還可協助您建立新的建置器及設定檔。
在 WebSphere Portlet Factory Wiki 上,您可以找到安裝和開發應用程式相關的補充內容。 此 Wiki 非常活躍,因此您應該定期移出。
我們需要您分享您的專業知識! 註冊對此活躍的開發人員社群作出貢獻。
WebSphere Portlet Factory Designer 會提供所有特性及功能的上下文相關說明。 您可以使用數種方式來存取說明:
所有 WebSphere Portlet Factory Designer 視窗及對話框都會提供上下文相關說明,用來說明視窗或對話框所支援的作業。 若要檢視此說明,請將指標置於建立環境定義的視窗或對話框中,然後按 F1 鍵。
建置器呼叫編輯器會提供說明按鈕,可以用來存取建置器的配置說明。
WebSphere Portlet Factory 會將文件外掛程式安裝至「Eclipse 說明」系統。 此外掛程式在 Eclipse 說明引擎的環境定義內執行,而且可以從 Eclipse 說明功能表存取。 若要從 Eclipse 說明功能表存取 WebSphere Portlet Factory 說明,請按一下。 即會開啟「Eclipse SDK 說明」視窗。 在內容下,按一下 IBM WebSphere Portlet Factory Designer。
此版本的 IBM WebSphere Portlet Factory 提供許多新增特性。
已淘汰建置器之說明中的資訊,會建議採取哪些方法來替代這些不再可用的建置器(如果有的話)。
下列特性已新增至 WebSphere Portlet Factory Designer。
可以使用 WebSphere Portlet Factory 7.0.1 版。
如需 WebSphere Portlet Factory 7.0.1 版已解決的 APAR 清單,請參閱下列位置的修正程式清單。
已知問題記載在下列位置的 IBM 支援中心入口網站中。
http://www.ibm.com/support/entry/portal/Overview/Software/WebSphere/WebSphere_Portlet_Factory
一旦發現並解決問題之後,「IBM 支援中心」團隊便會更新知識庫。 搜尋知識庫可快速找到問題的暫行解決方法或解決方案。
下列鏈結會啟動「支援中心」知識庫的自訂查詢。
探索何種 WebSphere Portlet Factory 適合您的 Portlet 開發團隊。 學習主要 Portlet Factory 概念、如何執行主要作業、建立資料服務、開發 Portlet 使用者介面、除錯技術以及用於發佈的最佳實務, 將其進行匯總,以加速及自動化入口網站介面中元件的大部分正式作業。 此手冊的 7.0.0 版包括 7.0.0 版及 6.1.5 版新增特性的相關資訊,例如,使用佈景主題及使用者介面控制項、REST 服務支援、加強的豐富型使用者介面以及新圖形「設計」視圖。
WebSphere Portlet Factory 是功能強大且靈活的工具,用於快速建置服務導向架構頂層的 Portlet。 開發人員可以輕鬆快速地使用他們公司的核心資產,從而自動將它們組合至自訂且價值高的 Portlet。 使用 WebSphere Portlet Factory 建立的 Portlet 是動態且健全的 Java 2 Enterprise Edition (J2EE) 應用程式,會自動反應變更,並可以由商業使用者進一步進行即時修改,從而符合變更商業的需求,而無需對資產進行任何程式撰寫、複製或版本化。 由於不需要對所有這些實作及其變式進行程式碼撰寫, WebSphere Portlet Factory 可以簡化開發、發佈及變更管理程序,從而節省公司的時間及費用。
WebSphere Portlet Factory 的主要特性如下所示:
本節從架構開始提供 WebSphere Portlet Factory 的技術概觀。
架構堆疊的第一層是資料來源。 資料可以源自許多不同系統,其中包括資料庫、企業應用程式(例如 SAP)、Domino 之類的協同平台,以及產品(例如「SAP 商業倉儲」)的歷程或分析資料。
下兩層(服務及 Portlet)均可以使用 WebSphere Portlet Factory Designer 進行開發。 Designer 工具是 Eclipse 外掛程式,可以在 Eclipse 型產品(例如 Rational Application Developer)中無縫執行。
最下層是 WebSphere Portal 伺服器架構,其中提供金鑰服務,例如,頁面導覽及建立工具、單一登入功能、使用者管理、內建程序伺服器,及協同作業特性(例如,即時傳訊)。
使用 WebSphere Portlet Factory,開發人員會透過組合一系列稱為建置器的元件,建置 Portlet。 每個建置器都有類似精靈的簡式使用者介面,並執行自動產生或修改部分應用程式的工作。 建置器會實作應用程式設計型樣。
建置器可組合在模型中,類似於應用程式生產線。 每次在對模型中的任何建置器進行變更時,都會重新產生應用程式碼,從而允許開發人員反覆開發自訂 Portlet 應用程式。 某些建置器可以建立 WebApp 構件(例如頁面或表格),而其他建置器可以透過重新排列直欄、隱藏直欄或將直欄新增至表格,來修改先前的建置器所建立的構件。 建置器會產生所有應用程式碼,其中包括 JSP、Java 類別及 XML 文件。
此外,開發人員可以從一個程式碼庫建立多個 Portlet 變式,而無需變更或重新發佈其他程式碼。 這由 WebSphere Portlet Factory 的設定檔作業特性執行。 可以根據任何性質(例如區域、角色或群組成員資格),為不同使用者顧客群建立不同設定檔。 設定檔作業技術還可以用於支援執行時期配置,以便商業使用者可以透過簡式瀏覽器介面,來控制應用程式功能。 最終結果是, WebSphere Portlet Factory 可讓公司快速建立調適性應用程式,從而隨需回應變更,而這是某些傳統工具及技術所無法提供的。
建立您的新專案或升級現行專案之後,需要再完成一些步驟,以讓您的 Web 應用程式或小組件執行動作。
若要建立新模型,請按一下。
若要使用範例 Web 應用程式或小組件,請將「指導教學及範例」特性集併入專案,並使用「專案瀏覽器」來開啟 models/samples 資料夾中的其中一個檔案。
WebSphere Portlet Factory 提供豐富的使用者介面,可以編輯模型及設定檔,並可開發 Web 應用程式。
您可以在執行 WebSphere Portlet Factory Designer 時,使用IBM WebSphere Portlet Factory 視景。 此視景會提供特殊的功能表及其他特性,來支援編輯模型及建構 Web 應用程式。 按一下,以啟動此視景。 視窗的標題指出正在使用 WebSphere Portlet Factory 視景。 該視景使用 Eclipse 及 WebSphere Portlet Factory 視圖、「模型」編輯器及「設定檔」編輯器。
此視圖也可讓您在將多個設定檔套用至同一個模型時,管理設定檔的組合。 僅當在編輯區域中選取開啟的模型時,它才具有內容。 按一下,以顯示視圖。
您可以使用標準「Eclipse 內容」視圖,來檢查及變更模型中欄位的顯示及驗證設定。 按一下,以顯示視圖。
此 Wiki 是與產品中最佳實務相關的 IBM 及社群內容的儲存庫。 按一下,以顯示視圖。使用視圖功能表列中的下拉清單,可以變更視圖中最初顯示的內容。
「專案瀏覽器」是標準「導覽器」的加強版本。
「專案瀏覽器」對部分主要專案構件提供專案層次資料夾的存取權:Java 來源、模型及設定檔。 這些專案層次資料夾的提供是為了方便您使用 WEB-INF 目錄內資料夾中的檔案。 這樣排列資料夾可讓您存取構件,而無需展開該目錄。 若要使用這些資料夾中的檔案,請從特殊專案層次資料夾,或從專案檔案結構中資源實際所在的 WEB-INF 下的資料夾,導覽至那些檔案。
「專案瀏覽器」視圖會呈現一個樹狀型的目錄階層,顯示出組成現行專案的所有物件。 「專案瀏覽器」可讓您顯示 IBM WebSphere Portlet Factory 專案的完整樹狀結構、指定要在該樹狀結構中顯示的專案元件子集,以及對樹狀結構中選取的元素執行重構。 您可以瀏覽至物件 (例如模型或設定檔集) 並在其上按兩下,以開啟物件。 該物件即會顯示在適當的編輯器中。
「模型導覽器」視圖會呈現「專案瀏覽器」的子集,可讓您更輕鬆地存取專案中定義的模型及設定檔集。 按一下,以顯示視圖。
在這兩個視圖中,您可以展開階層及過濾顯示畫面。
若要重新命名模型或設定檔集,請使用指令。
Eclipse 及 Rational Application Developer 支援「專案瀏覽器」。 對於較早的 Eclipse 及 Rational Application Developer 版本提供模型、設定檔及 Java 來源的鏈結資料夾,讓使用者可以在標準「導覽器」中迅速地尋找及導覽至這些資源。
您可以過濾不感興趣的類型,以控制「專案瀏覽器」顯示的元素類型。
若要限制或展開「專案瀏覽器」樹狀結構中顯示的資源清單,請按一下「專案瀏覽器」導覽列上的功能表圖示
(
),然後按一下過濾器,在可用的過濾器選項中選取或清除勾選框。 選取過濾器會關閉該過濾器類型的可見性。 例如,若要只顯示專案使用的模型,請選取非模型來關閉所有非模型資源的可見性。
您也可以按一下過濾器對話框中的可用的內容,選取要在「專案瀏覽器」中顯示的資源,並清除不要顯示的資源,以限制要顯示的資源庫存。
「專案瀏覽器」預設為顯示。
如果關閉「專案瀏覽器」,請按一下,並選取,就可以再次顯示它。
在「專案瀏覽器」中開啟資源時,該資源的相關資訊會顯示在編輯器的個別窗格中。 若要開啟資源,請用滑鼠右鍵按一下它,然後從產生的蹦現功能表中選擇開啟。 例如,當您開啟模型時,畫面上會出現「模型編輯器」。 其中包含下列標籤。
如果開啟設定檔集,則會顯示「設定檔編輯器」並附有它自己的一組標籤,以及一組按鈕,可讓您在集合中新增、編輯或刪除設定檔。 若要開啟個別的設定檔,您必須開啟設定檔集並在大綱中顯示其內容。
您可以在編輯器中重新命名建置器呼叫。
在 IBM WebSphere Portlet Factory 中,設定檔編輯器可讓您建立及管理設定檔集。
位於 WebSphere Portlet
Factory 視景「編輯區」頂端且包含設定檔集圖示 (
) 的標籤,可用來存取已開啟以供編輯的專案設定檔集。 具有焦點的標籤會顯示 X,並會移入所有視圖的內容。
IBM WebSphere Portlet Factory 視景中的「大綱」視圖會顯示您在編輯區中選取之模型的建置器呼叫清單。
目前選定模型的建置器呼叫清單,是依據模型中每個建置器呼叫的號碼、名稱或類型的清單。 已建立設定檔的建置器呼叫,會顯示一個設定檔圖示。 使用視圖工具列中的圖示,您可以產生現行模型或將建置器呼叫新增至模型。
「大綱」視圖支援蹦現功能表,其可讓您選取建置器呼叫並使用可用的指令 (例如,剪下、複製及貼上) 來管理清單中的建置器呼叫。
在建置器呼叫清單中,您可以拖放建置器呼叫,以重新排序。 建置器呼叫清單中的數字記號 (#) 指出建置器呼叫的數字順序。 清單中建置器呼叫的順序非常重要,這是因為如果建置器呼叫依賴於清單中稍後的另一個建置器呼叫,則該呼叫會失敗。 停用的建置器呼叫會呈現灰色。
您可以將名稱下方的指定輸入作為建置器中的名稱輸入。 如果您未輸入名稱,則會根據頁面位置產生名稱或顯示為 <無名稱>。 類型下方是指定實際建置器作為建置器挑選器的選定建置器。 另一個直欄會指出建置器呼叫是否具有相關聯的設定檔。
在「視圖」功能表尾端,名稱清單會建議您可能想要新增至模型中的建置器。 只要按一下建置器名稱,便會將該建置器新增至您的模型中,並在編輯區中開啟建置器呼叫編輯器。
指令會尋找具有符合準則及字串之輸入的建置器,而且在建置器呼叫清單中只會顯示其呼叫。 若要在完成時還原完整的建置器呼叫清單,請指定開始於和空字串,然後按一下確定。
建置器呼叫清單包含用來定義模型的所有建置器呼叫。
建置器呼叫清單會在開啟某個模型進行編輯時,呈現在開發環境的「大綱」視圖中。 建置器呼叫清單會顯示模型中每個建置器呼叫的序號、名稱及類型,並指出是否已對建置器呼叫建立設定檔。
您可以使用建置器呼叫清單,以進行建置器呼叫排序、過濾及分類。 若要管理清單中的建置器呼叫,請選取該呼叫,然後使用快速功能表 (右鍵) 中的可用指令 (剪下、複製、貼上等)。
停用的建置器呼叫會呈現灰色。
IBM WebSphere Portlet Factory 會依這些建置器呼叫在建置器呼叫清單中出現的數字順序,來執行這些建置器呼叫。 在每個建置器呼叫執行時,都會新增元素至 WebApp 物件,或修改 WebApp 物件中的元素。
當您從模型產生 Web 應用程式時, WebSphere Portlet Factory 會解析您在建置器呼叫輸入使用的任何間接參照,並將適當設定檔的值提供給任何已建立設定檔的建置器呼叫輸入。
因為建置器呼叫是以線性形式執行,所以在清單中放置建置器呼叫的順序十分重要。 例如,如果要在建置器呼叫輸入中參照方法傳回的值,請在新增現行建置器呼叫之前,先將該方法新增至 WebApp。
在您開發模型時,可能會新增無法存取其所需物件的建置器呼叫。 例如,如果您在要操作其元素的「資料頁」建置器呼叫之前新增或移動「資料欄位修飾元」建置器呼叫,則 WebSphere Portlet Factory Designer 會顯示類似下面的警告:
Field selector "[page1]ShowEmployeeData/RowSet/Row/EMPNO" did not evaluate to any fields. Ensure that this BuilderCall follows the corresponding Data Page BuilderCall.
在此情況下,將「資料欄位修飾元」建置器呼叫拖曳到「資料頁」建置器呼叫之下,就可以解決錯誤。
一般而言,當您將建置器呼叫新增至建置器呼叫清單時,請注意呼叫之間具有的相依關係。 請確定不要將呼叫置於依賴於尚未建立之呼叫 (或呼叫成品) 的清單中。 以由上到下的方式移入建置器呼叫清單,並確保您新增至清單的任何呼叫都只依賴位於其上的建置器呼叫。
使用下列建置器呼叫清單視圖選項,可以變更模型中建置器呼叫的顯示。
建置器挑選器列出環境中可用的建置器,並為您提供透過選取建置器可新增至模型的方法。 使用顯示較少及顯示較多以展開或收合此視圖。
此窗格提供協助您管理建置器及尋找相關建置器的資料夾。 所有提供的建置器都會至少指派一個種類,並且您可以根據它們在建置器挑選器中的種類,來檢視建置器。 部分建置器會出現在多個種類中。 您可以使用種類來組織建置器。 例如,按一下種類名稱下的頁面元素,會列出所有包含建立及操作頁面的建置器。
使用管理我的最愛,可以從清單中移除項目。
例如,如果您在建置器窗格頂端的搜尋框中輸入字母 p,則可捲動的下拉清單會顯示包含 p 的所有關鍵字。如果您輸入關鍵字page,則會顯示包含 page 的所有關鍵字。
按一下關鍵字,即可讓其顯示在文字框中並儲存在搜尋結果中。 與該關鍵字相關聯的建置器名稱會顯示在建置器下。 按一下下拉清單中的最後一個項目 (包含所有的建置器關鍵字及您的搜尋詞彙),可將關鍵字新增至搜尋結果並在建置器下列出相關聯的建置器名稱。
展開搜尋結果,以列出儲存的關鍵字。 按一下關鍵字,以將建置器下的清單限制為與該關鍵字相關聯的建置器名稱。
「建置器挑選器」對話框關閉時會清除搜尋結果。
此窗格根據您在種類名稱中的選擇或在搜尋框中輸入的關鍵字,按字母順序列出建置器名稱。 選取名稱並按一下確定,即可將建置器新增至模型。
依預設,此窗格會顯示所選定建置器的相關資訊,以便您可以判斷是否要新增該建置器。 該窗格提供關於該建置器進一步資訊的鏈結。
如果您已選取依預設不顯示說明匣,請按 F1 或按一下問號圖示,即可再次顯示它。
建置器挑選器可讓您新增位於 (或新增至) WebSphere Portlet Factory 安裝內的任何建置器。
如果您選取建置器,並按一下確定,則該建置器挑選器會關閉,並執行該建置器的建置器呼叫編輯器。
您可以更新 IBM WebSphere Portlet Factory Designer 可用的建置器清單。
可以更新建置器挑選器中的建置器清單,以併入其他建置器。 新增至 WEB-INF/builders 目錄的建置器定義所定義的建置器,會列在「所有」種類及建置器定義中所定義的其他任何種類中。 下列是導致建置器清單中不顯示建置器名稱的原因。
您可以修改專案並新增特性集。 然後,建置器挑選器中就會列出建置器。
需要升級專案版本,以更新建置器清單。
如果您在「大綱」視圖中按一下滑鼠右鍵,即會開啟蹦現功能表,可讓您管理建置器呼叫清單,並在建置器呼叫上執行其他作業。
此功能表中的部分選項只有在選取建置器呼叫時才可以使用。 此功能表可用來存取下列指令及動作。
此功能表選項適用於將建置器轉換為具有幾乎相等輸入的相似建置器類型。 例如,將「按鈕」建置器轉換為「鏈結」建置器,或將「頁面」建置器轉換為「匯入的頁面」建置器。
一般而言,建置器轉換應該轉換相同種類中的建置器。 例如,將「頁面」種類或「頁面元素」種類中的建置器,從某種類型轉換為另一種類型。 請勿嘗試轉換本質上或設計上完全不同的建置器。
原始建置器的輸入會保留下來,並會在適當的時候,很明智地套用至新的建置器。 例如,按鈕標籤輸入值會套用至鏈結文字輸入。 原始建置器的所有輸入都會新增至新的建置器呼叫編輯器中。
IBM WebSphere Portlet Factory 會使用 WebSphere Portlet Factory 視景之編輯區中的數個畫面,來建立及開發 Web 應用程式的模型。
使用「專案瀏覽器」或「模型導覽器」視圖,可以在模型編輯器中存取及開啟模型。 位於 WebSphere Portlet
Factory 視景「編輯區」頂端且包含模型圖示 (
) 的標籤,可用來存取已開啟以供編輯的專案模型。 具有焦點的標籤會顯示 X,並會移入所有視圖的內容。
如果標籤顯示星號 (*),則表示模型中具有未儲存的變更。
您可以使用模型編輯器中的畫面,以瞭解建置器呼叫對模型的影響,變更建置器呼叫或檢查模型中元素之間的關係。 畫面包括:
WebApp 樹狀結構會在每次重新產生模型時更新。
「應用程式樹狀結構」會列出編輯區中所選之已開啟模型中產生的元素。
您可以在模型編輯器中使用「應用程式樹狀結構」,以導覽至及存取產生的元素。 在模型編輯器中的已開啟模型具有焦點時,按一下應用程式樹狀結構標籤,以展現畫面並檢視在其中依類型列出產生之元素的 WebApp 資料夾及子資料夾。 如果應用程式樹狀結構標籤不可見,請按一下編輯區左側的箭頭圖示,以收縮所選畫面並展現「應用程式樹狀結構」畫面。
模型之產生的元素會以樹狀結構形式顯示在 WebApp 資料夾下。 代表元素類型的資料夾都可以展開及收合。 例如,WebApp 中的所有變數都包含在「變數」資料夾中。 其他類型的元素也可如此。 此產生的元素組織可讓您一眼就看出 WebApp 包含的內容,以及 WebApp 在重新產生期間所發生的變更。 例如,您可以使用「應用程式樹狀結構」來確定建置器新增至 WebApp 的內容。
按一下伴隨的頁面標籤,可更輕鬆地存取頁面及表單元素。
對於「應用程式樹狀結構」中所選之已產生元素的每個類型,對應的程式碼會顯示在「來源」畫面中。
使用「來源」畫面,可以檢查建置器呼叫或方法產生的相關程式碼。
如果您展開「應用程式樹狀結構」中的資料夾,並按一下某個 WebApp 物件,在建置器呼叫清單中就會強調顯示負責建立該物件的建置器。 同樣地,如果您選取「大綱」視圖中的建置器呼叫並啟用鏈結 WebApp 樹狀結構,則會在「應用程式樹狀結構」中選取與該建置器呼叫相關聯之已產生的元素。
「應用程式樹狀結構」作業與「來源」視圖及「設計」視圖緊密聯結。
標準 Eclipse 樹狀結構過濾器位於「應用程式樹狀結構」的頂端。 如果您在過濾器中鍵入文字,則可以執行漸進式搜尋。 僅名稱的開頭有過濾器字元的這些資源會在 WebApp 資料夾下,相關的子資料夾中顯示。 如果先鍵入星號字元 (*),後跟文字,則會顯示這些名稱的任何位置均有該文字的資源。 有一個圖示可以清除過濾器,並顯示所有資源。
「應用程式樹狀結構」支援蹦現功能表,可讓您更輕鬆地開啟建立的建置器或修改所選元素的建置器。
通常,您可以在「應用程式樹狀結構」中看到下列資料夾。
Event: OnError.main Action: showErrorPage
使用「頁面」畫面,以更直接的方式存取模型中的頁面及表單。
您可以顯示模型的視覺化呈現。
如果您按一下設計視圖,並已在「應用程式樹狀結構」中選取不可視項目,或者在模型中無任何可見元素,則會看到此文字。
您需要將建立頁面元素的模型建置器新增至模型。
模型編輯器中的「設計」及相關「頁面」畫面會提供模型中視覺化元素的圖形表示法。
使用「設計」畫面, 您可以變更欄位及頁面上欄位的分組。
「頁面」畫面會顯示模型中所有已建立頁面及表單的縮圖圖示。 (所產生的相同元素會列出在「應用程式樹狀結構」中)。 按一下頁面標籤,以展現窗格。 圖示可讓您更輕鬆地選取模型中的可見元素。 「頁面」工具列中的「視圖」圖示還可讓您顯示可見元素的清單及詳細格式。
「頁面」畫面支援蹦現功能表,可讓您更輕鬆地開啟建立的建置器或修改所選元素的建置器。
「設計」畫面會顯示「應用程式樹狀結構」或「頁面」畫面中選取之可見元素的視覺化表示法。 按一下設計標籤會展現「設計」畫面。 此畫面可讓您快速且便捷地檢視模型中可見的元素,而無需產生 Web 應用程式,並且可讓您變更設計。
在窗格中,標籤視覺化呈現為頁面上的方框。 標籤顯示為橙色,以指出要新增建置器。 標籤名稱顯示在方框中。
編輯器畫面左側中的箭頭圖示可進行切換,以隱藏或展現「應用程式樹狀結構」及「頁面」畫面。 隱藏其他畫面為您提供更大螢幕空間,以使用建置器呼叫編輯器。 視覺化表示法包含紅色星號及紅色文字指示器。 這些表示相關聯的元素發生錯誤狀況,您必須在建置器呼叫編輯器中移除該錯誤狀況。 此外也包含群組圖示,可讓您在聚集元素上輕鬆運作。
「設計」畫面與「應用程式樹狀結構」緊密連接。 如果您選取「設計」畫面中的元素,則會選取「應用程式樹狀結構」中對應的元素。 同時,會強調顯示「來源」畫面中的相關聯程式碼。
「設計」畫面支援可協助您開發 Web 應用程式的蹦現功能表選項及選用區。 可用的蹦現功能表選項取決於畫面中所選元素的環境定義。 用滑鼠右鍵按一下窗格中任何元素或群組圖示都會顯示功能表。
在任何建置器 (從「設計」畫面新增至模型的建置器) 的建置器呼叫編輯器中,會根據所選元素的環境定義預先填入頁面及標籤欄位。
您通常需要資料位於多個欄位中。 不過,顯示資料時,您可能要將這些欄位合併為一個直欄進行顯示。 例如,人員的地址可能包括個別城市、州和郵遞區號欄位。 您可以使用「資料欄位合併」建置器,來將各個欄位作為詳細資料頁面上的單一欄位或單一顯示的直欄。
在「設計」畫面中,您可以選取要合併的多個欄位,按一下滑鼠右鍵,然後按一下合併欄位,將欄位合併至現行直欄中。 多個欄位必須全部位於相同的儲存器欄位中。 填寫與功能表指令相關的資訊後,「資料欄位合併」建置器會新增至您的模型,並顯示新合併的直欄。
如果在「設計」畫面中的頁面自動化欄位上按一下滑鼠右鍵,然後按一下或。 (僅資料輸入欄位的功能表上提供驗證指令。) 變更設定時,請按一下套用或確定。
如果用滑鼠右鍵按一下表單或頁面中的直欄或欄位,則可以使用或,來快速變更其顯示設定。 指令可讓您切換內容,以讓欄位或直欄不顯示或顯示。
如果用滑鼠右鍵按一下表單或頁面中的直欄或欄位,則可以使用或,來快速變更其排序設定。 指令可讓您切換內容,以容許欄位或直欄排序或阻止其排序。
如果模型不包含此表單或頁面的相關建置器,則會將建議的建置器新增至模型。 如果相關的建置器位於此表單或頁面的模型中,則會以您的變更來更新該建置器中的相關輸入。
模型編輯器中的「來源」畫面會顯示與「應用程式樹狀結構」、「設計」或「頁面」畫面中選取的已產生元素,或者與「大綱」視圖中選取的建置器呼叫相關聯的應用程式碼。
按一下來源標籤,以展現畫面。 使用編輯區左側的箭頭圖示,以展開及收縮畫面。 例如,如果「應用程式樹狀結構」及「頁面」標籤不可見,請按一下箭頭,以收縮「來源」畫面並展現其他畫面。
在「應用程式樹狀結構」中,導覽至並選取產生的元素。 在「頁面」畫面中,選取頁面或表單。 在「設計」畫面中,選取可見元素。 會強調顯示「來源」畫面中的相關程式碼。
如果啟用「大綱」視圖中的鏈結 WebApp 樹狀結構,則選取建置器呼叫會選取「應用程式樹狀結構」中的相關聯元素,且會強調顯示「來源」畫面中的相關原始程式碼。
在「來源」畫面中,您會看到程式碼相關資訊及程式碼本身。 若要收合及展開元素的相關資訊,請使用元素名稱左側的三角形圖示。 收合資訊會為程式碼顯示畫面提供更大空間。
呼叫現行選項的方法
所選程式碼呼叫的方法
使用程式碼的相關資訊,以更輕鬆地瞭解模型的作業方式。
模型編輯器 (亦即,在「應用程式樹狀結構」、「頁面」畫面及「設計」畫面中) 中的蹦現功能表,會在現行環境定義中顯示建立所選物件的建置器,以及可修改所選之已產生元素的可用建置器。
此功能表選項適用於將建置器轉換為具有幾乎相等輸入的相似建置器類型。 例如,將「按鈕」建置器轉換為「鏈結」建置器,或將「頁面」建置器轉換為「匯入的頁面」建置器。
一般而言,建置器轉換應該轉換相同種類中的建置器。 例如,將「頁面」種類或「頁面元素」種類中的建置器,從某種類型轉換為另一種類型。 請勿嘗試轉換本質上或設計上完全不同的建置器。
原始建置器的輸入會保留下來,並會在適當的時候,很明智地套用至新的建置器。 例如,按鈕標籤輸入值會套用至鏈結文字輸入。 原始建置器的所有輸入都會新增至新的建置器呼叫編輯器中。
在種類的子功能表中,按一下建置器名稱,即可執行建置器呼叫編輯器,在模型中建立修改元素的新建置器呼叫。
建置器的種類及清單並不是完全詳盡的。 因此,某個建置器可能可以建立特定的元素,但是因為其在該環境定義中沒有意義,所以該建置器並不會顯示在清單中。
如果在「設計」畫面中的頁面自動化欄位上按一下滑鼠右鍵,然後按一下或。 (僅資料輸入欄位的功能表上提供驗證指令。) 變更設定時,請按一下套用或確定。
如果模型不包含此表單或頁面的相關建置器,則會將建議的建置器新增至模型。 如果相關的建置器位於此表單或頁面的模型中,則會以您的變更來更新該建置器中的相關輸入。
您可以使用 Ctrl 鍵並按一下,來為該指令選取類型(欄位或直欄)相同的多個物件。
在「設計」畫面中,您可以選取要合併的多個欄位,按一下滑鼠右鍵,然後按一下合併欄位,將欄位合併至現行直欄中。 多個欄位必須全部位於相同的儲存器欄位中。 填寫與功能表指令相關的資訊後,「資料欄位合併」建置器會新增至您的模型,並顯示新合併的直欄。
建置器呼叫編輯器可讓您指定建置器呼叫的所有輸入值。
您也可以參照 XML 結構中的元素,並在模型的一個以上的頁面上尋找控制項建置器呼叫。
下面是許多建置器常用的建置器呼叫輸入群組:
TODO 更新此頁面的樣式 FIXME 新增智慧型手機支援
當透過 API 呼叫建置器時,建置器還可以新增作業。當建置器呼叫目標建置器時,呼叫建置器會將具有嚴重性指示器作業的訊息新增至呼叫。指示的訊息會新增至目標建置器。
訊息可以包含建置器想要的任何文字;但是如果建置器想要標準 TODO 及 FIXME 行為,則該訊息需要以 TODO 或 FIXME 開始。這些作業會一直顯示,直到建置器不再產生這些訊息為止。這可讓建置器動態新增作業,以協助使用者使用進階功能。
也可能會出現其他選項,需視建置器而定。
建置器呼叫的大部分輸入都可以採用從間接參照、Java 表示式或直接從 String 值衍生的值。 部分需要特定物件 (如變數或模型) 的名稱輸入,會使用特定的選擇器來過濾不適合的元素。
一般而言,是使用與 Java 變數相同的慣例來命名模型中的建置器。
(開頭為小寫字元,接下來每個單字的第一個字母為大寫。) 例如:
有時不應遵循第一個字母小寫的規則。 例如,Portlet 配接器建置器的名稱輸入是作為入口網站中的 Portlet 名稱使用 (不是用於產生的 Web 應用程式物件),因此,在此建置器呼叫名稱開頭使用大寫字母比較合理。
一般而言,控制項建置器的名稱輸入 (例如「按鈕」或「鏈結」建置器) 最好保留空白。 此輸入保留空白時,控制項建置器會自動顯示它所在的標籤名稱。
選擇參照對話框可讓您指定模型實體的值,作為建置器輸入的值。
選擇參照對話框會顯示所有變數、方法、輸入及頁面,您可以從中選擇將已選取元素的輸出值,對映至建置器呼叫的輸入值。 對於與綱目相關聯的 XML 結構參照,選擇參照對話框會顯示所有元素,以及與那些元素相關聯的所有屬性。 在對話框樹狀結構中,在名稱之前會使用 @ 符號來區分屬性。
選擇參照對話框會過濾出無效的可能性。 例如,您可以將「按鈕」建置器的標籤輸入值設為方法的輸出、變數的值,或先前提交頁面上的輸入值。 當您顯示標籤輸入的選擇參照對話框時,它不會顯示模型中的頁面,因為它們不是衍生按鈕標籤的有效方法。
選擇參照對話框只會顯示不使用引數的方法。 當嘗試向輸入提供由方法傳回的值時,請記住有些建置器不支援將引數指定到在選擇參照對話框中選取的方法。 如果您想要向建置器呼叫輸入提供從使用引數的方法傳回的值,請將方法呼叫建置器呼叫新增至模型,在該模型中呼叫方法,以及提供支援引數。 使用選擇參照對話框來設定輸入值,並選取剛剛建立的方法呼叫。
您可以使用數種方式,來指定建置器輸入的值。
例如,您可以使用輸入選取方塊或文字輸入控制項。 使用這些控制項指定值是直接明確的。 IBM WebSphere Portlet Factory Designer 也使用數種類型的選擇器控制項來指定輸入值,以供您選取資源。
下列對話框會以樹狀結構顯示可選取的元素,您可以從其中進行選擇。 例如,選擇檔案對話框會顯示檔案清單及/或包含檔案的目錄。 使用這些對話框以導覽至適當的資源。
您可以使用間接參照類型的組合。
例如,您可以將 Java 表示式與變數參照結合,以衍生影像的 URL:
${Java/webAppAccess.getRequestData().getContextURL()}/${Variables/ImageFileName}
ImageFileName 變數包含影像的檔名。
您還可以輸入 Java 語法作為建置器的輸入。
${Java/webAppAccess.getRequestData().getContextURL()}
若要將文字輸入值設為接受引數之方法傳回的值,請使用:
${Java/webAppAccess.callMethod("MethodName", arg1, arg2)}
選擇參照對話框的 Java 節點也提供一些預先定義的表示式供您使用。
從選擇參照對話框選取表示式之後,該表示式就會置於建置器輸入欄位中。 此時,如果您需要新增引數或進行修改,則可以編輯表示式。
參照選擇器可讓您將模型中的元素值指派給建置器呼叫輸入。
參照選擇器會顯示所有可以衍生值的變數、方法、輸入及頁面。 當您在參照選擇器中選取項目時,其傳回的值稱為「間接參照」,該值會定義到模型中所選取元素的路徑。 例如,${Variables/CustomerName} 或 ${MethodCall/GetCustomerName}。
${Variables/Customers/Customer[${MethodCall/GetIndexValue}]}
參照選擇器會顯示可能的模型元素 (例如,變數、方法、輸入及頁面),您可以從中選擇將所選取元素的輸出值對映至建置器呼叫的輸入值。 依預設,參照選擇器會因故隱藏可能沒用的許多元素。 按一下對話框中的顯示其他,以顯示一開始便依預設隱藏的元素。
參照選擇器會過濾出可能無效的項目。 例如,您可以將「按鈕」建置器的標籤輸入值設為方法的輸出、變數的值,或先前提交頁面上的輸入值。 顯示標籤輸入的參照選擇器時,並不會顯示模型中的頁面,因為這些頁面並不是衍生按鈕標籤的有效方法。
下列是使用參照選擇器的各方面:
您可以在參照選擇器中直接輸入間接參照,以提供對佈景主題內容資料的存取。
${Properties/bowstreet.Theme/property-name}
此參照用於定義使用者介面 (UI) 元素的建置器輸入中。 例如,在「分頁按鈕」建置器中,您可以指定一般按鈕影像輸入。 您可以使用定義檔案之佈景主題內容的間接參照,來取代指定檔案路徑。 如此一來,便可將參照的定義集中到使用者介面元素,而且如果需要變更元素,也不需要在多個建置器中修改多個輸入。 <PagingButtons_NormalImage>/myfiles/images/normal.jpg </PagingButtons_NormalImage>此定義指定您的影像檔在 WebContent 資料夾中的路徑。 請確保該內容在佈景主題檔中是唯一的。
${Properties/bowstreet.Theme/PagingButtons_NormalImage}
產生模型時,在建構 WebApp 之後,normal.jpg 影像會併入其輸入包含間接參照的所有頁面上。 這個語法僅供接受單一值的建置器輸入使用。 接受的值清單的輸入則無法使用。
您可以使用參照選擇器,指定頁面控制項的值 (例如,文字輸入或按鈕標籤)。
請不要選擇要求輸入的間接參照。 例如,${Inputs/someValue}。 如果應用程式是在 Portlet 環境中執行,則可能需要將輸出呈現為頁面上另一個 Portlet 的要求結果。 然而,從要求輸入中取得其值的任何控制項或標籤都不會有值。
在此應用程式中的最佳作法,是使用頁面自動化建置器 (例如,具有「資料欄位修飾元」及「資料直欄修飾元」建置器的「資料頁」建置器)。 您也可以透過變數來指定頁面控制項的值。
參照選擇器顯示可提供建置器輸入值的方法。
如果選取的方法需要引數,則會顯示一個蹦現對話框來提示您提供引數給方法。 您提供的方法引數可能是寫在程式中的引數,或引數本身是其他方法或變數的間接參照。
您可以視需要連結間接參照,或將它們進行巢狀處理。
例如,如果要當成建置器呼叫輸入值使用的 XML 元素索引是由另一個變數所決定,則巢狀間接參照會與下列類似:
${Variables/MyXML/XmlElement[${Variables/IndexValue}]}
您可以輸入 Java 語法作為建置器的輸入。
${Java/webAppAccess.getRequestData().getContextURL()}
呼叫使用兩個引數的方法 MethodName:
${Java/webAppAccess.callMethod("MethodName", arg1, arg2)}
您可以使用間接參照類型的組合。
${Java/webAppAccess.getRequestData().getContextURL()}/${Variables/ImageFileName}
ImageFileName 變數包含影像的檔名。
您可以使用對話框來協助將模型指定為建置器輸入。
許多建置器都有需要您指定模型的模型輸入。 按一下省略符號按鈕 (
) 會顯示「模型選擇器」對話框,您可以在其中導覽至模型並進行選取。 依預設,建置器中使用的模型位置指定是模型的絕對參照。
有一個選項 (使用相對模型參照) 可讓模型參照成為相對參照。 因此,從模型 A 到模型 B 的參照是基於模型 A 在模型資料夾中的位置。 使用相對參照時,如果您將兩個模型從一個資料夾移動或複製到另一個資料夾,則模型 A 的新副本會參照模型 B 的新副本。 使用絕對參照時,模型 A 的新副本仍會參照原始位置上模型 B 的原始副本。
建置器呼叫編輯器支援常用參照方法及語法。
Web 應用程式包括一組執行時期實體,如變數、方法及服務呼叫。 您可以建置元素之間的參照,來交互連接這些 Web 應用程式元素。 您可以使用數種方式來建立參照。 不過,您可能發現您需要結合間接參照來提供適當的輸入值,或需要使用類似於 XPath 的表示法來取得 XML 元素的值。
若要使用替代輸入形式,您需要瞭解指定建置器輸入的正確語法。 下列各節中的資訊說明可用的輸入類型,並提供使用特定輸入類型所必須遵循的語法範例:
您可以在模型中使用間接資料參照。 例如,您可以使用使用者輸入並已儲存於變數中的值,來作為建置器的輸入。 使用變數的間接資料參照,可以完成此動作。
間接參照的語法需要在錢幣符號 $ 後面跟隨一對大括弧,如下所示:
${...}
大括弧會括住資料來源。 在下列按鈕標籤範例中,您可以輸入下列資料參照,在按鈕標籤輸入中使用名為 ButtonLabel 的變數值:
${Variables/ButtonLabel}
您可以輸入 Java 語法作為建置器的輸入。 IBM WebSphere Portlet Factory 會安排在執行時期執行 Java 表示式,以提供建置器輸入值。 若要在 Web 應用程式中指定元素,但選擇器或建置器呼叫編輯器並不直接支援該元素,則可以使用 Java 表示式進行間接參照。 例如,若要為輸入提供 WebSphere Portlet Factory 的 URL,則您可以使用下列 Java 表示式:
${Java/webAppAccess.getRequestData().getContextURL()}
下列表示式會將文字輸入值設為接受引數之方法傳回的值:
${Java/webAppAccess.callMethod("MethodName", arg1, arg2)}
若要衍生要匯入之頁面的值,您可以使用間接參照類型的組合,透過與下列內容類似的間接參照:
${Java/webAppAccess.getRequestData().getContextURL()}/${Variables/PageToImport}
PageToImport 變數包含要匯入的頁面名稱。
您放置及建立專案所在的位置包含所有 HTML 頁面、產生的 JSP 頁面及其他可服務資源,也稱為可服務內容根目錄。 當開發可能在多個應用程式環境定義中發佈或匯出的 Web 應用程式時,請使用 webAppAccess.getRequestData().getContextURL() 方法,來確保對可服務資源的任何參照具有足夠的彈性,以適用於所有應用程式環境定義。 請參閱使用 Java 表示式。 若要讓可服務資源的參照具有彈性,當參照方法中或建置器呼叫輸入中的可服務資源時,請使用方法 webAppAccess.getRequestData().getContextURL()。 例如,您可以輸入下列內容,作為「匯入的頁面」建置器之「要匯入的頁面」輸入的值:
${Java/webAppAccess.getRequestData().getContextURL()}/pages_to_import_dir/MyPage.htm
無論執行此模型所在的應用程式環境定義為何,此語法一律評估為 pages_to_import_dir 目錄。
若要存取方法呼叫所產生的資料,您可以使用間接資料參照。 您可以使用任何不採用引數的方法呼叫或方法。 但該方法必須傳回值,以便您參照。 您也可以連結方法呼叫的結果與其他方法呼叫或字串。 此間接類型的語法是:
${MethodCall/methodName}
若要選取參照的方法,請使用參照選擇器,它會顯示樹狀結構,其中包括稱為方法呼叫的區段。 顯示的區段會列出可以使用的模型動作清單、方法及方法呼叫。
請注意,您不能像使用 XML 變數一樣,瀏覽至方法的結果。 例如:
${Variables/Customers/customer[2]/name}
如果需要對資料進行其他處理或之前不能進行處理時,請考慮使用方法的間接資料參照。 使用方法間接參照的範例位於「重複區域」建置器中。 通常,很難在執行此建置器時進行任何處理。 不過,藉由使用方法的間接參照,您可以執行該處理。 例如,您可以使用方法呼叫來替代表格列的背景顏色。 建立稱為 getRowColor 的方法,這種方法每次會傳回一種顏色。 然後,若要設定背景顏色,請在附加至表格列的內容 Setter 中呼叫此方法。
若要輸入文字字串作為建置器輸入,您可以直接在輸入區域中輸入字串。 此外,針對任何會採用字串的輸入,您可以連結多個字串。 例如,在「格式化文字」建置器的值輸入中,您可以輸入下列整行:
The values of Foo and Bar are: ${Variables/Foo} and ${Variables/Bar}
在重新產生「文字」建置器時,兩個 ${...} 區域會取代為來自所參照之變數 (假設它們具有值) 的適當字串值。
使用類似的技術,您還可以讓間接參照成為巢狀。 如果您具有名為 FooOrBar 的變數,其結果為文字 Foo 或文字 Bar,您可能具有下列行:
The value of ${Variables/FooOrBar} is "${Variables/${Variables/FooOrBar}}"
引號中的部分可評估為儲存於 Variables/Foo 或 Variables/Bar 中的字串,要視 Variables/FooOrBar 的值而定。 因此,給定下列值:
Variables/Foo: dataVariables/Bar: stuff Variables/FooOrBar: Bar
上面一行中的表示式結果是:
The value of Bar is "stuff"
間接參照值的連結中所說明的某個參照層次通常不支援資料存取及操作的需要。 可以進一步延伸間接參照機制。
您可以在語法中使用方括弧字元 [ 及 ],來參照清單中的元件。 請參閱參照 XML 結構中的子元素。 您可以將此語法與間接參照機制搭配使用,以存取清單中的元件。 例如,名為 TableData 的變數具有多個子項,全部命名為 Row。 每個子項的下面還有更多的資料,如 Name 及 Address。 您可以指定下列程式碼,以存取第三列中的名稱:
${Variables/TableData/Row[2]}
請注意,索引由 0 開始,所以索引 0 是第一個,索引 1 是第二個。
如果變數 TableData 還有其他子項,則上述範例會選取第三個列,而忽略任何其他子項。 若要參照 TableData 的第三個子項,請使用星號 (*) 來代表任何子項:
${Variables/TableData/*[2]}
您還可以使用其他變數指定索引本身。 例如,變數 RowIndex 指定表格的特定列。 下列語法可以指定現行列:
${Variables/TableData/*[${Variables/RowIndex}]}
您可以使用 / 字元在以標籤表示的資料字串中向下瀏覽並存取元素。 您還可以將此技術與間接參照結合,以選取名稱儲存於變數的子元素。 例如,變數 Data 具有 Name 及 Address 子元素,且變數 WhichOne 的值為單字 Name 或單字 Address。 因此,下列參照會傳回儲存於 ${Variables/Data/Name} 中的值或儲存於 ${Variables/Data/Address} 中的值,視變數 WhichOne 儲存的是其中哪一個值而定。
${Variables/Data/${Variables/WhichOne}}
這些技術可以互相結合。 使用「表格資料」範例,如清單索引參照及使用方括弧中所述。 如果您具有其他變數 ColumnName,其會選取應存取的直欄,則下列語法會取得所選取列中所選取直欄的資料格資料:
${Variables/TableData/*[${Variables/RowIndex]/@ColumnName}
您可以瀏覽服務呼叫或方法所傳回並儲存於變數中之 IXml 物件的結構。 下列範例說明可用來建立過濾器以在 XML 文件中尋找元素的技術。
所有範例都以下列範例 XML 程式碼區段為基礎:
<Employees>
<Employee age="25">
<Name>John Smith</Name>
<Address>14 Park Lane</Address>
<City>Portsmouth</City>
<State zip="03801">New Hampshire</State>
</Employee>
<Employee age="21">
<Name>Ted Jones</Name>
<Address>26 Harbor View</Address>
<City>Hampton</City>
<State zip="03802">New Hampshire</State>
</Employee>
<Employee age="35">
<Name>Jill Jeffries</Name>
<Address>100 Oak Lane</Address>
<City>Exeter</City>
<State zip="03803">New Hampshire</State>
</Employee>
<Employee age="40">
<Name>Josh Vanderwall</Name>
<Address>45 Maple Ave.</Address>
<City>Bedford</City>
<State zip="03804">Massachusetts</State>
</Employee>
</Employees>
下列參照會尋找指定的元素名稱:
${Employees/Employee/Name}
此表示式會傳回第一個相符的元素。 在此範例中,傳回的元素是 <Name>John Smith</Name>。
下列參照會尋找名稱為 Name 之元素的第二個實例:
${Employees/Employee/Name[1]}
此表示式會傳回由 0 開始之索引編號所指定的相符元素。 在此範例中,傳回的元素是 <Name>Ted Jones</Name>。
請注意,在此情況下,您還可以使用間接參照。 例如,您可以輸入:
$Variables/Foo/Bar[${Variables/Index}]
表示式會尋找儲存於特定索引上某一變數中的元素。
下列參照會尋找文字值等於 Jill Jeffries 的元素實例 Name:
${Employees/Employee/[Name=Jill Jeffries]}
此表示式會傳回元素文字所指定的相符元素。 在此範例中,傳回的元素是 <Name>Jill Jeffries</Name>。
下列表示式會尋找指定的屬性值等於 40 的實例 Employee:
${Employees/Employee[@age=40]}
此表示式會傳回屬性文字所指定的相符元素。 在此範例中,傳回的元素是:
<Employee age="40"> <Name>Josh Vanderwall</Name> <Address>45 Maple Ave.</Address> <City>Bedford</City> <State>Massachusetts</State> </Employee>
此資訊說明如何執行模型動作。
您可以透過建立模型實例、擷取該模型實例的 WebAppAccess 物件,並呼叫模型的 main 方法,來執行另一個模型。 getModelInstance() 方法會採用下列三個引數:
若要指名多個設定檔,請使用加號 (+) 分隔設定檔名稱,如下所示:ProfileSetName!ProfileName+ProfileSetName!ProfileName
WebSphere Portlet Factory 會針對每個階段作業,建立一次模型的單態實例。 對於非單態模型, WebSphere Portlet Factory 會在每次要求時建立它們的實例。
下列程式碼範例顯示如何透過方法執行另一個模型:
WebAppAccess remoteWebAppAccess =
webAppAccess.getModelInstance("myModels/ModelName", "Region!Southwest", "false");
remoteWebAppAccess.callMethod("main");
只需對現行 WebAppAccess 物件呼叫 processPage() 方法,即可顯示現行模型中的頁面。
webAppAccess.processPage("pageName");
若要顯示鏈結之模型中的頁面,請呼叫 processPage(),如下所示:
webAppAccess.processPage("LinkedModelName.pageName");
若要顯示另一個模型中的頁面,請參閱透過方法執行另一個模型的程式碼。 請不要呼叫 remoteWebAppAccess 物件上的 callMethod(),要呼叫 processPage(),並提供頁面名稱作為引數。
webAppAccess.processAction("ServiceCallName.invoke");
webAppAccess.processAction("ActionListName");
您可以使用 callMethod() 方法,來呼叫現行模型或鏈結之模型中的方法。 在指定方法名稱之後,可以將引數以逗號區隔清單傳遞至方法,如下所示:
您不能直接執行透過 URL 取得引數的方法。 不過,您可以用名稱及值配對作為引數,新增至 URL,並從 WebApp 的 RequestData 物件擷取那些引數值。 下列程式碼範例會擷取在下列 URL 中傳遞的引數值:
http://localhost:7001/Factory/webengine/URLTester/Action!MethodFielder?name=Tom&id=111?method=MethodWithArgsLJO 類別中的方法主體:
public void MethodFielder(WebAppAccess webAppAccess) {
String name = webAppAccess.getRequestInputs().getInputValue("name");
String id = webAppAccess.getRequestInputs().getInputValue("id");
String method = webAppAccess.getRequestInputs().getInputValue("method");
webAppAccess.getVariables().setString("Name", name);
webAppAccess.getVariables().setString("ID", id);
webAppAccess.callMethod(method, name, id);
}
「LJO 方法」及「方法」建置器呼叫會透過 RequestInputs 介面,或者將引數導向至方法,來存取透過 FORM POST 或 URL 查詢參數提交的輸入。
透過 URL 呼叫的方法應該採用無 (零) 引數,或只採用 WebAppAccess 引數,並應透過 RequestInputs 介面從「HTTP 要求」擷取輸入。
若要擷取 WebApp 要求之 RequestInputs 現行實例的參照,請呼叫:
RequestInputs requestInputs = webAppAccess.getRequestInputs();
例如,若要取得「勾選框群組」輸入的所有輸入,您可以執行如下的項目:
Iterator inputs = webAppAccess.getRequestInputs().getInputValues("MyCheckboxGroup");
while(inputs.hasNext()) {
//process input values here
}
透過設定階段作業的屬性,並將那些屬性的值指定為要在模型之間共用的物件,就可以將物件儲存在階段作業中。
webAppAccess.getHttpServletRequest().getSession().put("companyname", webAppAccess.getVariables().getText("companyname"));
String companyName = webAppAccess.getHttpServletRequest().getSession().get("companyname");
webAppAccess.getHttpServletRequest().getSession().remove("companyname");
方法會執行的工作包括:處理表單輸入、執行 Web 應用程式的其他部分 (甚至於其他 Web 應用程式),以及執行 WebApp 要如您希望的方式運作所需的任何其他邏輯。
方法中使用的主要物件是 WebAppAccess 物件,這是 com.bowstreet.webapp.WebAppAccess 類別的實例。 WebAppAccess 物件會充當 WebApp 物件所代表之 WebApp 結構的 Proxy,這是 com.bowstreet.webapp.WebApp 類別的實例。
您可以產生現行模型中或另一個模型中動作的 URL。
webAppAccess.getActionURL("actionName");
/appcontext/servletname/models/path/to/models/Action!actionName其中:
/MyApp/webengine/test/TestModel/Action!getCustomers
webAppAccess.getURLMapper().getURL("ModelName", "GetCustomers",
"Region!Northeast$ServiceLevel!Gold", null);
/MyApp/webengine/method/MethodTest2/ Action!main/Profile!Region!Northeast$ServiceLevel!Gold
您可以取得 cluster.properties 及 bowstreet.properties 檔案中儲存的 IBM WebSphere Portlet Factory 内容值。
存取由呼叫 webAppAccess.getSystemProperties() 傳回的 com.bowstreet.util.SystemProperties 物件。 利用 SystemProperties 物件,您可以存取資訊,例如文件根目錄的目錄路徑、伺服器的 URL 及其他資訊。 呼叫下列方法:
AppServerDeployDir\MyApp.ear\MyApp.war
AppServerDeployDir\MyApp.ear\MyApp.war\WEB-INF
http://127.0.0.1:9080/MyApp
http://127.0.0.1:9080/MyApp/webengine
透過呼叫 webAppAccess.getVariables() 方法,可以存取 Web 應用程式中的所有變數。
webAppAccess.getVariables().getXmlElement("VariableTest", "customers/customer[1]");
下列程式碼範例會移除 <customers /> 結構中的第二個 <customer /> 元素:
IXml customers = webAppAccess.getVariables().getXml("CustomerList");
customers.removeChildElement(customers.findElement("customers/customer[1]"));
IXml customers = webAppAccess.getVariables().getXml("CustomerList");
customers.setText("customers/customer[2]/name", "NewName");
透過呼叫 webAppAccess.getHttpServletRequest() 方法,可以存取 HttpServletRequest 物件。
如需公用 (public) 方法的完整說明,請參閱 JDK 安裝系統中,javax.servlet.http.HttpServletRequest 類別的 Javadoc。
使用 HttpServletResponse 物件,可以修改方法所傳回資料的內容類型。
此物件會將回應的 ContentType 設為非文字或 html 的內容。
您也可以將標頭新增至回應,或者修改對用戶端的回應。
例如,下列程式碼範例設定回應的 ContentType 傳回 Microsoft Excel 試算表:
public void setContentTypeXL(WebAppAccess webAppAccess) {
webAppAccess.getHttpServletResponse().setContentType("application/msexcel") ;
try {
File excelSheet = new File(webAppAccess.getSystemProperties().getDocumentRoot()+
File.separator + "Schedule.xls");
int numFileBytes = (int)excelSheet.length();
byte[] fileBytes = new byte[numFileBytes];
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(excelSheet));
int i = 0;
while(i < numFileBytes){
fileBytes[i] = (byte)bis.read();
i++;
}
webAppAccess.getHttpServletResponse().getOutputStream().write(fileBytes);
}
catch (IOException ioe) {
System.out.println(ioe+"Cannot find file.");
}
}
如需公用 (public) 方法的完整說明,請參閱 JDK 安裝系統中,javax.servlet.http.HttpServletResponse 類別的 Javadoc。
您可以指定變數為此檔案中的其中一種類型。
<customers> <customer> <name>Jane</name> <id>1112</id> </customer> <customer> <name>Jane</name> <id>1112</id> </customer> </customers>
此外,您可以指定變數為綱目所定義的類型。 這些類型會顯示在「變數類型選擇器」中。 如果您選取綱目定義的類型,請務必從綱目的「類型」資料夾中選擇,而不是從其「元素」資料夾中選擇。
使用參照選擇器,可以建立巢狀間接參照。
。 會開啟參照選擇器視窗。許多建置器會在表格中提供輸入,您可以從中刪除某列以移除相關的輸入值。
如果您從建置器輸入 (例如,在「動作清單」建置器) 的表格中移除某列,請務必使用正確的技術,才不會讓與該列相關的輸入被視為空值。
如果您刪除列的內容,而不移除該列,則建置器會將該輸入視為空值。
您可以從 IBM WebSphere Portlet Factory Designer 視窗的個別視窗中開啟建置器呼叫編輯器。
在您下次啟動「工作台」,並將建置器新增至模型時,建置器呼叫編輯器會在個別視窗中開啟。
WebSphere Portlet Factory Wiki 視圖會連接至其他產品資訊,例如,最佳實務的準則。
開啟 WebSphere Portlet Factory Wiki 視圖時,Eclipse 瀏覽器會透過網際網路連接至 WebSphere Portlet Factory Wiki。 依預設,瀏覽器會開啟「聚光燈」頁面。 此頁面會有鏈結指向包含建議的文章,協助您獲得 WebSphere Portlet Factory 系列產品的最佳體驗。 透過頁面底端的鏈結,您可以存取其他 Wiki 和產品資訊來源。
在頂端的視圖工具列中,有一個清單,可讓您選取 Wiki 的其他部分。 例如,您可以按一下範例和技術,即包含符合您應用程式的技術範例和文章的 Wiki 段落。 工具列中的圖示會讓您在瀏覽器進行導覽。
「資源日誌」視圖會顯示現行專案階段作業中的重要事件。
此視圖會顯示在此 Eclipse 階段作業中前次執行之「新增或移除特性集 (或 WebApp)」作業的結果。 該視圖會顯示專案中已移除、修改及新增的所有檔案清單,以及由於最近複製或移除作業所產生的那些變更而發生的任何錯誤。 使用此視圖,可以追蹤在現行開發階段作業中所發生的活動。 重新啟動 Eclipse 時,會清除此視圖。
按一下,以顯示視圖。 該視圖會在 WebSphere Portlet Factory 視景的「作業」視圖區域中開啟。
「視圖」功能表會提供過濾及複製選項。 此視圖中顯示的事件集,分類為可從視圖功能表內存取的下列過濾類型:
除了事件過濾選項之外,「資源日誌」視圖蹦現功能表還提供複製作業。 「複製」會將視圖內容當作文字置於剪貼簿 (以「回車」及「換行」字元組合分隔各行)。
複製對於提供專案活動的綜合性記錄非常便利。 例如,如果您需要改寫數個檔案,但由於某種原因無法改寫,複製就可讓您取得那些檔案的清單,以供將來參考。 此外,您可以將檔名手動複製並貼到其他指令,來完成改寫程序。
以下為視圖中會記載的所有事件類型,及其在視圖中的呈現方式。
您可以建立「IBM WebSphere Portlet Factory 模型」配置類型。
在 IBM WebSphere Portlet Factory Designer 中,可以設定執行配置內容。
從 WebSphere Portlet Factory Designer 內部執行模型時可使用這些內容。
標準 Eclipse「執行配置」對話框,可讓您定義從 Eclipse 環境內,執行 (啟動) 程式時所使用的參數。 執行模型是一種特定執行配置類型。 因此,您必須先定義類型為 Factory 模型的新執行配置,才可以執行模型。
您可以配置 Factory 模型類型,讓其執行為:
作為「執行」配置的一部分,您會提供要執行模型之 WebSphere Portlet Factory 伺服器的相關資訊,以及要使用的瀏覽器類型。 您還可以指定是否要開啟 WebSphere Portlet Factory 伺服器追蹤。
此表說明您可以在「執行配置」對話框之各種標籤中設定的內容值。
| 主要標籤 | 說明 |
|---|---|
| 要執行的模型 | 您可以配置「Factory 模型」類型,讓其以下列兩種模式的其中一種執行:
註: 當您選擇「執行具名模型」的模式時,也必須選取專案。
|
| 伺服器標籤 | 說明 |
| 伺服器主機 | 輸入伺服器主機名稱,它是執行您要連接到 IBM WebSphere Portlet Factory Servlet 的伺服器。 如果 WebSphere Portlet Factory Servlet 及 WebSphere Portlet Factory Designer 位於同一機器上,您可以使用 localhost。 |
| 伺服器埠 | 輸入 WebSphere Portlet
Factory 接聽要求的埠號。 範例:9080 |
| 瀏覽器標籤 | 說明 |
| 瀏覽器指令 | 輸入執行模型時,要執行的 Web 瀏覽器路徑。 |
| 追蹤標籤 | 說明 |
| 執行系統追蹤 | 啟用此勾選框,以在您執行模型的任何時間,列印方法及頁面動作的相關系統追蹤資訊。 |
| 一般標籤 | 說明 |
| 執行配置類型 | 此欄位使用「執行」配置設定,以定義檔案的位置:
|
| 已執行時要切換至或開啟的視景 | 以執行模式「執行」模型 (不支援除錯模式)。 以執行模式執行程式,但是也許不能暫停或檢查執行。 此欄位可讓您選擇在「執行」配置已執行時,要變成作用中的視景。 |
| 在我的最愛功能表中顯示 | 勾選執行方框,以指定「執行」配置應該出現在「執行我的最愛」清單中。 |
您可以在開發人員之間共用專案資源。
您可以建立或安裝 IBM WebSphere Portlet Factory 保存檔。 保存檔是使用「 WebSphere Portlet Factory 匯出/匯入精靈」建立的特殊壓縮檔。 此精靈可整合至 WebSphere Portlet Factory Designer 中的及功能表。 保存檔為您提供輕鬆地收集及分送專案元件的方法。
IBM WebSphere Portlet Factory Designer 提供您可以用來匯出及匯入專案資源的精靈。
您可能要匯出及匯入專案資源來與其他開發人員共用資源。 您可以使用此精靈來建立 WebSphere Portlet Factory 保存檔的 Zip 檔案。
WebSphere Portlet Factory 保存檔是可以用來套裝資源以進行共用的 Zip 檔。 此檔案是由「 WebSphere Portlet Factory 匯出」精靈自動建構。 這些特殊目的性質的精靈會納入 Eclipse 的 匯出/匯入功能表。
儲存至保存檔的所有資源都與專案的可服務內容目錄 (專案根目錄) 相關。
IBM WebSphere Portlet Factory 應用程式只是一組協調的檔案,用來在設計時、發佈至開發伺服器或將完成的專案匯出至正式作業伺服器時,重新產生應用程式。
如同大多數 Portlet、Web 應用程式及小組件, WebSphere Portlet Factory 應用程式會配送(或發佈)為 WAR。
執行應用程式所需的任何項目,都會套裝在 WAR 建置程序中,其中包括設定檔集。 因此可以將自行包含的 WAR 檔案配送或發佈至任何適當的伺服器,並預期其可以執行。
在將此專案結構轉換為來源控制時,您可以使用兩種基本方法。
如果專案僅具有鬆散的連結 (例如 http 連線),則這種方式很有用。 如果建立的成品要更加緊密地放在一起 (在通用建置中),在選擇成品名稱時,需要避免名稱發生衝突。 如果具有通用建置時,就需要一套建置程序。
當數個人員操作同一應用程式的不同部分時,這種方法很有用。 每個開發人員都會有一份 WebSphere Portlet Factory 副本,並會將其工作移入共同來源控制區域中。 如果必要的話,每個團隊成員都可以輕鬆地將所有構件移入他們的專案中,並且可以輕易地避免名稱衝突。
在這兩種情況下,鏡映來源控制中的專案結構都可以促進在來源控制系統與專案之間進行輕鬆的傳輸。
如果您希望日後可以持續重建應用程式,請務必要擷取專案所使用的所有構件。
在專案層次中,針對要進行版本控制的項目,您有下列選擇。
專案中只會保留原始檔及產生的檔案。 您可以移入產生的檔案 (不建議這樣做),如果您稍後要嘗試重新產生完全相同的環境,則可以輕鬆地從來源建立那些檔案。 產生的檔案位於 WEB-INF/factory/generated/ 資料夾中。 使用此技術時,您可以將原始檔保存在來源控制中,並讓每一位開發人員安裝相同版本的 WebSphere Portlet Factory 及專案所需的任何其他出貨軟體。
如果您在來源控制中使用「共用團隊專案」,並只移入新建或修改過的檔案,請在來源控制系統中設定一個「原始專案」,此專案中包含供團隊成員共用,並且預期不會修改的所有構件 (Jar、建置器定義、內容)。 如此,當您要針對新的團隊成員建立專案時,只需要將「原始專案」與「共用的團隊專案」合併即可。 當然,這兩個方面 (擷取什麼及如何建構其形狀) 會有許多變化。
下列是您至少應該儲存在來源控制系統中的專案構件。
請勿在來源控制中擷取或儲存下列構件。
IBM WebSphere Portlet Factory 提供從來源控制中排除的預設檔案選擇。
Eclipse 開發環境支援設定資料夾及檔案,可以依預設從來源控制中排除。 WebSphere Portlet Factory 藉由提供要從來源控制中排除的資料夾及檔案清單,與 Eclipse 的標準團隊功能整合。 若要查看清單,在 Eclipse 中按一下,並記下以 */WebContent 開頭的項目。 依預設,這些項目由 WebSphere Portlet Factory 所提供。
使用「喜好設定」對話框中的控制項,即可根據您的專案需求修改清單。 此外,您還可以透過您使用的來源控制指令,置換清單中的任何項目。
此文件說明 WebApp 物件在 IBM WebSphere Portlet Factory 系統中的結構及行為。
本文件中的資訊適用於:
WebApp 是針對 WebApp 參數式模型而產生的可執行結果。 WebApp 元素是產生應用程式時,建置器可以使用的基本建置區塊。
WebApp 代表所有或部分 J2EE Web 應用程式,並包括:
本資訊說明 WebApp 執行時期環境程序,以及將由 WebApp 應用程式開發人員使用的 API。
瞭解 WebApp 執行路徑及 WebApp 執行時間動作很重要。
在 WebApp 的執行過程內,會處理兩種類型的動作。
若要較深入地瞭解 WebApp 執行時期環境,最好能夠瞭解個別要求的執行路徑。
對上面進行的 WebApp 要求,要求取得相同要求端之後續要求的高階步驟如下。
WebAppAccess 是執行中應用程式的程式設計師介面。
透過此介面,程式設計師可以存取並修改所有實例特定的執行時期元件,例如變數、鏈結的「模型」及鏈結的 Java 物件。 無法修改 (唯讀) 的元件為頁面、方法、系統事件接聽器及錯誤處理常式,您可以透過 WebApp 介面來存取它們。 開發人員可以在方法、LJO 及 JSP 頁面中取得 WebAppAccess 介面 API。 您可以透過 WebAppAccess API 存取 WebApps、變數及鏈結的模型。
在 IBM WebSphere Portlet Factory 中, 您可以使用多種方法,將 Java 程式碼併入應用程式。
您可以使用 WebAppAccess 物件,來設計 WebSphere Portlet Factory 執行時期和 API 的程式。 如需在 WebSphere Portlet Factory 中使用 Java 的相關資訊,請參閱產品 Wiki 中的文章在 Web 應用程式中使用 Java 。
WebApp 是產生程序的結果。 如果對您建立的模型進行設定檔作業,則會依需要建立唯一版本的 WebApp。 WebApp 包含執行應用程式所需的所有結構資料。
WebApp 上內含的元件為頁面、方法、動作清單、變數、鏈結的 Java 物件、鏈結的模型、系統事件接聽器及錯誤處理常式。
第一次實例化 WebAppAccess 時,會將 WebApp 的執行時期可更改的元件從 WebApp 複製到 WebAppAccess 物件。 這些元件是變數、鏈結的模型及鏈結的 Java 物件。 這可讓 WebAppAccess 修改那些項目,而不需要毀損共用的 WebApp 物件。
WebApp webApp = webAppAccess.getWebApp();
鏈結的模型會提供一個機制,可讓 WebApp 開發人員重複使用模型功能,以及在其他 WebApp 之間共用模型功能。
透過鏈結模型,即可對要求鏈結的模型顯現鏈結目標模型的公用功能 (例如,方法或頁面)。
若要新增鏈結的模型,請使用「鏈結的模型」建置器來指定要鏈結至的模型。 「鏈結的模型」建置器會將具名的位置新增到模型中,其包含正在鏈結的目標模型的相關資訊。 下面的範例顯示正在鏈結至模型 B 的模型 A,將 LM1 作為本端鏈結的模型參照名稱使用。
建置器的名稱會作為字首名稱使用,並且必須使用它來存取鏈結的模型功能。 例如,若您已新增鏈結的模型,且已在其中指定 LM1 作為建置器名稱,則應該使用「鏈結的模型」建置器名稱、句點 (.) 分隔字元及頁面名稱,來參照該模型中的頁面。
webAppAccess.processPage("LM1.HomePage");
也使用類似的格式,在鏈結的模型上呼叫方法。
String value = webAppAccess.callMethod("LM1.doWork");
鏈結至模型後,您可以建立在階段作業內共用之模型的單一實例,或者也可以指定在階段作業內不共用的鏈結模型。 如果不共用鏈結的模型,則若有多個「鏈結的模型」建置器使用該模型,便會建立多個該模型的實例。
將鏈結的模型指定為「非階段作業單態」時,會針對給定的要求端階段作業建立此模型的多個實例。
參照相同模型的其他鏈結的模型會取得它們專屬的唯一實例。 在非單態模式中,鏈結的模型不是儲存在要求端階段作業中,而是作為參照,保留在鏈結它們的模型中。 例如,若模型 A 及模型 B 在模型 C 中鏈結,則會針對給定的階段作業建立兩個模型 C 的實例。 在母項模型中鏈結的模型位置會參照每個實例。
因為模型 C 有多個實例,且使用者階段作業中沒有它的參照,則模型 C 頁面中的鏈結需要指回鏈中的最高單態母項模型。 例如,若 HomePage 內含連至模型 doWork 方法的鏈結,則該鏈結會類似於下列內容:
/webengin/A/Action:LM1.doWork
如果我們新增另一個鏈結的模型,且模型 C 目前在模型 D 中鏈結,而您想要模型 D 中的頁面鏈結至它的 main 方法,則鏈結會類似於下列內容:
/webengin/A/Action:LM1.LM2.main
在此範例中,LM2 是新增至模型 C 之鏈結模型的建置器名稱。
將鏈結的模型指定為「階段作業單態」時,只會針對給定的階段作業建立一個此模型的實例。
因為模型 C 只有一個實例,且要求端階段作業中具有它的參照,則模型 C 頁面中的鏈結,可以直接指回它本身,來進行內部動作。 例如,若 HomePage 內含連回模型 doWork 方法的鏈結,則該鏈結會類似於下列內容:
/webengin/C/Action:doWork
鏈結之模型的 WebAppAccess 可以用來設定或變更與鏈結的模型位置相關聯的實例化模型。
// create or get a singleton instance of model "C"
WebAppAccess modelC = webAppAccess.getModelInstance("C", null, true);
// Get the linked model slot holder
LinkedModel linkedModel = webAppAccess.getLinkedModel("LM1");
// Now set the instance on the linked model slot
linkedModel.setLinkedModelInstance(modelC);
現在,當進行 LM1 的呼叫時,它們會移至新的模型。 這假設您在換出鏈結的模型時,以包含可能會呼叫之相同方法/頁面的模型來取代它們。
WebApp 方法及動作清單會轉換為已產生的 Java 類別,它代表所有 WebApp 方法及動作清單。
針對 WebApp 的每個唯一實例,會產生一個 Java 類別。 產生的類別名稱將是 WebApp 名稱加上唯一的字尾,使用它可以識別用來產生 WebApp 的設定檔資料。
如果在 WebApp 方法或其他 LJO 中,您可以使用兩種方式中的其中一種來呼叫 LJO 方法。
webAppAccess.callMethod("MyLJO.doWork", "foo");
在此範例中,doWork 的實際簽章如下所示:
public void doWork(WebAppAccess webAppAccess, String name);
透過 callMethod(..) 呼叫它,會自動將 WebAppAccess 當成第一個引數進行傳遞。
您也可以取得 LJO 的實例,並進行直接呼叫,如下所示:
SampleLJO myLJO = (SampleLJO)webAppAccess.getVariables().getObject("MyLJO");
myLJO.doWork(webAppAccess, "foo");
如果已經指定 LJO 當成已產生之方法類別的基礎類別,則可以直接呼叫該方法,而不需要使用鏈結的 Java 物件建置器名稱作為字首 (不使用 "MyLJO.")。
webAppAccess.callMethod("doWork", "foo");
如果是在 WebApp 方法或 LJO 中,您可以使用 WebAppAccess callMethod(..) 方法 (如同您對 WebApp 方法所做的動作) 來呼叫鏈結的模型 LJO 方法,只是在方法名稱中,您必須指定鏈結的模型建置器呼叫名稱,再加上鏈結的模型中 LJO 建置器呼叫名稱,以及 LJO 上的方法名稱。
webAppAccess.callMethod("MyLinkedModel.MyLJO.doWork", "foo");
在此範例中,doWork 的實際簽章如下所示:
public void doWork(WebAppAccess webAppAccess, String name);
透過 callMethod(..) 呼叫它,會自動將 WebAppAccess 當成第一個引數進行傳遞。
您也可以取得「鏈結的模型」的實例,並使用「鏈結的模型」WebAppAccess 上的 callMethod(..),如下所示:
WebAppAccess linkedWebAppAccess = webAppAccess.getLinkedModel("MyLinkedModel");
linkedWebAppAccess.callMethod("MyLJO.doWork", "foo");
或者,您也可以直接移至 LJO 實例並進行呼叫。
WebAppAccess linkedWebAppAccess = webAppAccess.getLinkedModel("MyLinkedModel");
SampleLJO myLJO = (SampleLJO)linkedWebAppAccess.getVariables().getObject("MyLJO");
myLJO.doWork(linkedWebAppAccess, "foo");
從 Java 程式碼呼叫方法可以有兩種方式,視您進行呼叫的位置而定。
webAppAccess.callMethod("doWork", "foo");
public void doWork(WebAppAccess webAppAccess, String name);
透過 callMethod(..) 方法發出呼叫,會自動將 WebAppAccess 當作第一個引數進行傳遞。
doWork(webAppAccess, "foo");
如果在 WebApp 方法或 LJO 中,您可以使用 WebAppAccess callMethod(..) 方法 (如同您對 WebApp 方法所做的動作) 來呼叫鏈結的模型方法,只是在方法名稱中,您必須指定鏈結的模型建置器呼叫名稱及方法名稱。
webAppAccess.callMethod("MyLinkedModel.doWork", "foo");
在此範例中,doWork 的實際簽章如下所示:
public void doWork(WebAppAccess webAppAccess, String name);
透過 callMethod(..) 呼叫它,會自動將 WebAppAccess 當成第一個引數進行傳遞。
如果 IBM WebSphere Portlet Factory 應用程式利用多個模型來進行運作,您可能需要將資料從一個模型傳送至另一個模型。
在模型間進行通訊有多種方式。
事件為具名的播送,這些播送會送達接聽事件的階段作業 (例如,針對相同使用者) 中的任何模型。 有兩種類型的事件:一般事件及小組件事件。
事件可以宣告為包含引數,並且會在發動事件時指定引數值。 若為一般事件,給定事件的所有使用者,都應該要以相同的方式進行宣告。
若為一般事件,將「事件宣告」建置器置於單一模型中,然後將該模型匯入要發動或處理事件的任何其他模型中。 事件是跨階段作業的具名播送。 在發動事件時,相同使用者正在執行的其他任何模型都可以捕捉到該事件。
當您直接或透過「匯入的模型」建置器將「事件宣告」建置器併入模型中時,建置器會在您的 WebApp 中建立一個稱為 fireXxx 的方法,其中 Xxx 是事件名稱。 此方法具有正確的引數 (如在「事件宣告」建置器中所定義的引數)。
若要處理事件,請建立與「事件宣告」具有相同引數的方法,然後建立一個「事件處理常式」建置器,告知系統將該具名事件遞送至該方法。 如果已建立模型的實例,則該模型就會接聽發動該事件的任何模型 (包括您自身的模型在內)。 當您知道有某個模型 (或模型類型),但您沒有該模型的直接鏈結時,事件是一種進行通訊的理想技術。
若為小組件事件,請使用「小組件事件」建置器輸入來指定小組件是發動、處理還是同時發動並處理事件。 指定如何在相同的對話框中處理事件。
您可以將階段作業資料儲存在簡式對映表中,因此兩個不同的模型只需使用相同的索引鍵,就可以共用相同的物件。
模型可以使用 WebAppAccess 物件上的 getWebAppData 方法,儲存階段作業中的資料。 資料會儲存在簡式對映表中,因此兩個不同的模型只需使用相同的索引鍵,就可以共用相同的物件。
IBM 致力於讓每個人(不論其年齡或能力)都可以使用產品。
此產品使用標準的 Microsoft® Windows® 導覽鍵。
如需 IBM 及協助工具的相關資訊,請參閱 IBM 協助工具中心。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">DTD 應參照支援的文件類型宣告。
協助工具特性可協助身體殘障 (如行動受限或視力不佳) 的使用者順利使用資訊技術產品。
如果您想要 Windows 使用為易於閱讀而設計的顏色及字型,請使用「高反差」模式設定。 已經使用 Microsoft Windows XP「高反差」模式中的 1152 x 864 解析度測試過 Eclipse 的「高反差」。 您可以使用「高反差」模式已測試的解析度或更高解析度。
若要使用「高反差」模式,請開啟「Windows 控制台」,按兩下協助工具選項以開啟「協助工具選項」對話框,按一下顯示標籤,然後選取使用高反差。
Eclipse 提供一組可以在 Eclipse 工作台中使用的按鍵連結。 Eclipse 將按鍵連結定義為呼叫指令之組合鍵與指令的關聯。 若要檢視在 WebSphere Portlet Factory Designer 運作時可使用的 Eclipse 按鍵連結清單,請按一下或按 Ctrl+Shift+L。 如需 Eclipse 按鍵連結的詳細資訊,請參閱「說明」中的工作台使用手冊。
此產品使用標準 Windows 導覽鍵。 如需 Eclipse 中協助工具特性及鍵盤導覽的相關資訊,請參閱「說明」中的工作台使用手冊。
您可以使用鍵盤導覽,在所有視圖及編輯器之間導覽。 當您在視圖及編輯器之間導覽時, WebSphere Portlet Factory Designer 會記住選取的最後一個項目,所以必要時您可以在兩個項目之間快速導覽。 例如,如果焦點位於「專案瀏覽器」中且已開啟建置器呼叫編輯器,則按 Ctrl+F7,可以啟動檢視功能表並從檢視功能表選取編輯器。 畫面焦點停駐在建置器呼叫編輯器後,可使用 Ctrl+F7 在「專案瀏覽器」及建置器呼叫編輯器之間來回切換。
| 鍵盤組合 | 動作 |
|---|---|
| Ctrl+F6 | 啟動編輯器功能表並在開啟的編輯器之間導覽 |
| Ctrl+F7 | 啟動檢視功能表並在開啟的視圖之間導覽 |
| Ctrl+E | 從編輯器啟動編輯器下拉功能表,以在開啟的編輯器之間導覽 |
| Ctrl+Page Up、Ctrl+Page Down | 在視景的模型編輯區中開啟的標籤之間導覽。 標籤可以位於「應用程式樹狀結構」畫面上方的列中或位於建置器呼叫編輯器下方的列中。 組合鍵可在焦點停駐畫面的列中使用。 |
| Alt+(-) | 啟動檢視功能表,以移動視圖標籤、調整視圖大小、存取快速視圖、分離視圖、最小化及最大化視圖 |
| Alt+Page Up、Alt+Page Down | 上下移動建置器呼叫編輯器垂直捲軸。 |
| Ctrl+Alt+Tab | 從左側的表格移出至右側的對應欄位。 |
| Shift+Alt+Page Up、Shift+Alt+Page Down | 左右移動建置器呼叫編輯器水平捲軸。 |
| 下移鍵 | 向下導覽功能表選項 |
| 上移鍵 | 向上導覽功能表選項 |
| 右移鍵 | 導覽至子功能表選項 |
| 左移鍵 | 從子功能表導覽至功能表選項 |
如果您發現建置器呼叫編輯器難以閱讀,則可以嘗試使用更大的字型或較低的螢幕解析度。 如果這些動作都不足以提高易讀性,則可以在其自己的視窗中執行建置器呼叫編輯器。
您可以使用鍵盤導覽來選取表格中的焦點。 不過,在建置器呼叫編輯器的表格中進行導覽及編輯與編輯一般表格資料不同。 在建置器呼叫編輯器中,選取表格資料格中的某個選項可在表格外部進行新輸入。 一般的使用情況是離開具有焦點的資料格,並將焦點置於第一個新輸入中。 為了將焦點從表格的資料格變更為第一個新輸入,建置器呼叫編輯器支援 Ctrl+Tab 鍵組合。 這樣就無需多次按 Tab 鍵來導覽到表格尾端,並在最後一列中按下移鍵來離開表格而導覽至新輸入。 此組合會將焦點變更為與目前擁有焦點之資料格中所選選項相關的第一個輸入。
| 鍵盤組合 | 動作 |
|---|---|
| 右移鍵 | 如果現行焦點位於資料格尾端,則移至下一個資料格的開頭 |
| 左移鍵 | 如果現行焦點位於資料格開頭,則移至前一個資料格的尾端 |
| 上移鍵 | 如果現行焦點位於資料格的第一行,則移至上方的資料格 |
| 上移鍵 | 如果現行焦點位於表格的第一列,則離開表格 |
| 下移鍵 | 如果現行焦點位於資料格的最後一行,則移至下方的資料格 |
| 下移鍵 | 如果現行焦點位於表格的最後一列,則離開表格 |
| Tab | 移至下一個資料格 |
| Tab | 如果焦點位於表格的最後一個資料格,則將新的一列附加至表格並移至該資料格 |
| Ctrl+Tab | 移出表格 |
| Shift+Tab | 移至前一個資料格 (如果焦點位於第一個資料格,則無導覽) |
「IBM 支援中心」提供 IBM WebSphere Portlet Factory 產品問題報告的協助。
若要聯絡「IBM 支援中心」,您的公司必須具有作用中的 IBM 軟體維護合約,且您必須取得授權,才可以提交問題給 IBM。 如需可用維護合約類型的相關資訊,請參閱下列位置中軟體支援手冊的"支援資料夾"。
http://techsupport.services.ibm.com/guides/services.html安裝產品涉及執行程式及回答一些問題。
安裝完成後,您可以設定可在開發 Web 應用程式時使用的各種延伸規格。
使用此手冊,可以安裝 IBM WebSphere Portlet Factory 7.0.1 版。
此手冊適用於 WebSphere Portlet Factory,但這項安裝作業可能會包含安裝其他產品。
預設安裝選項包含支援的 Eclipse 版本。或者,可將 WebSphere Portlet Factory 安裝至下列其中一個支援版本的 IDE。
安裝之前,您必須安裝 IBM WebSphere Portal 或其中一部支援的應用程式伺服器。 如需應用程式伺服器版本及修補程式層次的相關資訊,請參閱產品版本注意事項主題中詳細的系統需求小節。
然後,您可以遵循WebSphere Portlet Factory 產品安裝手冊中所述的步驟,開始瀏覽產品。
安裝 WebSphere Portlet Factory 之前,您應安裝:
若要在 Linux 上將 WebSphere Portlet Factory 安裝至現有的 Rational Application Developer 或 Rational Software Architect 安裝中,請遵循WebSphere Portlet Factory 產品安裝手冊中所述的程序。
config/win_silent_install.properties config/linux_silent_install.properties內容檔包含安裝程式的預設回應。如需產生自己的無聲自動安裝回應檔的相關資訊,請參閱WebSphere Portlet Factory 產品安裝手冊。
安裝程式會將所有內容安裝到目標位置,而不會向使用者顯示任何輸出。當日誌檔建立在安裝目錄的根目錄中時,您會瞭解到安裝已完成。
您可以執行安裝執行檔,選取想要的選項,並將那些選項儲存至可用於無聲自動安裝產品的文字檔中。
遵循WebSphere Portlet Factory 產品安裝手冊中的程序,使用您的回應檔而非提供的內容檔執行無聲自動安裝。
在您順利安裝 WebSphere Portlet Factory Designer 之後,必須建立新的專案。 建立專案時,請提供安裝的應用程式伺服器特定資訊,以及 WebSphere Portal 伺服器特定資訊。此程序會完成 WebSphere Portlet Factory 安裝的部署階段。
WebSphere Portlet Factory Designer 會提供「新建專案」精靈,來協助您建立專案。 這個多頁精靈會引導您完成與專案建立及部署相關的步驟,並為您建置專案。說明專案設定及參數的「F1 說明」可用於精靈的每個頁面。 請參閱「F1 說明」,以瞭解給定頁面上的設定,並存取其他資訊的鏈結。
建立第一個專案的最佳方法是執行說明此程序的指導教學。 如果您正在使用 Windows 用戶端,則此指導教學可以從「歡迎使用」頁面或開始取得。請按一下。 如果您正在使用 Linux 用戶端,則此指導教學可以從 WebSphere Portlet Factory 說明系統取得。
遵循 WebSphere Portlet Factory 產品安裝手冊 或 WebSphere Portlet Factory 產品安裝手冊 中的步驟(視您的用戶端平台而定),然後遵循 WebSphere Portlet Factory 產品安裝手冊中的步驟,以移除 WebSphere Portlet Factory Designer 檔案及專案 WAR 檔。
本節討論將新版 WebSphere Portlet Factory 安裝至已安裝舊版的 IDE(Eclipse 或 IBM Rational)時,升級 IBM WebSphere Portlet Factory 外掛程式檔所需的程序。 本節還說明如何將使用舊版 WebSphere Portlet Factory Designer 所建置的專案,更新為最新專案版本。 最後,本節說明如何將 Portlet 升級為「Java Portlet 標準 API」。
升級「平面式」專案時,建立新的專案,並使用功能,將您的內容移轉至該專案中。 階層專案是 5.12 或 6.0 專案,且沒有 WebContent 目錄。 如果升級階層專案,則您將得不到資料類型支援的新增好處。
您必須修改使用舊的外掛程式檔建立的任何專案,讓這些專案可以包括與新外掛程式檔及特性集相關的變更。
如果您已將任何 Jar 檔新增至 /WEB-INF/work/lib 中,則需要在專案升級之後,以手動方式將它們新增至建置路徑。
WebSphere Portal 支援 WebSphere Portlet 的「Java Portlet 標準 API」。雖然設計用於已淘汰 WebSphere Native Portlet API 的 Portlet 可能繼續在 WebSphere Portal 中執行,但建議使用「Java Portlet 標準 API」來建置任何新的 Portlet。
若要升級舊版 WebSphere Portlet Factory 中建置的 Portlet,以使用「Java Portlet 標準 API」,請執行下列步驟。
IBM Tivoli® License Manager (ITLM) 辨識並監視在系統上安裝並使用的產品及其版本、版次及修正套件。這可讓 IBM 傳送其客戶基本程式中安裝的產品更新,並可以針對產品及用量適當地開立帳單。它也可以防止針對相同產品的多個安裝開立帳單,該產品與各種 IBM 套裝軟體一起提供。
與 IBM WebSphere Portlet Factory 一起建立的應用程式及 Portlet WAR 檔的用法可透過 Tivoli License Manager 監視並追蹤。若要啟用此功能,您必須將 WebSphere Portlet Factory 產生的特定檔案及 Tivoli License Manager 可辨識的特定檔案,置於應用程式或 Portlet EAR 檔的根層次。
若要啟用 Tivoli License Manager 用法追蹤,請執行下列作業:
如果您想要安裝 WebSphere Portlet Factory,並使用協助工具的 JAWS 螢幕閱讀器,則需要執行下列額外步驟,才能正確啟動安裝。
使用「Web 轉換器」特性來啟用 IBM Lotus Expeditor (XPD) 6.1.1,以支援動態 JSP。
安裝並啟用 IBM Lotus Expeditor (XPD) 6.1.1,以使用「Web 轉換器」特性支援動態 JSP。
IBM WebSphere Portlet Factory 中提供數個與後端系統的整合。
您可以將整合延伸新增至專案,就如同新增任何其他特性集一樣。 這可讓您使用延伸提供的建置器。
然而,在可以使用延伸之前,請執行相關入門主題中所述的必要安裝、配置及設定步驟。
本主題說明「Lotus 協同作業延伸」。
此套件為 IBM Lotus Domino 元件及服務提供 Domino 建置器,可擴充 WebSphere Portlet Factory 的功能及彈性。
此特性集還包括支援遠端呼叫並執行 Domino 代理程式的功能,以及使用其他安全保護方法 (例如,LTPA 記號或 IBM WebSphere Portal Server 認證) 的功能。 兩者都會啟用 Portlet 使用者的單一登入。
您使用這個套件建立的 Portlet 及小組件也可以併入狀態提示,以使用 Lotus 協同作業服務,例如交談、電子郵件、設定檔探索,以及作者與文件搜尋。 另外,使用 WebSphere Portlet Factory 獨特的功能來自訂 Portlet 及小組件,您可以建立自訂的 Portlet 或小組件,僅向您的使用者提供所需的視圖及協同作業特性。
採用安裝任何其他特性集相同的方法來安裝此協同作業套件。
為方便起見,您可以設定內容檔,以建立及控制 Domino 伺服器設定。 當您在「Domino 資料存取」建置器中選取此檔案時,此檔案會用來建立與 Domino 伺服器的連線設定。
此檔案位於專案的 WEB-INF/config/domino_config 目錄中。 內容檔用於指定基本 Domino 連線內容,例如 Domino 伺服器的名稱及有效的 Domino 使用者名稱及密碼。 典型的 Domino 內容檔可能命名為 domino.properties,並包含下列各項:
# Domino application server ServerName= # Domino User Name UserName= # Domino Password PassWord= # Domino server http port # The http port is used when the builder is configured to retrieve rich rext items as HTML. # The Domino Attachment builder also uses these values when creating http # links to attachments in the documents. DominoHttpPort=80 # SSL Settings # When rich text items are fetched as HTML, relative urls to Domino resources (images, # other documents, etc.) in the html are converted to absolute URLS to the Domino # resource. Thus, the browser will request these resources using the absolute URL. # If the absolute URLS to Domino resources should use https, set DominoConvertAbsUrlsToSSL # to true. Also set DominoHttpsPort to your Domino server's https port. # The Domino Attachment builder will also use these properties when forming # the URL to the attachment. DominoConvertAbsUrlsToSSL=true DominoHttpsPort=443 # If the application on the application server should use https when fetching rich text # items from Domino's web server, set the following property to true. # Note: if this property is true, the certificate from Domino's web server will need # to be added to your application server JVM's cacerts file. DominoUseHttps=false
若要使用這個套件及其包含的建置器,您必須具有 Domino 伺服器的 IIOP (網際網路交互 ORB 通訊協定) 存取權。 如需相關資訊,請參閱 Domino 說明。
若要啟動狀態提示功能,您必須正在執行 IBM WebSphere Portal Server Extend 或 WebSphere Portal Experience 產品,而且這些產品中的協同作業元件必須正確地配置並在 Domino 伺服器上執行。 這些元件包括下列其中一或多項:Sametime® (用於交談)、Discovery (用於使用者設定檔顯示畫面、作者/文件搜尋及郵件)。
檢查此產品的版本注意事項,以查看哪些 Lotus Collaboration 產品支援這個套件的元件。
若要讓「Domino 資料存取」建置器存取 Domino 資源,必須配置 Domino 伺服器安全,以適當地容許及限制遠端呼叫。 控管此存取權的配置設定在「Domino 管理者」中設定。
您可以檢查現行伺服器文件的安全標籤,以檢視安全設定。 如需建立這些設定的相關資訊,請參閱 Domino Designer 說明。 在 Domino 第 6 版中,請參閱下列 Domino Designer 說明主題:。 伺服器需求一節會討論安全設定。
Domino 伺服器必須支援對資料庫的瀏覽,以容許將可用資料庫、視圖、表單及代理程式的清單,移入建置器中的各種控制項。 讓資料庫可瀏覽的 Domino 伺服器設定,位於 Domino 目錄中的伺服器文件 標籤中。 您還應該開啟安全標籤,然後將容許匿名 Notes 連線設為啟用 (是)。
若要透過從 Portlet 或小組件遠端呼叫 Domino 代理程式的方法,來執行該代理程式,則您必須簽署該代理程式。 您的企業安全原則會指出執行此動作的方式,但是最後結果必須是 Portlet 或小組件使用者具有可以從 Portlet 或小組件內部,遠端呼叫代理程式的權限。
若要利用 SSL 提供的安全,請執行某些程序,以針對 SSL 作業正確地配置 WebSphere Portlet Factory 及 Domino。 以下是針對 Domino 連線使用 SSL 所需的步驟。
bowstreet.domino.session.enableSSL=true
使用 SSL 啟用 DIIOP 埠時,Domino 伺服器會產生 TrustedCerts.class 檔。 此檔案包含伺服器所驗證的憑證。
install_directory\Designer\eclipse\plugins\com.bowstreet.designer.core_version-number\lib
Bundle-ClassPath: designercore.jar, lib/jakarta-poi.jar, lib/jxl.jar, lib/sapjco.jar, lib/SiebelJI.jar, lib/SiebelJI_Common.jar, lib/SiebelJI_enu.jar, lib/Siebel.jar, lib/sslClasses.jar lib/activation.jar, lib/portlet.jar, lib/bstres.jar, lib/bstres_nl1.jar, lib/builderui-res.jar, lib/builderui-res_nl1.jar, lib/jdom.jar, lib/builderimages.jar, lib/NCSO.jar, lib/packman.jar, lib/factory.jar, lib/builderui.jar, lib/j2ee.jar, lib/icons.jar, lib/wsdl4j.jar, lib/classparser.jar, lib/axis.jar, lib/commons-fileupload.jar, lib/commons-logging.jar, lib/commons-discovery.jar, lib/commons-pool.jar, lib/wc50.jar, lib/WidgetExtension.jar, lib/WidgetExtension_nl1.jar, lib/xercesImpl.jar, lib/xml-apis.jar, bin/, lib/log4j.jar若為 Eclipse 3.2.x 版及舊版本,請編輯位於下列位置中的 plugin.xml 檔,以併入此 Jar 檔。
install_directory\WPFDesigner\eclipse\plugins\com.bowstreet.designer.core_version-number
例如,這樣的編輯可能會如下所示:
<library name="lib/sslClasses.jar"> <export name="*"/> </library>
此新增動作會讓 TrustedCerts.class 檔可供執行時期環境使用。
domino_server.my_company.com:63148
開始建置 Domino Portlet 的方法有兩種:
從 WebSphere Portal 內,使用「Domino 自訂程式」來複製,然後修改 Domino Portlet。 如需相關資訊,請參閱3.1 針對進階使用者。
採用 Domino 指導教學並檢查範例模型。 如需相關資訊,請參閱3.2 針對開發人員。
請遵循這些簡單步驟,來建置自訂 Domino Portlet。
This portlet has not been configured. Use the portlet's Configure icon to configure the portlet. This involves specifying a Domino server, database and view, in additional to several other Domino configuration settings. Press the portlet's Help button to display additional information about configuring the portlet and viewing it in the WebSphere portal.
採用 Domino 指導教學並檢查範例模型。
與 WebSphere Portlet Factory 套裝在一起的是與 Domino 第 8 版的 NCSO.jar 具有舊版相容性的產品,它包含 Domino CORBA 實作中的效能加強功能。
本主題說明「PeopleSoft 延伸」。
「PeopleSoft 延伸」為 IBM WebSphere Portlet Factory 使用者提供下列重要特性:
採用安裝任何其他特性集相同的方法,來安裝「PeopleSoft 延伸」。
可以從您的 PeopleSoft 安裝或「PeopleSoft 客戶服務代表」取得「PeopleSoft Java 物件配接器」JAR 檔 (即 psjoa.jar)。
JAR 檔包含建置器用來存取 PeopleSoft 伺服器的 Java 類別。 如果您具有 PeopleSoft 的本端安裝,請在 PS_HOME 目錄中搜尋此檔案的副本。
若要確認正確安裝建置器及 JAR 檔,請遵循下列步驟:
使用 PeopleSoft 建置器的第一步是建立連線內容檔。 此檔案位於專案的 /WEB-INF/config/peoplesoft_config/ 目錄中。 內容檔 (default_connection.properties) 用來指定連線內容,例如 PeopleSoft 伺服器的名稱及有效的 PeopleSoft 使用者名稱及密碼。
一般內容檔可能包含下列內容:
#Default connection properties for the PeopleSoft Builders # PeopleSoft application server hostserver=pplsoft:9000 # Logon user name UserName=jdoe # Logon password PassWord=PS
PeopleSoft 建置器支援您後端 PeopleSoft 伺服器之階段作業的儲存區作業。 依預設,會停用階段作業儲存區作業 (這是 WebSphere Portlet Factory Designer 環境的合理配置)。 然而,在伺服器上,您可能想要啟用儲存區作業,以最小化建立的階段作業數目,並改進整體建置器執行時期效能。
您可以將下表中的內容新增至 PeopleSoft 專案的 .../WEB-INF/config/override.properties 檔中,以啟用及配置 PeopleSoft 階段作業儲存區作業。
| 內容 | 預設值 | 效果 |
|---|---|---|
| bowstreet.peoplesoft.session.pool.enabled | false | 如果已定義且設為 TRUE,則會啟用階段作業儲存區作業。 |
| bowstreet.peoplesoft.session.pool.maxActiveSessions | 8 | 一次可處於作用中階段作業的數目上限。 值為負數時,作用中階段作業數目沒有限制。 |
| bowstreet.peoplesoft.session.pool.maxIdleSessions | 8 | 儲存區中同時可處於閒置的階段作業數目上限。 值為負數時,閒置的階段作業數目沒有限制。 |
| bowstreet.peoplesoft.session.pool.maxWait | -1 | 等待階段作業回到儲存區的時間上限 (以毫秒為單位)。 值為負數時,發出要求的執行緒會無限期地等待傳回階段作業。 如果指定的時間內沒有階段作業回到儲存區,則發出要求的執行緒會接收到異常狀況。 |
| bowstreet.peoplesoft.session.pool.maxIdleTimeSeconds | 1800 | 收回階段作業之前,在儲存區中容許其保留為閒置狀態的時間上限 (以秒為單位)。 值為負數時,不會基於閒置時間收回階段作業。 |
| bowstreet.peoplesoft.session.pool.idleSessionSweepSeconds | 30 | 清理儲存區以尋找要收回之閒置階段作業的最長時間間隔 (以秒為單位)。 值為負數時,會停用儲存區清理。 |
| bowstreet.peoplesoft.session.pool.maxAgeMinutes | -1 | 無論其閒置階段作業設定為何,收回階段作業之前的經歷時間上限 (以分鐘為單位)。 值為負數時,永遠不會因階段作業的經歷時間而將其收回。 註: 此為不是在「共用」程式庫中實作的 WebSphere Portlet
Factory 特定特性/內容。
|
本主題說明 SAP 延伸。
「SAP 延伸」為 IBM WebSphere Portlet Factory 使用者提供下列重要特性。
「SAP 延伸」中的元件支援下列 SAP 產品版本。
| SAP 產品 | 支援的版本 |
|---|---|
| R3 | 如需受支援的版本,請參閱 WebSphere Portlet Factory 版本注意事項主題的詳細系統需求。 |
安裝 SAP 延伸:
-rwxr-xr-x (755)擁有者應為 root,而群組應設為您的 WebSphere Portlet Factory 使用者所屬的群組。 如果您的 WebSphere Portlet Factory 使用者不是 WebSphere Application Server 使用者,則您必須依據「SAP Java 連接器」安裝文件中的指示,設定該使用者的環境,才能讓該使用者存取 SAP 程式庫。
C:\Program Files\IBM\WebSphere Portlet Factory\Designer\eclipse\plugins\com.bowstreet.designer.core_latest version
/home/user/IBM/Designer/eclipse/plugins/com.bowstreet.designer.core_latest version
<?xml version="1.0" encoding="UTF-8"?> <web-app> <dependency> <groupId>wpf_integration</groupId> <artifactId>WPF_JCo3Common.jar</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>wpf_integration</groupId> <artifactId>sapjco3.jar</artifactId> <version>3.0.5</version> </dependency></web-app>
若要確認是否正確安裝建置器及 JCo,請遵循下列步驟:
使用 SAP 建置器的第一步是建立目的地內容檔。此檔案位於專案 WEB-INF/config/sap_config/ 目錄中。
內容檔用於指定 SAP 連線內容,如 SAP 伺服器的名稱及有效的 SAP 使用者名稱及密碼。 典型的 SAP 內容檔可能命名為 my_sap.properties,並包含下列內容:
# SAP application server jco.client.ashost= # Logon user jco.client.user= # Logon password jco.client.passwd= # SAP client jco.client.client=000 # Logon language jco.client.lang=EN # SAP system number jco.client.sysnr=00
預設 SAP server.properties 檔會與「 SAP 建置器」一起安裝。 此內容檔位於 WEB-INF/config/sap_config 目錄中。 您可以使用此檔案建立基本的 SAP 設定,以及檢視有效內容值的範例。 依據安裝時的配置,此檔案適用於在本端主機上執行的 MiniSAP 伺服器。
安裝並配置「SAP 延伸」之後,請執行物件導覽器模型。 您可以使用此模型探索 SAP 系統中的物件。 請使用下列步驟。
SAP 建置器使用 SAP JCo 介面(SAP 系統提供)連接至 SAP。此介面可讓 Java 應用程式與任何「SAP 系統」進行通訊。SAP JCo 介面支援連線儲存區作業,並監視 Portlet 與 SAP 通訊的管理。
JCo 介面會定義數個新內容,用於啟用及配置目的地儲存區。 從用戶端的角度來說,目的地是一組連線內容,由 JCo 介面用於建立與 SAP 伺服器進行通訊。這些儲存區內容可新增至 WEB-INF/config/SAP_config/. 下儲存的內容檔中:
jco.destination.peak_limit=5 jco.destination.pool_capacity=1 jco.destination.expiration_time=60000
尖峰限制會定義一次目的地作用中連線的數目上限。 儲存區容量會定義在目的地儲存區中維護的閒置連線數目;值零會停用儲存區的使用。 有效期限會定義在關閉及移除閒置連線之前,其處於目的地連線儲存區中的時間上限(毫秒)。
已發現尖峰限制的預設值 5 可以提供足夠數目的連線及良好的效能。
此區段與已部署的 WAR 相關,可存取使用 WebSphere Portlet Factory 實作的 SAP。如果您具有混合環境,則您可能需要撰寫少量自訂程式碼,以讓 WebSphere Portlet Factory 及非 WebSphere Portlet Factory WAR 協調其配置,並透過 JCo 介面存取 SAP。
如果您已經實作使用 WebSphere Portlet Factory 存取 SAP 的所有已部署 WAR,請忽略本小節。
SAP JCo 介面使用目的地的概念,來定義用戶端如何存取伺服器。 從用戶端的角度來看,目的地是一組具名的連線內容,JCo 介面使用這些內容來建立與內容中所指定之伺服器的連線。 這些連線不會向用戶端顯示,因此需要所有用戶端透過將目的地名稱傳遞至 JCo 方法,來與 SAP 伺服器進行通訊。
WebSphere Portlet Factory 會實作負責管理目的地內容集的登錄(也稱為目的地資料提供者)。 此登錄會為每個內容集指派唯一的目的地名稱,然後在用戶端在 JCo 方法中參照目的地名稱時,向 JCo 提供適當的內容集。
針對 JCo 執行時期,使用 JCo 介面,只能配置一個目的地資料提供者。透過 JCo 介面存取 SAP 的所有 WAR 都必須使用相同的目的地資料提供者。目的地資料提供者登錄位於 WPF_JCo3Common.jar 檔案。 藉由將此 JAR 置於應用程式伺服器從中載入共用 JAR 檔的目錄,您已讓 WebSphere Portlet Factory 目的地資料提供者實作可用於所有 WAR,而無論其是否使用 WebSphere Portlet Factory 進行建置。如果存取 SAP 的所有 WAR 都已經使用 WebSphere Portlet Factory 進行建置,則不需要再執行其他步驟。 不過,如果部署了非 WebSphere Portlet Factory WAR,且這些 WAR 透過 JCo 介面來存取 SAP,則需要讓那些非 WebSphere Portlet Factory WAR 使用 WebSphere Portlet Factory 的登錄,或者讓 WebSphere Portlet Factory 使用支援其他 WAR 的目的地資料提供者。
WebSphere Portlet Factory 包含一個延伸點,可讓您使用由協力廠商實作的目的地資料提供者。 目的地資料提供者必須實作位於 WPF_JCo3Common.jar 檔案中的 com.bowstreet.builders.webapp.methods.JCo3Common.DestinationRegistry 介面。 此介面可讓 WebSphere Portlet Factory 登錄由 SAP 建置器所使用的目的地內容集。藉由將內容 bowstreet.sap.destinationRegistry 設為實作 DestinationRegistry 介面之類別的完整名稱,可將 WebSphere Portlet Factory 配置為使用協力廠商目的地資料提供者。 在執行時期,WAR 中的 SAP 建置器會對此類別的單一實例進行實例化,並使用該單一實例來登錄所有必要的目的地。
JCo 介面使用階段作業參照提供者,來產生階段作業 ID,以支援呼叫多個 SAP 函數,作為跨距多個執行緒之單一交易的一部分。 在 SAP 建置器執行時期, WebSphere Portlet Factory 會實作並使用階段作業參照提供者。 當針對 JCo 執行時期配置 JCo 介面時,該介面僅會使用一個階段作業參照提供者。 透過 JCo 介面存取 SAP 的所有 WAR 都必須使用相同的階段作業參照提供者。
WebSphere Portlet Factory 的階段作業參照提供者內含於 WPF_JCo3Common.jar 檔案中。 藉由將此檔案置於應用程式伺服器從中載入共用 JAR 的目錄,您已讓 WebSphere Portlet Factory 提供者實作可用於所有 WAR(無論是否使用 WebSphere Portlet Factory 進行建置)。如果存取 SAP 的所有 WAR 都使用 WebSphere Portlet Factory 進行建置,則不需要再執行其他步驟。 不過,如果部署了非 WebSphere Portlet Factory WAR,且這些 WAR 透過 JCo 介面來存取 SAP,則可能需要讓那些非 WebSphere Portlet Factory WAR使用 WebSphere Portlet Factory 的提供者,或者讓 WebSphere Portlet Factory 使用支援其他 WAR 的提供者。
WebSphere Portlet Factory 包含一個延伸點,可讓您使用由協力廠商實作的階段作業參照提供者。 提供者必須實作位於 WPF_JCo3Common.jar 中的 com.bowstreet.builders.webapp.methods.JCo3Common.SessionProvider 介面。 使用此介面, WebSphere Portlet Factory 會劃分 SAP 建置器所執行交易的開始及結束。藉由將內容 bowstreet.sap.sessionProvider 設為實作 SessionProvider 介面之類別的完整名稱,可將 WebSphere Portlet Factory 配置為使用協力廠商提供者。 在執行時期,WAR 中的 SAP 建置器會對此類別的單一實例進行實例化,並使用該單一實例來劃分所有交易。
本主題說明 Siebel 延伸。
Siebel 延伸為 IBM WebSphere Portlet Factory 使用者提供下列重要特性:
「Siebel 延伸」中的元件支援下列 Siebel 產品版本:
| Siebel 產品 | 受支援的版本 |
|---|---|
| Siebel CRM 解決方案 | 如需受支援的版本,請參閱 WebSphere Portlet Factory 版本注意事項主題的詳細系統需求。 |
「Siebel 延伸」使用「Siebel Java 資料 Bean」介面存取 Siebel 儲存庫。 因此,您必須要求 Siebel 系統管理者提供下列特定版本專用的 Siebel JAR 檔:
採用與安裝任何其他特性集相同的方法,來安裝此「Siebel 延伸」。
將 Siebel JAR 檔新增至 IDE。
C:\Program Files\IBM\WebSphere
Portlet Factory\WPFDesigner\eclipse\plugins\com.bowstreet.designer.core_latest
version
在下面選取要使用的伺服器,並遵循步驟來新增 Siebel JAR。
將 Siebel JAR 新增至 IBM WebSphere Application Server Community Edition (CE) 伺服器。
更新 Portlet Factory 中專案的 geromino-web.xml 檔
<dependency> <groupId>wpf_integration</groupId> <artifactId>SiebelJI_enu</artifactId> <version>7.8</version> </dependency> <dependency> <groupId>wpf_integration</groupId> <artifactId>siebel</artifactId> <version>7.8</version> </dependency>
所有其他應用程式伺服器
將 Siebel JAR 檔複製到某個目錄中,您的應用程式伺服器可從該目錄載入所有已部署 WAR 共用的 JAR 檔。 例如: /WebSphere/AppServer/lib/ext。
符合檔案編碼
若要順利通訊,則 Siebel 伺服器及外部 Siebel 用戶端 (例如 WebSphere Portlet Factory) 必須使用相容的檔案編碼。 例如,預設的 Windows 檔案編碼是 Cp1252。 在 RedHat Linux 上,預設檔案編碼是 UTF-8。
若要順利使用 Siebel 建置器,請確保您的用戶端平台符合 Siebel 伺服器所使用的檔案編碼。 例如,當 WebSphere Portlet Factory Designer 在 Linux 系統上執行時,JVM 的預設檔案編碼可以與 Siebel 伺服器所使用的預設檔案編碼不同。 Siebel 要求使用 Java API 來連接至 Siebel 伺服器的用戶端,具有與 Siebel 伺服器相同的預設檔案編碼。 如果預設檔案編碼設定不同,則在重新產生期間 Siebel 協調程式會失敗,且出現在 4 次嘗試中都無法開啟階段作業訊息。 這會導致模型錯誤,且模型不會執行。
-Dfile.encoding=utf8當您重新啟動 Eclipse 及 WebSphere Portlet Factory Designer 時,用戶端預設編碼會設為與伺服器相同的值,且 Siebel 建置器會正確地重新產生。
使用 testSiebelConnection.jsp 來測試 Siebel 連線
如果您想要使用 WebContent\factory\util\testSiebelConnection.jsp 來快速確保連線內容是正確的,則需要執行下列步驟:
http://yourserver:port/projectName/factory/util/testSiebelConnection.jsp
使用 Siebel 建置器的第一步是建立內容檔。 此檔案位於專案的 WEB-INF/config/siebel_config/ 目錄中。 此內容檔 (default_connection.properties) 用來指定連線內容,例如 Siebel 伺服器的連線字串,以及有效的 Siebel 使用者名稱及密碼。
一般內容檔可能包含下列內容:
#Default connection properties for the Siebel Builder ConnectString=siebel://10.10.2.125:2320/siebel_es/SSEObjMgr_enu/wicdemo9 UserName=sadmin Password=sadmin
Siebel default_connection.properties 檔是使用「Siebel 建置器」安裝的。 此內容檔位於 WEB-INF/config/siebel_config/ 目錄中。 您可以使用此檔案建立基本的 Siebel 設定,以及檢視有效內容值的範例。 依據安裝時的配置,此檔案可適用於在本端主機上執行的 Siebel 伺服器。
SiebelRepository 內容
RepositoryName=Siebel Repository使用作用中儲存庫的名稱取代 Siebel Repository。
Siebel 建置器支援對後端 Siebel 伺服器之階段作業的儲存區作業。 依預設,會停用階段作業儲存區作業 (這是 WebSphere Portlet Factory Designer 環境的合理配置)。 然而,在伺服器上,您可能想要啟用儲存區作業,以最小化建立的階段作業數目,並改進整體建置器執行時期效能。
您可以將下表中的內容新增至 Siebel 專案 .../WEB-INF/config/override.properties 檔中,以啟用及配置 Siebel 階段作業儲存區作業。
| 內容 | 預設值 | 效果 |
|---|---|---|
| bowstreet.siebel.session.pool.enabled | false | 如果已定義且設為 TRUE,會啟用階段作業儲存區作業。 |
| bowstreet.siebel.session.pool.maxActiveSessions | 8 | 一次可處於作用中階段作業的數目上限。 值為負數時,作用中階段作業數目沒有限制。 |
| bowstreet.siebel.session.pool.maxIdleSessions | 8 | 儲存區中同時可處於閒置的階段作業數目上限。 值為負數時,閒置的階段作業數目沒有限制。 |
| bowstreet.siebel.session.pool.maxWait | -1 | 等待階段作業回到儲存區的時間上限 (以毫秒為單位)。 值為負數時,發出要求的執行緒會無限期地等待傳回階段作業。 如果指定的時間內沒有階段作業回到儲存區,則發出要求的執行緒會接收到異常狀況。 |
| bowstreet.siebel.session.pool.maxIdleTimeSeconds | 1800 | 收回階段作業之前,在儲存區中容許其保留為閒置狀態的時間上限 (以秒為單位)。 值為負數時,不會基於閒置時間收回階段作業。 |
| bowstreet.siebel.session.pool.idleSessionSweepSeconds | 30 | 清理儲存區以尋找要收回之閒置階段作業的最長時間間隔 (以秒為單位)。 值為負數時,會停用儲存區清理。 |
| bowstreet.siebel.session.pool.maxAgeMinutes | -1 | 無論其閒置階段作業設定為何,收回階段作業之前的經歷時間上限 (以分鐘為單位)。 值為負數時,永遠不會由於階段作業的經歷時間而將其收回。 註: 此為不是在「共用」程式庫中實作的 WebSphere Portlet
Factory 特定特性/內容。
|
您可以配置工作環境的許多方面。
如需配置 WebSphere Portlet Factory 的相關資訊,請遵循此 Wiki 鏈結 http://www-10.lotus.com/ldd/pfwiki.nsf/xpViewRecent.xsp?searchValue=configure%2C%20configuring。
請遵循下列步驟,變更 WebSphere Portlet Factory Designer 喜好設定。
請遵循下列步驟,以還原 WebSphere Portlet Factory Designer 的預設喜好設定。
在 WebSphere Portlet Factory Designer 中,您可以設定各種喜好設定。
這些喜好設定會決定 WebSphere Portlet Factory Designer 編輯環境的功能與外觀,以及執行模型時要使用的伺服器執行時期資源。
WebSphere Portlet Factory Designer 的預設喜好設定集儲存在 WebSphere Portlet Factory Designer 中的 preferences.ini 檔案內,該檔案位於 eclipse\plugins\com.bowstreet.designer.ui 目錄中。 如果您變更預設的喜好設定,則自訂的喜好設定集會儲存在您的工作區中,如此就不會改寫預設喜好設定。 此儲存策略可讓您隨時還原預設的喜好設定。
兩個置換內容檔可用於取代在其他內容檔中設定的內容設定。
置換內容檔是:
designer_core_version_number/config
如果在開發期間變更內容,請使用此喜好設定來確保將變更正確地傳送到專案及 IBM 系統。
每次啟動 WebSphere Portlet Factory Designer 時,都會發生下列動作:
Designer Install Location/plugins/com.bowstreet.designer.core_x.y.z/config/override.properties
logging.driver.eventSink.directory=eclipseinstalldir /workspace/.metadata/.plugins/com.bowstreet.designer.core/logs logging.driver.eventSink.prefix=designer_event_ logging.event.flush.interval=1
這樣會確保將 WebSphere Portlet Factory Designer 日誌寫入適當的位置。 override.properties 中的所有其他內容都不會受到影響。
此表說明您可以變更的 WebSphere Portlet Factory Designer 編輯喜好設定。
| WebSphere Portlet Factory Designer 喜好設定 | 說明 |
|---|---|
| 瀏覽器指令 | 輸入執行模型時,要啟動的 Web 瀏覽器路徑。 註: 變更此設定僅會影響新的執行配置,而不會影響現有的執行配置。
|
| 置換內容檔位置 | 使用此設定,可以指定要使用的 override.properties 檔案。 此檔案中的設定用於取代在 preferences.ini 中建立的預設內容設定,還會決定日誌位置。 註: 對此欄位值進行的變更,要等到重新啟動 WebSphere Portlet
Factory Designer 時才會生效。
|
| IBM Support Assistant 位置 | 如果您已安裝 IBM Support Assistant,則指定用來啟動它的路徑。 |
| 顯示隱藏物件 | 啟用此勾選框時,可以設定 WebApp 視圖,使其顯示建置器呼叫新增至 WebApp 的所有物件。 當您按一下套用時,所有隱藏的物件都會顯示在「WebApp 視圖」中。 註: 不論顯示隱藏物件勾選框的狀態為何,由開發人員指定為隱藏物件的變數、方法、LJO 等,都不會顯示在「參照選擇器」中。
|
| 將視圖資料折行 | 啟用此勾選框時,可以在各種「網域」檢視器中折行。 與「WebApp 樹狀結構」視圖相關聯的「網域」檢視器,會顯示 WebApp 物件 (例如頁面或方法) 的內容。在某些情況下,在單行上檢視此資訊會很有用。 在其他情況下,則將資訊顯示為折行的文字會更好些。 使用此設定可以啟用折行。 |
| 在開啟的建置器上展開視圖 | 當您開啟建置器時展開視圖。 |
| 建置器呼叫編輯器 | 選取您要顯示建置器呼叫編輯器的方法:
註: 此設定中的變更,會影響在儲存喜好設定之後才開啟的模型。 若要將此設定套用至已開啟的模型,您必須關閉並重新開啟該模型。
|
WebSphere Portlet Factory 內容會影響開發的某些方面。
模型開發的下列方面由 WebSphere Portlet Factory 內容所決定。 除非另有指示,否則所有內容都會顯示在 WEB-INF/config/cluster.properties 檔案中。
# specifies the compiler to use bowstreet.methods.compiler=C:/jdk131/bin/javac.exe
# This is where the generated source(.java) will go
bowstreet.methods.sourceDirectory=${bowstreet.rootDirectory}/work/source
# This is where the compiled class will go. This should be in a place where the dynamic class loader can pick it up.
bowstreet.methods.targetDirectory=${bowstreet.rootDirectory}/work/classes
#In bowstreet.properties file
# classpath-like syntax (semi-colon delimited) for location of BuilderDef files
# default if unavailable is ${bowstreet.rootDirectory}/builders
bowstreet.location.builderdef.path=${bowstreet.rootDirectory}/builders
若要指定要從中動態載入類別的多個位置,請以逗號區隔每個路徑,以將它們附加到內容中,如下列範例所示:
#In bowstreet.properties file
bowstreet.dynamic.class.load.path=${bowstreet.rootDirectory}/work/classes,${bowstreet.rootDirectory}/work/my_classes
bowstreet.dynamic.class.load.checkTimestamp=true
如果設為 true,則 bowstreet.dynamic.class.load.checkTimestamp 內容會啟用動態類別載入器所載入之類別的時間檢查。 如果該內容設為 true 且類別發生變更,則會在下次建立實例時,動態重新載入該類別,不過前提是它要位於載入器類別路徑中,並且是要動態載入的其中一個受支援類別。
# Uncomment these parameters to add 1999 and/or 2000/11 XMLSchema References into # SOAP responses when using pre-Factory 5.9 SOAPPC and SOAPDOC URLs (not used by Axis) #bowstreet.soap.schemaRef.1999=true #bowstreet.soap.schemaRef.2000=true
例如:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns1:gcdXmlResponse xmlns:ns1="http://bowstreet.com/2002/03/models/xmethods/gcd"> <gcdreply><distance>2708.88</distance></gcdreply> </ns1:gcdXmlResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
您可以指定 WebSphere Portlet Factory 使用內容從中擷取 SOAP 編碼綱目的位置,預設設為:bowstreet.location.schemas
在 WebSphere Portlet Factory 5.9 中,其他前置服務呼叫 Proxy 設定在「服務呼叫」建置器的「進階輸入」區段中可用。
您可以使用下列內容:bowstreet.schema.maxCacheSize=,控制「綱目快取大小上限」。 預設快取大小上限是 50 個綱目物件。
將除錯資訊傳送到 Eclipse 主控台視窗很有用。
傳回主控台的資訊可協助您疑難排解模型及應用程式的問題。
若要顯示 WebSphere Portlet Factory Designer 的主控台視窗,請執行下列步驟:
這些旗標會顯示主控台視窗,系統會將在產生期間發生的所有除錯陳述式都傳送到這個視窗。
您可以執行數個作業來配置 IBM WebSphere Portlet Factory 開發及執行期環境。
您可以針對 IBM WebSphere Portlet Factory 執行的應用程式及 WebSphere Portlet Factory Designer,使用指令主控台。 指令主控台可讓您檢視程式碼中使用的任何 System.out.println() 陳述式。 建置器 Java 類別中的任何 System.out.println() 陳述式都會出現在 WebSphere Portlet Factory Designer 主控台中。 「鏈結的 Java 物件 (LJO)」中的任何 System.out.println() 陳述式或模型中的方法,都會出現在應用程式伺服器主控台中。
您可以在正在開發的 Web 應用程式中,使用現有的 JAR 檔案。
在設計時期,您可以擁有需要存取的 API (例如,透過自訂建置器)。 或者,您可以藉由從建置器產生或建置器協調程式類別進行參照,來獲得 JAR (例如,從協力廠商軟體獲得)。
您可以透過設定內容來配置動態類別載入。
這時就會啟用動態類別載入。 每次 WebSphere Portlet Factory Servlet 收到服務呼叫時,都會檢查類別檔時間戳記。 如果有更晚的時間戳記存在,則會載入新版本的類別。 一般而言,基於效能原因,在開發環境中 checkTimestamp 內容會設為 true,而在正式作業中則會設為 false。
您可以配置 IBM WebSphere Portlet Factory Servlet,讓其動態載入鏈結的 Java 物件、設定檔集管理程式及重新產生類別。
在一般作業模式中,每當應用程式伺服器啟動時,JVM 的預設 ClassLoader 就會載入類別路徑中的類別檔。 然而,如果在應用程式伺服器執行時變更類別檔 (例如,如果重新編譯 Java 檔案),則預設的 ClassLoader 就不會重新載入該類別。
在開發環境中,您可能需要更頻繁地重新載入類別。 但是您可能不想要 (或不可以) 在每次變更類別檔時,都重新啟動應用程式伺服器。 這時,動態類別載入就會很有用。
請注意,啟用動態類別載入會耗用效能。 啟用動態類別載入時,會針對模型對服務或鏈結物件類別的每個呼叫,檢查類別檔時間戳記。 因此,您應該只在開發環境中啟用動態類別載入,而在開發或正式作業環境中停用它。
可以將 WebSphere Portlet Factory Servlet 配置為動態載入 Java 類別檔,而不需要重新啟動應用程式伺服器。 如果您共用開發 WebSphere Portlet Factory Servlet,且經常更新服務所使用的 Java 類別,就可能會這樣做。
從 bowstreet.dynamic.class.load.path 內容中指定的目錄,可以動態載入 Java 類別。
bowstreet.dynamic.class.load.path 內容的預設值是專案的 IBM WebSphere Portlet Factory WEB-INF/work/classes 及 WEB-INF/work/lib 目錄。
下列目錄用於儲存 WebSphere Portlet Factory 專案及 Web 保存檔 (WAR) 檔案系統的 Java 類別及 JAR 檔:
WebSphere Portlet Factory 動態類別載入器會從 WEB-INF/work/classes 及 WEB-INF/work/lib 資料夾載入類別。
在伺服器端, WebSphere Portlet Factory 動態類別載入器會將載入作業委派給 J2EE WAR 類別載入器。 此類別載入器會從 WAR 檔的 WEB-INF/classes 及 WEB-INF/lib 資料夾載入類別,並將載入作業委派給應用程式伺服器的類別載入器。
在 WebSphere Portlet Factory Designer 端, WebSphere Portlet Factory 動態類別載入器會將載入作業委派給 WebSphere Portlet Factory WAR 類別載入器。 每個 WebSphere Portlet Factory 專案都有自己的「設計器」WAR 類別載入器,它會根據現行專案的「Eclipse Java 建置路徑」載入類別。 「設計器」WAR 類別載入器會使用「Eclipse Java 建置路徑」中的所有項目 (專案之 WEB-INF/work/classes 或 WEB-INF/work/lib 資料夾下的那些項目除外)。 「設計器」WAR 類別載入器會將載入作業委派給 Eclipse 類別載入器。
委派載入作業可讓 WebSphere Portlet Factory 專案以在伺服器上運作的相同方式在「設計器」中運作。
會編譯放置在專案 WEB-INF/work/source/ 樹狀結構中的 Java 原始碼,而輸出會儲存在專案 WEB-INF/work/classes 樹狀結構中。 此目錄的內容會動態載入,且不需要重新啟動 WebSphere Portlet Factory Designer 或伺服器,變更即可生效。 因此,任何 Java 來源變更都會立即出現在 WEB-INF/work/classes 中。 如果原始碼經常變更,此安排有助於開發作業。
當涉及 JAR 檔時,WEB-INF/work/lib 目錄在功能上等同於 WEB-INF/work/classes 目錄。
您可以將 WEB-INF\config\override.properties 檔中的下列內容設為 false,來停用動態類別載入:
bowstreet.dynamic.class.load.checkTimestamp
您可以在您的整合開發環境 (IDE) 中,存取 Java 程式碼中物件的 Javadoc。
IBM WebSphere Portlet Factory Designer 可與 Eclipse 型開發環境完全整合。
WebSphere Portlet Factory Designer 是下列 Eclipse 型整合開發環境 (IDE) 中的外掛程式:
下表說明 WebSphere Portlet Factory 專案的性質:
| 專案性質 | 說明 |
|---|---|
| 專案本質 | WebSphere Portlet Factory 專案會使用 Java 專案本質。 |
| 專案內容 | WebSphere Portlet Factory 專案包含 WebSphere Portlet Factory 可服務內容根目錄的所有內容。 例如,wpf.war 及其下層內容。 |
| 來源目錄 | WebSphere Portlet Factory 專案會使用 WebSphere Portlet Factory 安裝的 WEB-INF/work/source 目錄作為來源目錄。 您可以指定其他目錄作為「來源目錄」,但是必須包含這個目錄。 |
| 建置目錄 | 指向 WEB-INF/temp 目錄,其中會編譯專案 Java 來源檔。 作為 WebSphere Portlet Factory Designer 外掛程式一部分併入的 Ant Script,會將此目錄中的類別複製到 WEB-INF/work/classes 目錄。 |
| 併入的程式庫 | WebSphere Portlet Factory 專案包括 WebSphere Portlet Factory WEB-INF/lib 目錄中的所有 JAR 檔,以及 WEB-INF/clientlibs/servlet.jar 中的 JAR 檔。 |
| 外部工具 | 「Ant Script 複製類別」會複製編譯的 Java WEB-INF/work/classes 目錄。 |
您可以在下列目錄中找到 WebSphere Portlet Factory Designer 的日誌檔:
eclipse/plugins/com.bowstreet.designer.core/log
您可以在 WebSphere Portlet Factory WEB-INF/logs 目錄中找到 WebSphere Portlet Factory 的日誌檔。
若要配置「說明」的顯示方式,請遵循下列步驟。
可以提供許多範例,以協助您開發 Web 應用程式。
http://www-10.lotus.com/ldd/pfwiki.nsf
在 Wiki 歡迎使用頁面,標題快速鏈結下,按一下範例。 範例的文章依標題的字母順序列出,並且可以透過種類存取,例如,資料存取和服務。 如需查看不同特性、概念和「如何」的視訊示範,請遵循此鏈結 http://www-10.lotus.com/ldd/pfwiki.nsf/xpViewCategories.xsp?lookupName=Media%20Gallery。
下列主題可協助您進一步瞭解如何在 WebSphere Portlet Factory 環境中開發及建置 Web 應用程式。
此快速入門會引導您使用 WebSphere Application Server Community Edition (WAS CE),逐步建立專案及執行應用程式。
您可以使用 WebSphere Application Server CE 快速並輕鬆地開發及測試應用程式。 您可以在安裝 IBM WebSphere Portlet Factory 時,選擇安裝 WebSphere Application Server CE。
WebSphere Application Server Community Edition (WAS CE) 是一種以 Apache Geronimo 為基礎的開放程式碼 Java 2 Platform Enterprise Edition (J2EE) 應用程式伺服器。
請遵循下列步驟,建立與 WebSphere Application Server CE 搭配使用的基本專案。
請遵循下列步驟,利用您在建立 WebSphere Application Server CE 專案中建立的 WebSphere Application Server CE 專案檔來執行範例應用程式。 現在,您可以在伺服器上執行範例應用程式,以測試是否均已適當地配置所有項目。
models\samples\gettingstarted\OrdersServiceConsumer
如果全部配置都正確,則您會在瀏覽器中看到 Web 應用程式。 無需對此應用程式執行任何動作。 只要在瀏覽器中顯示應用程式,即可確認設定正確,且 WebSphere Application Server 正在執行此應用程式。
這是四個指導教學的第一個,介紹了 IBM WebSphere Portlet Factory 的許多強大特性。 在本指導教學中,您將瞭解如何建立 WebSphere Portal 的 WebSphere Portlet Factory 專案。
對於著重介紹建立 WebSphere Application Server Community Edition (WAS CE) 專案的指導教學,請參閱「快速入門」 以取得搭配使用 IBM WebSphere Portlet Factory 與 IBM WebSphere Application Server CE 的資訊。
此指導教學集是新 WebSphere Portlet Factory 開發人員的重要起始點。 本指導教學四個部分的每個部分均需要 30 到 45 分鐘才能完成。 指導教學應該以下列順序完成,因為每個指導教學均基於前一個指導教學中取得的知識。 此外,完成這些指導教學之後,我們建議造訪 WebSphere Portlet Factory Wiki 上的 WebSphere Portlet Factory 學習導覽圖,以進一步增加 WebSphere Portlet Factory 學習經驗。
| 指導教學順序 | 說明 |
|---|---|
建立 Web 應用程式專案 |
在本指導教學中,您將瞭解如何建立 Web 應用程式專案。 |
| 建立應用程式 | 在本指導教學中,您將建置簡式 "hello world" 應用程式,然後從該應用程式建立 Portlet。 |
| 建立資料庫應用程式 | 在本指導教學中,您將使用「SQL 表格建立」建置器,根據範例資料庫來建立服務提供者模型,然後使用「服務消費者」建置器及「資料服務使用者介面」建置器,建立使用者介面服務消費者模型。 |
| 在您的新應用程式中使用設定檔作業 | 繼續 "hello world" 應用程式指導教學,將設定檔作業的功能新增至您的應用程式。 |
安裝 IBM WebSphere Portlet Factory 之後,建立 Portlet 的首要步驟是利用 WebSphere Portlet Factory Designer 建立 WebSphere Portlet Factory 專案。 此專案將成為 Portlet 或應用程式的基礎,且含有發佈 Portlet 或應用程式所需的一切構件。
在這個指導教學中,您會建立 WebSphere Portlet Factory 專案、配置該專案以在 IBM WebSphere Portal 環境中使用,並執行範例以確保設定正確無誤。 完成這些作業之後,您就可以準備完成其他指導教學,學習使用 WebSphere Portlet Factory 來開發 Web 應用程式及 Portlet 的基本觀念。
若要執行指導教學,必須進行下列設定。
您將僅需要建立一個「伺服器配置」。 此伺服器配置會將您的專案發佈至 Application Server,以在開發期間測試專案,並且會將 Portlet 發佈至該處視圖的「入口網站」。
開發人員可以設定許多不同的配置。 最常用的配置類型如下:
| 配置類型 | 說明 |
|---|---|
| 本端安裝的「入口網站」及「應用程式」伺服器 | 您已將 WebSphere Portal Server 及內嵌的 WebSphere Application Server 安裝於本端。
建立新的伺服器配置時,對重要資料夾 (例如應用程式伺服器的 installedApps 資料夾) 的參照將指向本端硬碟。 這個配置非常容易使用,但開發機器的功能必須非常強大,最少需要 2 GB 的 RAM 才能達到可接受的效能層次。 |
| 遠端安裝的「入口網站」及「應用程式伺服器」 | WebSphere Portal Server 及內嵌的 WebSphere Application Server 均安裝在另一台可透過網路存取的機器上。 |
使用線上說明,以完成環境的配置。
如果您使用 WebSphere Portlet Factory 6.x 的本端安裝,則預設為啟用 WebSphere Application Server 安全。 所以在 WAR 檔建立期間,可能會提示您輸入認證。 請使用 WebSphere Application Server 管理者認證,而非 WebSphere Portal 管理者認證。 同時,在讓發佈處理程序自動執行之前,請務必等待這個提示。 如果您忽略它,則提示會逾時,將不會自動發佈 WAR 檔。 在此情況下,您還是可以透過「WebSphere 管理主控台」手動安裝和配置 WAR 檔。
現在您已建立 WebSphere Portlet Factory 專案,要在伺服器上執行範例應用程式來測試所有項目是否均已適當地配置。
恭喜! 您已順利建立 WebSphere Portlet Factory 專案,並執行確認配置的範例應用程式。 您所建立的 WebSphere Portlet Factory 專案將含有您建立的所有模型,以及開發、發佈及測試 WebSphere Portlet Factory Web 應用程式及 Portlet 所需的所有支援程式碼及構件。
您現在可以繼續學習如何使用 WebSphere Portlet Factory Designer,來開發 Web 應用程式及 Portlet。 首先從建立應用程式的指導教學開始。
這是四個指導教學的第二個,介紹了 IBM WebSphere Portlet Factory 的許多強大特性。 在本指導教學中,您將建置簡式 "hello world" 應用程式。
此指導教學集是新 WebSphere Portlet Factory 開發人員的重要起始點。 本指導教學四個部分的每個部分均需要 30 到 45 分鐘才能完成。 指導教學應該以下列順序完成,因為每個指導教學均基於前一個指導教學中取得的知識。 此外,完成這些指導教學之後,我們建議造訪 WebSphere Portlet Factory Wiki 上的 WebSphere Portlet Factory 學習導覽圖,以進一步增加 WebSphere Portlet Factory 學習經驗。
| 指導教學順序 | 說明 |
|---|---|
建立 Web 應用程式專案 |
在本指導教學中,您將瞭解如何建立 Web 應用程式專案。 |
建立應用程式 |
在本指導教學中,您將建置簡式 "hello world" 應用程式,然後從該應用程式建立 Portlet。 |
| 建立資料庫應用程式 | 在本指導教學中,您將使用「SQL 表格建立」建置器,根據範例資料庫來建立服務提供者模型,然後使用「服務消費者」建置器及「資料服務使用者介面」建置器,建立使用者介面服務消費者模型。 |
| 在您的新應用程式中使用設定檔作業 | 繼續 "hello world" 應用程式指導教學,將設定檔作業的功能新增至您的應用程式。 |
開發人員會透過建立模型、將建置器新增至這些模型、執行您剛建立的應用程式,來建置應用程式,然後從該應用程式建立 Portlet。
若要執行指導教學,必須進行下列設定。
當您要建立新的應用程式時,您將會建立新的模型,然後將適當的建置器呼叫新增至該模型中。
建置器具有易於使用之類似於精靈的使用者介面,可輕鬆快速地開發應用程式。 不過,建置器的功能較精靈強大得多,因為您可以在整個開發程序中反覆使用建置器。 與提供執行一次「精靈」的其他 IDE 不同,透過 WebSphere Portlet Factory,您一律可以返回,然後變更建置器輸入值,並立即更新整個應用程式。
在背後,建置器由執行適當自動化作業(如針對按鈕建立 JSP)的 Java 類別、定義建置器輸入的 XML 文件(建置器定義)以及設計時間使用者介面性質組成。
「應用程式樹狀結構」中顯示的內容為何?
「應用程式」樹狀結構顯示建置器在現行模型中產生的所有構件。 它可讓您選取這些構件,以顯示物件的詳細資料。 這些構件可以是 Java、XML、HTML 及 JSP 等。有多種方式可以查看物件的詳細資料。 來源標籤顯示所建立內容的文字表示法,而設計標籤顯示物件的視覺化表示法。 設計標籤與執行應用程式時在瀏覽器中呈現的內容並不完全相同,但是它可協助預覽建立應用程式時的許多變更。 除了 HTML 頁面中的靜態文字之外,設計標籤還會顯示目前其中沒有任何內容的具名標籤。 目前,設計標籤僅適用於頁面。
如果看不到「應用程式樹狀結構」,請確定您已開啟並選取 MyFirstPortlet 模型。 如果並未開啟及選取,請在專案瀏覽器視窗中尋找 MyFirstPortlet 模型,並按兩下它
嘗試在「應用程式樹狀結構」中選擇不同元素,並監視強調顯示之「來源」及「設計」視圖中對應的元素。
,以顯示可新增至此模型的建置器清單。 此清單顯示所有可用的建置器及其建置器種類。 因為許多建置器都可以修改頁面,所以會顯示許多選項。此時,您已建立應用程式,但尚未使模型成為 Portlet。 現在,將讓模型在 WebSphere Portal 架構內作為 Portlet 執行。 此作業很容易完成,因為具有此目的的建置器:「Portlet 配接器」建置器。
什麼是「Portlet 配接器」建置器?
「Portlet 配接器」建置器會自動配置模型,以便模型可作為 WebSphere Portal 中的 Portlet 運作。 在此類型的建置器呼叫中,您可以輸入 Portlet 的有用資訊(例如名稱、標題、說明及選擇性的 Portlet 說明檔名稱)。 當入口網站管理者管理 Portlet 並將其套用至入口網站網頁時,他們將會看到名稱、標題及說明。 使用者可以透過 Portlet 中的 Portlet 標題列,存取說明檔。
我們將設定檔作業留在更進階的指導教學中,但是在這裡指出「配置」及「編輯」頁面的預設使用者介面 (UI) 非常普通。 您可以在個別 HTML 頁面或 WebSphere Portlet Factory 模型中個別建立這些頁面的更多豐富型 UI。 在「Portlet 配接器」建置器呼叫中可以參照這些頁面及模型,且建置器會自動將其新增至 Portlet 中。
您會將「Portlet 配接器」建置器呼叫新增至 MyFirstPortlet 模型,並透過將 Portlet 新增至入口網站網頁來測試您的工作。
,將新的建置器呼叫新增至模型。
如果尚未選擇,請選擇種類全部。| 輸入名稱 | 輸入這個給定輸入的值 |
|---|---|
| 名稱 | tutorial_basics |
| Portlet 標題 | 指導教學基礎 – Portlet |
| Portlet 說明 | 示範核心概念的簡式範例 |
為何重新發佈 Portlet WAR?
在之前的指導教學中建立專案時,會建立 Portlet「Web 應用程式保存檔」或 WAR。 對專案中的模型及設定檔集執行變更時,這些變更會自動在入口網站伺服器上發佈。
不過,模型的部分變更需要重新發佈 Portlet WAR。 其中一個變更是將「Portlet 配接器」建置器新增至模型。 為了讓入口網站架構看見新的 Portlet,必須使用新的 Portlet WAR 取代入口網站伺服器上的 Portlet WAR。 在 WebSphere Portlet Factory Designer 中重新發佈現有的 Portlet WAR,也會自動發佈新的 WAR 來取代舊的 WAR。
WebSphere Portlet Factory 是用於開發 Portlet 及 J2EE 相容 Web 應用程式的強大工具。 您可以從建置器建構應用程式及 Portlet。 模型中的每個建置器呼叫都對 WebSphere Portlet Factory 將產生之應用程式的 XML 表示法有所貢獻。 透過重新產生程序,可以產生應用程式。
現在,您已準備完成 指導教學 - 建立資料庫應用程式指導教學,其中您將根據範例資料庫,使用「SQL 資料服務」建置器,建立服務提供者模型,然後使用「服務消費者」及「資料服務使用者介面」建置器,建立使用者介面服務消費者模型。
繼續 "hello world" 應用程式指導教學,將設定檔作業的功能新增至您的應用程式。
此指導教學集是新 WebSphere Portlet Factory 開發人員的重要起始點。 本指導教學四個部分的每個部分均需要 30 到 45 分鐘才能完成。 指導教學應該以下列順序完成,因為每個指導教學均基於前一個指導教學中取得的知識。 此外,完成這些指導教學之後,我們建議造訪 WebSphere Portlet Factory Wiki 上的 WebSphere Portlet Factory 學習導覽圖,以進一步增加 WebSphere Portlet Factory 學習經驗。
| 指導教學順序 | 說明 |
|---|---|
建立 Web 應用程式專案 |
在本指導教學中,您將瞭解如何建立 Web 應用程式專案。 |
建立應用程式 |
在本指導教學中,您將建置簡式 "hello world" 應用程式,然後從該應用程式建立 Portlet。 |
建立資料庫應用程式 |
在本指導教學中,您將使用「SQL 表格建立」建置器,根據範例資料庫來建立服務提供者模型,然後使用「服務消費者」建置器及「資料服務使用者介面」建置器,建立使用者介面服務消費者模型。 |
在您的新應用程式中使用設定檔作業 |
繼續 "hello world" 應用程式指導教學,將設定檔作業的功能新增至您的應用程式。 |
在本指導教學中,您會將設定檔作業新增至應用程式。 設定檔作業可讓 WebSphere Portlet Factory 透過提供針對各部分應用程式的幾組替代值,以動態建置數個版本的應用程式。
WebSphere Portlet Factory 的其中一個最強大功能是可以將模型與稱為設定檔作業的概念一起使用,以藉由將不同的預先定義參數集與相同的程式碼庫組合,來產生相同應用程式的多個版本。 在指導教學的這個部分中,將為一組建置器輸入建立新的設定檔集。 針對已進行設定檔作業的建置器輸入,設定檔集包含兩組不同的值。 每組值都會讓應用程式的行為方式不同。 完成之後,您將具有兩個版本的應用程式,每個應用程式都會藉由切換選項並重新執行模型,而得到呼叫。
,以對啟用此建置器輸入進行設定檔作業。 現在會發生什麼?
藉由選擇 MyFirstPortletAlternateView 設定檔並進行套用, WebSphere Portlet Factory Designer 會在其執行模型並起始稱為重新產生的程序時,指定明確設定檔。 重新產生期間,會組合所選設定檔提供的模型及輸入,以建立新版本的應用程式。
您可以在「設計」視圖及「應用程式樹狀結構」視圖中查看應用程式的兩個變式。 當您在兩個設定檔之間切換並按一下套用按鈕後,您可以看到應用程式中的變更。 例如,如果您展開「應用程式樹狀結構」至 ,然後按一下 page1。 在右側,您將看到一些 <div> 標籤,其內容由靜態文字、檔名,以及 JSP Scriptlet 和表示式取代。
在此步驟中,您將新增「影像」建置器,並使用設定檔作業來判斷何時應啟用或停用此建置器。 停用的建置器對產生的應用程式沒有任何用處。 將建置器的啟用/停用值與設定檔項目相關聯,可讓重新產生僅根據重新產生時套用的設定檔來自動新增或刪除建置器。
| 輸入名稱 | 輸入這個給定輸入的值 |
|---|---|
| 位置技術 | 相對於具名標籤 |
| 頁面 (Page) | page1 |
| 標籤 | namedTag |
| 放置 | 之後 |
| 新標籤名稱 | imgTag |
| 影像來源 | 按一下此欄位右側的 ,以啟動參照選擇器。
按一下選擇檔案標籤,並選擇 /samples/tutorials/images/tutorial_basics_image.jpg,然後按一下確定。 |
,以對啟用此建置器輸入進行設定檔作業。 與其他設定檔項目一樣,使用建立項目,並將提示變更為顯示影像,然後將使用者介面類型設為「勾選框」,並將「勾選框後面的標籤」欄位編輯為「我的勾選框」。 按一下確定。 在 Portal 中進行自訂(配置要使用的設定檔)時,會顯示設定檔項目的使用者介面類型。藉由對模型中的部分建置器呼叫輸入進行設定檔作業,只需切換設定檔,即可產生數個版本的應用程式。 在 WebSphere Portlet Factory Designer 中,可以從套用的設定檔標籤選擇設定檔。 依據配置「Portlet 配接器」建置器呼叫方式的不同,Portlet 管理者及使用者可以使用 Portlet 的「配置」及「編輯」模式,在 WebSphere Portal 中套用各種設定檔。 您也可以透過稱為設定檔選擇控制的程序來依程式的方式選擇設定檔。
設定檔還可以用於對入口網站群組進行本地化及側寫。 如需相關資訊,請參閱此 Wiki 文章。
在本指導教學中,您將使用「SQL 表格建立」建置器,根據範例資料庫來建立服務提供者模型,該建置器會建立資料庫表格並提供完整的 CRUD(建立、擷取、更新及刪除)功能,顯現為服務作業,然後使用「服務消費者」及「資料服務使用者介面」建置器,建立使用者介面服務消費者模型。
此指導教學集是新 WebSphere Portlet Factory 開發人員的重要起始點。 本指導教學的四個部分大多需要 30 到 45 分鐘才能完成,您應該為此指導教學留出 1 小時至 1.5 小時。 指導教學應該以下列順序完成,因為每個指導教學均基於前一個指導教學中取得的知識。 此外,完成這些指導教學之後,我們建議造訪 WebSphere Portlet Factory Wiki 上的 WebSphere Portlet Factory 學習導覽圖,以進一步增加 WebSphere Portlet Factory 學習經驗。
| 指導教學順序 | 說明 |
|---|---|
建立 Web 應用程式專案 |
在本指導教學中,您將瞭解如何建立 Web 應用程式專案。 |
建立應用程式 |
在本指導教學中,您將建置簡式 "hello world" 應用程式,然後從該應用程式建立 Portlet。 |
建立資料庫應用程式 |
在本指導教學中,您將使用「SQL 表格建立」建置器,根據範例資料庫來建立服務提供者模型,然後使用「服務消費者」建置器及「資料服務使用者介面」建置器,建立使用者介面服務消費者模型。 |
| 在您的新應用程式中使用設定檔作業 | 繼續 "hello world" 應用程式指導教學,將設定檔作業的功能新增至您的應用程式。 |
您將使用「SQL 表格建立」建置器,根據範例資料庫來建立服務提供者模型,然後使用「服務消費者」及「資料服務使用者介面」建置器,建立使用者介面服務消費者模型。 您的提供者模型將使用「表格建立」建置器,從 XML 檔案中提供的範例資料建立資料庫表格,並產生將模型轉換為服務提供者的服務作業。 您在此指導教學中學習的內容(其中包括消費者/提供者參照範例及「資料服務使用者介面」用法),將提供使用其他資料提供者(例如,Domino)時需要的知識。
若要執行指導教學,必須進行下列設定。
,以顯示可新增至此模型的建置器清單。 
您已完成建置服務提供者的步驟! 在後續步驟中,我們將建立並使用服務消費者,來使用此提供者。
,以顯示可新增至此模型的建置器清單。
,以顯示可新增至此模型的建置器清單。 您將看到的內容

您應該查看產生的 Web 使用者介面,其顯示含有分頁鏈結、按鈕及一個建立按鈕的前 5 列資料庫表格。 嘗試在此時使用應用程式、翻看列、更新、建立及刪除記錄。 整個 Web 應用程式包括資料庫存取、操作資料及 Web 型使用者介面(包括視圖、詳細資料及為您產生的更新頁面)的作業,以作為前面步驟中建立的建置器呼叫的結果。 與必須刪除構件並重新開始的其他精靈型架構不同,如果需要此應用程式上的不同變式,您可以重新開啟前面的任何建置器呼叫及修改輸入,並且您可以新增及移除其他建置器呼叫,以自訂產生的應用程式。
在後面的指導教學中,您還將瞭解如何使用設定檔作業,以允許這些建置器輸入的邏輯型自訂作業,從而根據執行時期可用的使用者群組、角色、其他自訂邏輯或資訊,產生應用程式上的變式自動化。 請注意,預設清單使用者介面相當合理,但是會併入全部列及產生的標籤。 在此指導教學中,我們接下來將展示如何自訂產生的使用者介面。
,以顯示可新增至此模型的建置器清單。 | 名稱 | 標籤 | 隱藏 | 排序 | 欄位類型 |
|---|---|---|---|---|
| EMPNO | [員工編號] | [一律顯示] | 開啟 | 整數 |
| FIRSTNME | 名字 | [一律顯示] | [關閉] | 字串 |
| MIDINIT | 中間 | [一律顯示] | [關閉] | 字串 |
| LASTNAME | [姓氏] | [一律顯示] | 開啟 | String |
| WORKDEPT | [工作部門] | 僅在表格中隱藏 | [關閉] | 字串 |
| PHONENO | [電話號碼] | [一律顯示] | [關閉] | 字串 |
| GENDER | [性別] | 僅在表格中隱藏 | [關閉] | 字串 |
| BIRTHDATE | [出生日期] | 僅在表格中隱藏 | [關閉] | 日期:yyyy-MM-dd |
| SALARY | [薪資] | 僅在表格中隱藏 | [關閉] | 貨幣:#,###.00 |
| [電子郵件] | 僅在表格中隱藏 | [關閉] | 字串 | |
| COMMENTS | [註解] | 僅在表格中隱藏 | [關閉] | Rich Text |
您將看到的內容
請注意,顯示記錄的列表清單的起始視圖頁面含有 Portlet 使用者介面更容易管理的欄數。 此時,嘗試在每個視圖中編輯、刪除及建立項目。
在本指導教學中,您已根據範例資料庫,使用「SQL 表格建立」建置器,建立服務提供者模型,然後已使用「服務使用者」及「資料服務使用者介面」建置器,建立使用者介面服務消費者模型。 然後使用「資料欄位設定」建置器自訂使用者介面。 而且,如果您已有資料庫表格,則將直接使用「SQL 資料服務」建置器,而非如您在上方使用的「SQL 表格建立」建置器(覆蓋「SQL 資料服務」並新增表格建立)。
現在,您已準備完成在您的新應用程式中使用設定檔作業指導教學,將設定檔作業的功能新增至應用程式。
此快速入門會引導您逐步建立小組件。
在本端安裝的 IBM Lotus Mashups 伺服器上,使用 IBM WebSphere Portlet Factory 來執行、測試及發佈小組件。
如果您無法在本端開發機器上安裝 Lotus Mashups 伺服器,則可建立對遠端安裝之 Lotus Mashups 伺服器的存取權。
請遵循下列步驟,以設定 Mashup 伺服器。
如果您正在部署至遠端 Mashup Center,則需要將磁碟機對映至伺服器上的 InstalledApps 資料夾,以利用「自動同步化」特性。 如果未設定對映磁碟機,則您將需要「發佈」專案以進行執行,以便看到您的變更。
請遵循下列步驟,使用 WebSphere Portlet Factory 建立小組件,以與 Lotus Mashups 搭配使用。
如果您沒有可用的試算表,會提供一個預設試算表。 如果您的專案包括指導教學及範例特性集,則可以使用預設檔案。
此快速入門會引導您在本端逐步建立及測試小組件,然後將小組件遠端上傳至 IBM InfoSphere MashupHub。
然後您可以將其發佈至 IBM Lotus Mashups。在匯出至遠端伺服器之前,這是對本端安裝之 Lotus Mashups 伺服器進行開發及測試的良好作法。 如果您無法安裝本端 Lotus Mashups 伺服器,或者當您在本端完成測試,並準備好發佈至遠端 Lotus Mashups 伺服器時,請遵循本文件中的步驟。
IBM WebSphere Portlet Factory 與 Lotus Mashups 一起使用,可以建立變成混搭頁面一部分的小組件。 一般而言,開發人員會在其本端系統上建立小組件,然後在本端發佈及測試這些小組件。 然而,在某些情況下,開發人員的工作環境中沒有資源可以執行本端 Lotus Mashups 伺服器,或者可能開發團隊中的多位成員必須將小組件發佈至共用 Lotus Mashups 伺服器。完成本端開發及測試時,團隊會把新建立的小組件發佈至遠端伺服器。 遠端伺服器可以是正式作業伺服器、整合伺服器或品質保證伺服器。
WebSphere Portlet Factory 會安裝 IBM WebSphere Application Server Community Edition (CE) 應用程式伺服器。 WebSphere Application Server CE 是一種以 Apache Geronimo 為基礎的開放程式碼 Java 2 Platform Enterprise Edition (J2EE) 應用程式伺服器。 WebSphere Application Server CE 會為 WebSphere Portlet Factory 提供輕量型測試功能。 您可以在此環境中測試及執行小組件。
在部分開發環境中,許多使用者必須有共用伺服器的存取權。 因為 WebSphere Portlet Factory 已與 Lotus Mashups 及 InfoSphere MashupHub 整合,因此會支援將小組件發佈至遠端伺服器。
請遵循下列步驟,以設定 Lotus Mashups 伺服器。
如果 Lotus Mashups 伺服器為本端伺服器,請保留 localhost。如果您是在遠端執行 Lotus Mashups,請輸入完整的 DNS 主機名稱。 在大部分情況下,OAP 連接器埠可以保留 8880。
如果您正在部署至遠端 Lotus Mashups 伺服器,則需要將磁碟機對映至伺服器上的 InstalledApps 資料夾,以利用「自動同步化」特性。如果未設定對映磁碟機,則您必須先「發佈」專案,然後再執行該專案,以便看到您的變更。
建立小組件。
如果您沒有可用的試算表,會提供一個預設試算表。 如果您的專案包括指導教學及範例特性集,則可以使用預設檔案。
請遵循下列步驟,將小組件上傳至 InfoSphere MashupHub。
附註:如果您已登入,則必須先登出再重新登入。 Lotus Mashups 只會在登入時重新整理工具箱。
在建立專案及模型之後,您就可以開始將建置器新增至模型。
大部分設計良好的 Web 應用程式會實作「服務導向架構 (SOA)」。 在 SOA 應用程式中,您可以建立呼叫後端服務或呈現使用者介面以便呼叫服務的模型。 開發 Web 應用程式主題為您介紹如何建立使用者介面的頁面及表單,或者如何建立用於呼叫後端系統的服務。
建置服務導向應用程式與建立服務提供者模型及服務消費者模型有關。
有一個核心建置器可用於呈現層:
您可以使用「服務定義」及「服務作業」建置器,建立服務提供者模型。
多個建置器可用來建立服務層。
若要實作 SOA 應用程式,請建立「服務提供者」(後端資料存取) 或「服務消費者」(前端呈現) 模型,然後將它們結合 (以彈性方式),用於應用程式測試及發佈。
即使資料來源代表多個後端系統,定義服務含有多個相關作業通常也很有用。 例如,客戶資訊服務可能會定義要傳回客戶清單 (基於搜尋準則)、客戶詳細資訊、客戶訂單、客戶抱怨等的作業。 產品服務可能會針對產品依種類、產品依價格、產品庫存、產品成本、產品銷售業績等定義作業。
此範例使用簡式服務提供者及服務消費者 (呈現) 模型配對。
實際上,建置應用程式僅需要兩個步驟:
一旦這些核心組件就位,您便可以新增其他建置器,以視需要加強服務或消費者端。
若要進一步加強 SOA (服務導向架構) 應用程式的開發,IBM WebSphere Portlet Factory 提供可簡化及加速開發的其他特性。
透過按「服務定義」建置器中的按鈕,您可以自動建立 Stub 服務模型。 此完整產生模型的介面與原始「服務提供者」模型的介面相同,但是包括作業、綱目及範例資料之完全自行包含的 Snapshot。 Stub 服務模型使您不再需要連接至資料來源,因而減少配置系統的麻煩,並且也不必連接至真實系統 (例如 SAP、IBM Lotus Domino 或 PeopleSoft),或者確保本端存在系統的「開發人員」版本。 如果需要,可以從實際結果資料自動擷取範例資料,這些實際結果資料是透過僅呼叫服務一次,然後使用斷線模式支援來取得。
如果您的後端系統回應緩慢,或者其可用性受到限制,那麼透過使用這種斷線模式開發方法,可以節省您的大量時間。 使用「Stub 服務」模型意味著產生程序不必針對每個重新產生循環存取緩慢的後端系統。
「服務測試」建置器可讓您自動產生所需的頁面及程式碼,以測試服務中定義的所有作業,包括測試每個作業時預設輸入的規格。 「服務測試」建置器可讓您輕鬆地驗證後端系統功能,其完全獨立於任何呈現層且無需建置個別的測試控制工具。 您還可以產生直接呼叫服務作業的「無監視器型」方法,此功能有助於建立服務的自動化測試,而無需檢視瀏覽器頁面。
「服務文件」建置器會在此雙重架構的兩端自動產生服務文件。 它會針對「服務提供者」模型建立的服務或「服務消費者」模型使用的服務,建立服務及其作業的相關資訊,包括輸入及結果。 或者,您也可以使用個別文件模型,來產生 WebApp 中任何服務的文件。
為協助交換「服務提供者」模型,「資料服務」建置器支援「服務」介面概念,在概念上與 Java 介面類似。 「服務定義」建置器可讓您指定想要用作「介面」定義之其他「服務提供者」模型的名稱。 當您想要開發使用一般呈現(服務消費者)模型集的替代「服務提供者」實作時,「介面」概念非常有用。 它可確保您能夠在「服務提供者」模型之間進行交換,而不必中斷呈現模型。
「服務定義」及「服務作業」建置器會自動提供協助及驗證,以正確實作指定的「服務介面」(不會自動產生替代實作)。 服務名稱、作業名稱及作業參數的數目及名稱會得到驗證。 因為不會驗證輸入及結果類型,所以您可以利用 WebSphere Portlet Factory 的調適性特性,以替代格式來實作服務。
專案是 WebSphere Portlet Factory 中應用程式的基礎。
專案包含 WebSphere Portlet Factory 建置 Web 應用程式、Portlet 應用程式或小組件所需的所有構件。
WebSphere Portlet Factory Designer 精靈可協助您執行任何專案作業,如建立專案、在專案中新增 WebSphere Portlet Factory 構件及移除 WebSphere Portlet Factory 構件,以及修改專案設定。
大部分精靈可以從專案的右鍵功能表存取,而且精靈通常會提供預設值,您可以根據開發環境變更這些值。
下列性質說明一般 WebSphere Portlet Factory 專案。
依預設, WebSphere Portlet Factory 專案位於 Eclipse /workspace 目錄。 然而,您可以在檔案系統的其他地方找到 WebSphere Portlet Factory 專案。 在 Windows 系統上,由於對路徑名稱長度的限制,建議您將專案置於檔案系統頂端或附近。
建置應用程式的首要步驟是建立專案。
此專案將包含應用程式需要的所有構件及特性。
/WEB-INF/config/override.properties
此檔案可讓您的專案利用最新佈景主題(bowstreet.themeFile 內容)及預設「豐富型資料定義 (RDD)」檔案(bowstreet.baseRddFile 內容)。
佈景主題檔案(/WEB-INF/factory/themes/blue_WPF7.uitheme)的內容可讓您使用後置動作行為中的智慧型重新整理特性,其會在 Portlet 中進行局部頁面重新整理。 RDD 檔案的內容提供若干自動設定,可用來顯示及驗證使用者介面 (UI) 中的頁面自動化欄位及直欄。 依預設,頁面自動化頁面會使用單一 RDD 檔案(位於 /WEB-INF/factory/data_definitions)。 在 WebSphere Portlet Factory 專案中使用時,Eclipse 建置作業會執行多個動作。
例如,將 Java 來源編譯成類別檔,以及將內容檔從來源目錄複製到類別目錄。
例如,複製到應用程式伺服器上的輸出位置,或複製到 WAR 檔。
如果啟用自動建置設定 (下的自動建置),則 WebSphere Portlet Factory Designer 會以最佳方式運作。 儘管依預設會啟用此設定,但是如果工作區中的其他作用中專案具有大量原始檔,則開發人員有時會停用此設定,否則會花費很長時間來建置。
如果執行時必須停用此設定,則在下列情況下可能需要手動建置。
完成建立專案時,您可以選擇要發佈開發 WAR 檔,或匯出正式作業 WAR 檔。
WebSphere Portlet Factory 可以為您產生兩個 WAR 檔。 在應用程式伺服器上單獨執行您的應用程式時,會使用 WebSphere Portlet Factory 開發 WAR 檔。 執行應用程式作為入口網站內的 Portlet 時,會使用 Portlet WAR 檔。
如果尚未選擇「發佈應用程式」功能,則需要在此處理程序完成後手動發佈 WAR 檔。 如果您已選擇「發佈應用程式」功能,則會為您將 WAR 檔發佈到專案之伺服器配置中所指定的伺服器。 這時會執行大量工作,所以發佈處理程序需費時 2 到 3 分鐘才能完成。
如果您使用 WebSphere Portal 的本端安裝,則依預設會啟用 WebSphere Application Server 安全。 所以在 WAR 檔建立期間,可能會提示您輸入認證。 請使用 WebSphere Application Server 管理者認證,而非 Portal 管理者認證。 同時,在讓發佈應用程式功能自動執行之前,請務必等待這個提示。 如果您忽略它,則提示會逾時,將不會自動發佈 WAR 檔。 在此情況下,您還是可以使用「WebSphere Application Server 管理主控台」手動安裝及配置 WAR 檔。
程序完成後, WebSphere Portlet Factory 會顯示您所安裝的特性集所適用的 README 編輯器。 請將這些檔案閱讀一遍,讀完後關閉檔案。 現在應該只剩下空的 (灰色) 工作區。
如果 Websphere Administration Server 或 WebSphere Portal Server 是遠端伺服器,則會在參考資訊畫面下看到一則錯誤訊息。 此訊息說明開發 WAR 以及包含該 WAR 的 EAR 均尚未發佈。 如果選擇不自動發佈 Portlet WAR,或無法使用入口網站伺服器,則需要使用「WebSphere Portal 管理主控台」,手動發佈該 WAR。
開發 WAR 檔包含可協助您加速開發時間的公用程式。 開發 WAR 是根據伺服器配置中所提供的輸入來建置的。 如果已針對「發佈應用程式」配置了伺服器配置,則在建置開發 WAR 時,會為您發佈小組件。 如果您的系統上已安裝「混搭」伺服器,則在您安裝 WebSphere Portlet Factory 時,只要在安裝期間提供正確的認證,便會自動產生名為 MashupServer 的伺服器配置,並配置成自動發佈小組件。
若要建置開發 WAR,請在「專案瀏覽器」畫面中,在專案名稱上按一下滑鼠右鍵。 按一下,以發佈小組件。選取您要發佈的小組件,並按一下確定。
當您的應用程式準備好要匯出至正式作業環境時,便會使用正式作業 WAR 檔。 正式作業 WAR 不包含開發公用程式,所以會比開發 WAR 小。 正式作業 WAR 必須手動匯出至伺服器。 若要建置正式作業 WAR,請在「專案瀏覽器」畫面中,用滑鼠右鍵按一下專案名稱。 按一下,並選擇您環境特定的 WAR。
如果尚未選擇「發佈應用程式」功能,則需要在此處理程序完成後手動發佈或匯出 WAR 檔。 如果您已選擇「發佈應用程式」功能,則會為您將 WAR 檔發佈到伺服器。 這時會執行大量工作,所以發佈處理程序需費時 2 到 3 分鐘才能完成。
如果您使用 Lotus Mashups 的本端安裝,則依預設會啟用安全。 所以在 WAR 檔建立期間,可能會提示您輸入認證。 請使用 WebSphere Application Server 管理者認證。 同時,在讓發佈處理程序自動執行之前,請務必等待這個提示。 如果您忽略它,則提示會逾時,將不會自動發佈 WAR 檔。 在此情況下,您還是可以使用「WebSphere Application Server 管理主控台」手動安裝及配置 WAR 檔。
程序完成後, WebSphere Portlet Factory 會顯示您所安裝的特性集所適用的 README 編輯器。 請將這些檔案閱讀一遍,讀完後關閉檔案。 現在應該只剩下空的 (灰色) 工作區。
如果 Lotus Mashups 伺服器是遠端伺服器,則會在參考資訊畫面下看到一則錯誤訊息。 此訊息說明開發 WAR 以及包含該 WAR 的 EAR 均尚未發佈。 如果選擇不自動發佈 WAR,或無法使用伺服器,則需要手動發佈或匯出該 WAR。
您可以多種方式來修改 WebSphere Portlet Factory 專案。
例如,可以將特性集新增至專案,甚至將專案發佈至類型截然不同的應用程式伺服器。 也可以從專案建立 WAR,以修改專案。 可以從專案蹦現功能表使用所有這些選項,且可透過在「專案瀏覽器」中用滑鼠右鍵按一下專案來存取這些選項。
在蹦現功能表中,按一下,即可新增特性集。 在「特性資訊」窗格中,您可以選取包含要在專案中使用之建置器的特性集。
您可以建置各種類型的 WAR。 在蹦現功能表中,按一下發佈應用程式,並從子功能表中選擇適當的項目。
按一下,便可檢視或變更專案可用的伺服器配置。
您可以變更資料夾在「專案瀏覽器」或「模型導覽器」的專案樹狀結構中出現的位置。
若要移動「專案瀏覽器」樹狀結構中的項目,請遵循下列步驟:
您可以重新命名建置器及設定檔項目,在部分情況下,您還可以編輯它們的定義。
重新命名建置器或設定檔項目之前還要考慮下列事項:為了使參照一致,重新命名程序會在內部對那些參照執行簡式文字搜尋。 例如,如果一個建置器命名為 Page2,而另一個命名為 Page20,且您將 Page2 重新命名為 Pagex,則 Page2 與 Page20 的參照全都會找到。 若要清除 Page20 的參照,則需要預覽重新命名所導致的變更 (透過按 >下一步),並取消選取不想要變更的項目。
若要重新命名設定檔項目或建置器呼叫,請遵循下列步驟:
您可以重新命名資料夾、模型或設定檔集。
若要在「模型導覽器」中重新命名資源,則用滑鼠右鍵按一下該資源,從出現的蹦現功能表中選擇重新命名,然後輸入新名稱。
IBM WebSphere Portlet Factory 提供延伸的支援,以透過專案瀏覽器及「Java 套件瀏覽器」重構。
建議透過「專案瀏覽器」重新建構,因為當您移動或重新命名「專案瀏覽器」中的資源時,所有的內部參照要一致。 如果您嘗試在標準「導覽器」中進行重構,則不必如此。
您可以從「專案瀏覽器」使用 IBM WebSphere Portlet Factory Designer 的重構功能,以移動或重新命名專案資料夾或其中所含的資源。
若要在樹狀結構中移動資源,請在「專案瀏覽器」中按一下該項目,然後依序按一下重構、 移動,然後在產生的對話框中按一下項目移動的目的地資料夾。 另外,您也可以用滑鼠右鍵按一下項目並從功能表選擇,然後在產生的對話框中按一下項目移動的目的地資料夾。
使用「Eclipse 匯出」功能來建立 IBM WebSphere Portlet Factory 保存檔,其中包含要在開發作業中共用的構件。
建立 WebSphere Portlet Factory 保存檔時,僅選取模型及支援檔案。 這會併入數個檔案,例如,HTML 頁面、.css 檔、JavaScript 檔、設定檔、資源軟體組以及為 LJO 建立的任何 Java 來源檔。
請勿併入依預設新增至新專案的任何檔案。 如果您在 WebSphere Portlet Factory 保存檔中併入其他專案檔,則該保存檔在匯入至其他專案時,可能會造成問題。 因為部分專案檔是專案特定的檔案,所以會發生問題。 良好的經驗法則是僅併入您建立的檔案。
您可以使用「 WebSphere Portlet Factory 保存檔」的「匯入」精靈,將資源從外部來源併入專案。
特性集提供便利的套裝功能方法,可供開發團隊成員使用。
特性集是建置器或一組建置器的必要檔案集。 特性集可包含模型、設定檔集、建置器及類別。 特性集不會增加應用程式的負荷,也不會增加與您嘗試實作特性無關的 WAR 檔的負荷。 您可以隨時在專案中新增或移除特性集。
請遵循此程序將特性集新增至 IBM WebSphere Portlet Factory 專案。
您可以使用精靈來協助您建立各種模型。
此精靈會在模型中移入讓基本應用程式執行所需的全部建置器。 此精靈設計成具有自我記錄的功能且易於使用。 您可以在精靈中看到的選項取決於新增至專案的特性集。 您看到的精靈步驟進度要視您選擇建立的模型類型而定。
使用 IBM WebSphere Portlet Factory Designer 精靈來建立新模型。
您可以從「專案瀏覽器」或「模型導覽器」中開啟模型。
所有現有的模型都儲存在 IBM WebSphere Portlet Factory WEB-INF/models 目錄中。 「模型導覽器」會呈現「專案瀏覽器」的子集並使存取模型及設定檔更容易。
在開啟模型時, WebSphere Portlet Factory Designer 通常會顯示下列模型相關的畫面。
請遵循下列步驟,以測試服務提供者。
請遵循下列步驟,將建置器從一種類型轉換為另一種類型。
這些步驟可用作將「按鈕」建置器轉換為「鏈結」建置器的一個範例。
建置器會轉換為所選取的類型,且會更新建置器呼叫清單,以反映該轉換。
原始建置器的輸入會保留下來,並會在適當的時候,很明智地套用至新的建置器。 在引用的範例中,按鈕標籤輸入值會套用至鏈結文字輸入。 原始建置器的所有輸入都會新增至新的建置器編輯頁面中。
關閉模型會從模型工作區中移除其相對應的標籤。
刪除模型會將它從專案中移除。
您應該也將模型從已發佈的應用程式中移除。
儲存模型會將所有建置器呼叫變更及模型內容變更,都確定至磁碟上的模型檔。
]。在開始執行 (啟動) 模型之前,必須至少要建立一個「IBM WebSphere Portlet Factory 模型」啟動配置。
依據啟動配置的定義方式,您可以:
您還可以藉由將模型的 URL 輸入瀏覽器視窗,來執行模型。
藉由指定 URL 來執行模型時,可讓您呼叫模型中的特定動作,並將明確設定檔傳遞至模型。
http://localhost:7001/mymodels/CustomerModel/Action!GetCustomers
如果您的專案已發佈,則可在作用中的模型編輯器中,執行現行模型。
請使用下列其中一種方法。
Eclipse 會保存已啟動程式的歷程。 若要重新執行之前已啟動的模型,請按一下,然後按一下清單中的名稱。
將模型的 URL 輸入瀏覽器視窗,即可執行模型。
您可以使用 Eclipse 比較編輯器來比較 IBM WebSphere Portlet Factory 專案中的模型。
當模型檔與其他模型檔相互比較,或與本端工作區歷程或儲存庫中不同版本的相同模型相互比較時,便會啟動模型比較編輯器。 模型比較編輯器的功能同於標準 Eclipse 比較編輯器。
比較編輯器會使用「比較/修補」喜好設定頁面中的設定。 按一下,即可檢視及變更您的設定。
比較作業會使用 Eclipse 結構檢視器及比較編輯器,來顯示專案中兩個模型之間的差異。
比較模型檔時,會在編輯區中開啟模型比較編輯器。 模型比較編輯器由「模型結構比較」視圖及「模型比較」編輯器所組成。
在「模型結構比較」視圖中選取最上層節點時,「模型比較」編輯器會顯示建置器呼叫的比較,其類似於啟動模型編輯器時的「大綱」視圖。 如果您在樹狀結構中選取建置器呼叫節點或建置器輸入節點,則「模型比較」編輯器會以 XML 文字顯示選定節點的比較。
在「模型比較」編輯器中,您可以在建置器呼叫清單中瀏覽所有差異,並複製進行比較之資源之間的強調顯示差異。 您可以將變更儲存到在模型比較編輯器中製作的資源。 使用比較編輯器的工具列,便可讓下列指令可用於工具列按鈕中。
將模型置於儲存器內可讓模型插入網頁中。
模型是您可自行包含之建置器呼叫的集合。
您可以使用「模型儲存器」建置器來自行包含模型,並容許將其插入網頁中。 搭配使用多個模型與模型儲存器,有兩個主要優點:
使用儲存器建置器,多位開發人員都可以開發部分頁面,並將其個別模型新增至頁面。 每個模型都會指定給儲存器,它是要顯示之模型的位置保留元。 模型還可以包含儲存器,可以在儲存器內無限制地巢狀設定模型。 在存取頁面的使用者看來,頁面會顯示為統一的整體,提供各種內容。 然而,如果使用者按一下進入每個模型以檢視詳細資訊,則頁面的整體環境定義會保持不變,而只變更頁面的特定模型區段。
如果您使用 6.1.2 版之前的 IBM WebSphere Portlet Factory Designer 版本,若要辨識具有「協同作業 Portlet 來源」建置器的模型新增項目,請在 WebSphere Portlet Factory Designer 中開啟任何現有的模型、重新產生並儲存它們。
您可以針對專案中使用的模型,產生報告。
「模型檢驗」工具會產生專案中模型的相關報告。 此報告會彙總模型的建構方式,以及模型是否遵循部分所記載的最佳作法。
如果您在 WebSphere Portlet Factory Designer 中開啟專案,則您可以產生並檢視所使用之模型的摘要報告及分析。 輸出包括 HTML 檔及多個 CSV 檔。 HTML 檔提供可用於改進模型之最佳作法的提示。
所產生模型報告的內容由所定義的檢驗確定。
所有報告都會寫入專案的 Reports 目錄。報告檔以下列標準格式命名。
Model Report for project name – time.html
name 值指出專案名稱。 time 值指出產生報告的日期和時間。 數個預設檢驗還會產生 CSV 檔,其中包含來自報告的建置器使用情形統計資料。 使用這些 CSV 檔,您可以對資料進行排序及重新排列,以符合您自己的需要。 所有報告檔都具有相同的時間,因此您可以識別在同一執行期間產生的那些報告檔。
檢驗可協助您快速地識別可能沒有遵循最佳作法的模型,或者已經建置而很難維護及理解的模型。 預設檢驗集重點關注 WebSphere Portlet Factory 工程小組在檢閱客戶模型時所遇到的部分最常見問題。 例如,常見問題是在單一模型中混合使用者介面 (UI) 及資料存取建置器,而不是將那些類型的建置器分別置於提供者(資料存取)及消費者 (UI) 模型中。
預設檢驗集以 WebSphere Portlet Factory 產品 Wiki 中記載的最佳作法為基礎。
\Designer\eclipse\plugins\com.bowstreet.designer.core_7.0.1\config
如需建立自訂檢驗的相關資訊,請參閱 WebSphere Portlet Factory 產品 Wiki。
應用程式中的頁面及表單可用來檢視資料,以及用於使用者與應用程式邏輯及資料間的交談作業。
在 IBM WebSphere Portlet Factory 應用程式中,這些頁面通常不是靜態的,而是由各種直接決定頁面使用者介面 (UI) 的建置器,或間接影響頁面內容的其他建置器來操作。
表單與頁面截然不同,因為它們的開發方式並不相同。 開發表單主要是使用兩個高階建置器 (例如,「資料頁」建置器及「資料欄位修飾元」建置器),來實作顯示及提示資料的 UI。
開發內容頁面是使用大量低階建置器,來實作 HTML 功能的各個方面 (例如,「頁面」建置器)。
您可以將現有的 HTML 或 JSP 頁面匯入模型,來實作您 Web 應用程式的使用者介面。
在 IBM WebSphere Portlet Factory Designer 中,若要執行此操作,請使用「匯入的頁面」或「匯入的目錄」建置器。 基於原型化目的,可以使用「頁面」建置器來建立簡式 HTML 或 JSP 頁面。
針對那些頁面中要與模型之其他部分互動的任何部分,或提供給不同類型使用者使用的任何部分,您可以將相對應建置器的呼叫指派給頁面中的具名 <input /> 或 <span /> 標籤。 例如,您可以使用「選取」建置器的呼叫來取代 HTML 選取清單。 如此可讓您根據在模型中其他位置定義的方法、變數或使用者輸入,來決定可選取之選項及選取清單的其他性質。
您可以將現有的 HTML 及 JSP 頁面引入模型中。
請使用下列其中一種方法:
「匯入的目錄」建置器僅會將指定目錄中的 HTML 及 JSP 檔案新增至模型。
在 WebSphere Portlet Factory 應用程式中,您可以使用幾項技術的其中一項來顯示資料,其中部分技術是以預期的伺服器環境為目標,並採用不同程度的自動化功能。
一般而言,應嘗試使用「資料頁」及「資料欄位修飾元」建置器。 如果它們無法輕鬆操作資料,或者您發現需要新增許多「資料欄位修飾元」建置器呼叫,來實作所需的顯示方式及行為,請使用低階建置器呼叫。
您可以使用多種方式來修改資料頁面元素的佈置。
在大部分頁面上,您都可以使用拖放作業來重排直欄及列。 使用 WebSphere Portlet Factory Designer 選用區中的佈置工具,您還可以將佈置型樣拖放至「設計」畫面中您的頁面上。
使用「資料佈置」建置器,您可以將模型中的資料頁面欄位對映至資料佈置範本中的目標,並設定欄位類型。 使用資料佈置範本,您可以建立可重複使用之自訂型樣的支援。
使用此特性,您可以完全控制 HTML 頁面佈置,並可有效地停用頁面的自動產生作業,但會失去模型中頁面自動化支援的好處。因此,只有在您有一些不尋常的佈置,而且真的需要精確地控制顯示畫面時,才使用此功能。
您可以在「設計」畫面中使用拖放作業來修改頁面自動化元素。
您可以使用資料佈置範本,來修改「資料頁面」建置器所建立的頁面佈置或使用「資料頁面」建置器之建置器所建立的頁面佈置。
「資料佈置」建置器使用指定的資料佈置範本及佈置欄位對映,來修改「資料頁面」建置器所產生的佈置。 您可以使用產品中提供的其中一個資料佈置範本或您自己的範本,來提供可重複使用的自訂型樣支援。
模型編輯器中的蹦現指令可讓您針對「資料頁面」建置器所建立的元素,直接編輯其佈置。
在模型編輯器中,可針對由「資料頁」建置器或使用「資料頁」建置器之建置器 (例如,「視圖及表單」) 所建立的元素,使用匯出功能。 可變更的元素為頁面、表格、群組及欄位。
「HTML 資料佈置」建置器會新增至模型,以提供您在已匯出 HTML 檔中所指定的自訂內容。 此建置器會使用已匯出的檔案,以顯示為資料頁的這個部分。
若要移除自訂內容,您可以停用或刪除建置器。 若要建立其他自訂內容,則可編輯已匯出的 HTML 檔。
您可以管理資料輸入頁面上使用者輸入的驗證,該資料輸入頁面是由「資料頁」建置器 (或使用「資料頁」建置器建立之建置器) 所建立的。
這些技術也適用於使用「資料頁面」建置器之任何建置器所建立的頁面。
資料輸入頁面是由「資料頁」建置器管理,其上的任何欄位都會設為資料輸入,即使整個頁面設為僅供顯示時也是如此 (即使整個頁面未這樣設定,如果使用「資料欄位修飾元」建置器將其中一個欄位修改為資料輸入,也會發生此狀況)。
「資料頁」建置器會管理將資料輸入頁面呈現給一般使用者,以及收集並驗證使用者回應。 它會根據您的設定產生頁面的 JSP。 它會產生 SaveData 方法,其會收集 J2EE 伺服器置於 RequestInputs 中的值,並將這些值儲存在變數中。 最後,它會針對個別欄位建立驗證作業,並將驗證錯誤訊息新增至 JSP 頁面。
在驗證欄位並將結果顯示給一般使用者的程序中,您可以控制下列方面:
首先,請編輯頁面,在將出現「完整錯誤」文字的位置新增 SPAN。 開啟「匯入的頁面」建置器,並按一下編輯頁面。 找到名為 data 的 SPAN,並複製整行 HTML,使其出現兩次。 將其中一個 SPAN 內的 data 單字變更為 fullError,再按一下建置器呼叫上的確定。
開啟 inputPage 的「資料頁」建置器,並向下捲動至必要欄位及輸入驗證設定。 將錯誤位置變更為「分隔欄位左側直欄」,並針對「完整錯誤位置」選取 fullError。 現在,再次執行模型,並在兩個欄位中輸入一些非數值文字,然後按一下提交。 請注意,錯誤訊息的位置已移動,並且已在「完整錯誤」位置複製錯誤訊息。 在繼續之前,將錯誤位置變更回欄位的右側,如此可使其更有意義。
通常,當使用者完成填寫「資料輸入」頁面並提交時,將會執行某些動作。 如果出現驗證錯誤,有時您還想要執行不同的動作。 在「資料頁」建置器中,存在「成功動作」與「失敗動作」這兩種輸入。 在建立 inputPage_NextAction 方法時可以使用這些項目,您可以在 WebApp 視圖中看到這些項目。 如果查看此方法,您會看到此方法所執行的全部作業都是在進行測試,以查看頁面是否有任何驗證錯誤,然後呼叫適當的動作。
如果將「失敗動作」留為空白 (如範例所示),則預設的失敗動作是返回相同的頁面。
依預設,會根據綱目、WSDL 文件或其他機制定義的欄位類型,產生個別欄位驗證器。 您可以使用「根據綱目驗證」設定,在「資料頁」建置器中停用此行為,且不會自動建立驗證器。 然而,即使將其停用,您仍然可以使用「資料欄位修飾元」手動設定個別驗證器。
建立新的「資料欄位修飾元」,且只選取 inputPage 上的其中一個欄位。 開啟格式群組,並選取格式製作程式 com.bowstreet.builders.webapp.pageautomation.StandardFormatter。 這會導致出現一些其他輸入,包括「驗證表示式」。 選取您自己的驗證器 (但是請記住,呼叫的服務呼叫預期在此欄位中使用數字)。 請注意,如果選擇 RegularExpression(RegExString),則會為您提供新的輸入,應在其中輸入正規表示式字串。 此設定將置換該欄位的「必要/選用」值,因為在此處可以使用該選項。 請變更驗證器,並再次執行模型以查看新的驗證字串。
您可以控制 Post-Save 方法的行為,並使用它來執行跨欄位驗證。 有時,在將資料從 RequestInputs 儲存至變數之後,您還想要程式碼執行其他工作。 Post-Save 方法輸入是您用來在此程序中新增 Java 程式碼的連結鉤。 此外,如果要執行的作業是資料輸入的其他驗證,或可能比個別欄位驗證更為複雜,Post-Save 方法可能會導致驗證失敗 (強制執行失敗動作),並包含將顯示給使用者的錯誤訊息。
建立新的「方法」建置器,並將其命名為 TestLatitudes。 將傳回類型設為 String,並在方法主體中填入下列內容:
{
double lat1 = webAppAccess.getVariables().getDouble("MyServiceCall_arg1_lat1");
double lat2 = webAppAccess.getVariables().getDouble("MyServiceCall_arg3_lat2");
if (lat1 == lat2)
return "Make the latitudes different.";
else
return null;
}
該程式碼會從變數中取得兩個緯度輸入的值 (「資料頁」建置器已在該變數中儲存這些輸入),檢查並查看它們是否相同 (透過查看 WebApp 視圖並選取 (而不是開啟) 建立變數的「服務呼叫」建置器,可以瞭解這些變數的確切名稱)。
如果這兩個值相同,則程式碼會傳回一些文字,inputPage_SaveData 方法會將其解譯為錯誤訊息。 如果這兩個值不同,則程式碼會傳回空值,SaveData 方法會知道這表示 Post-Save 方法未發現任何錯誤。 執行模型,並嘗試將這兩個值設為相同,將會顯示錯誤訊息。 因為此錯誤與特定欄位無關,所以該訊息只會顯示在「完整錯誤」區段中。
如果您只想讓 Post-Save 方法執行某些工作而從不傳回錯誤,可以將其傳回類型設為 void。 此外,您可能只想在成功執行個別欄位驗證時呼叫 Post-Save 方法,或者想要始終呼叫此方法。 在「資料頁」建置器中,您可以使用 Post-Save 方法行為輸入來控制此行為。
針對每個「資料輸入」頁面,「資料頁」建置器都會建立鏈結的 Java 物件,來作為錯誤訊息管理程式。 如果選取 WebApp 視圖中的 LJO inputPageError,您會看到可用的方法。 您可以使用這些方法來設定 Post-Save 方法中的個別欄位錯誤訊息。 由於對於個別驗證器來說,案例過於複雜,或因為他們規劃使用 Post-Save 方法,因此部分開發人員會在 Post-Save 方法中設定這個。
您也可以直接取得個別訊息,來自己管理錯誤訊息的顯示,而不是讓「資料頁」建置器來管理顯示。 如果您返回含有全新資料的頁面,以及想要清除一般使用者前次造訪頁面時遺留的訊息,也可以清除訊息。
您可以在模型編輯器中使用右鍵功能表,以修改用於顯示直欄或欄位的某些設定。
在 IBM WebSphere Portlet Factory 的模型編輯器中,使用「頁面」及「設計」畫面,檢視要變更的表單或頁面。 若要變更欄位顯示設定(例如,標籤),請使用「資料欄位設定」建置器。
可從稱為豐富型資料定義 (RDD) 檔案的 XML 檔案中讀取資料定義。
豐富型資料定義用於清除 Portlet 或小組件,例如,透過隱藏不需要顯示的直欄來清除。 豐富型資料定義與模型中的綱目相關聯。 針對已選取綱目的每個欄位,您可以指定標籤、控制項類型、參考表、格式化、驗證及其他項目。
資料定義檔案透過將使用者介面 (UI) 說明與綱目相關聯來運作。 當綱目用於產生頁面元素(例如,使用「資料頁」建置器或「視圖及表單」建置器)時,所有使用者介面性質都會自動套用至頁面。 透過使用「資料欄位修飾元」建置器的功能,您可以瞭解特定設定,例如驗證及格式化。
/WEB-INF/factory/data_definitions/
提供 RDD 檔案 base_datadef.xml 和 dojo_base_datadef.xml。 您可以透過定義 override.properties 檔案中的下列內容,來置換專案的預設值。bowstreet.baseRddFile此內容的預設值位於 bowstreet.properties 檔案中。 可以定義多個檔案;使用找到的第一個檔案。
您可以使用「資料欄位設定」建置器中的預設 RDD 檔案輸入,來置換您模型中專案的基本 RDD 檔案。
您可以使用建置器來修改資料定義資訊,該資訊與頁面自動化表單和頁面上直欄和欄位的 WebApp 中的綱目相關聯。 資料定義是「資料頁」建置器的其中一種內部資料結構。 當「資料頁」與綱目類型變數一起使用時,資料頁會尋找附加至 WebApp 中綱目的任何資料定義資訊。 那些資料定義內容就會變成以綱目為基礎的任何頁面的預設值。 不過,您仍然可以使用其他建置器(例如「資料欄位設定」、「資料直欄修飾元」和「資料欄位修飾元」),來置換在與綱目相關聯的資料定義中指定的內容。
資料定義是使用元素名稱建立與綱目元素之間的關聯性。 資料定義檔中通常會儲存一組結構,每個欄位在結構中都會有一個子項資料定義。 綱目中的母項 (結構) 名稱必須符合資料定義檔中的母項名稱,而且個別欄位的名稱也必須相符。
各種自動對映及資料定義內容用於豐富型資料定義檔案。
<SchemaTypeMappings> <SchemaTypeMap type="date">base_Date</SchemaTypeMap> <SchemaTypeMap type="boolean">base_CheckBox</SchemaTypeMap> <SchemaTypeMap type="string">base_String</SchemaTypeMap> <SchemaTypeMap type="string_enumeration">base_Select</SchemaTypeMap> <SchemaTypeMap type="char">base_ShortString</SchemaTypeMap> <SchemaTypeMap type="integer">base_Integer</SchemaTypeMap> <SchemaTypeMap type="int">base_Integer</SchemaTypeMap> <SchemaTypeMap type="byte">base_Integer</SchemaTypeMap> <SchemaTypeMap type="short">base_Integer</SchemaTypeMap> <SchemaTypeMap type="long">base_Integer</SchemaTypeMap> <SchemaTypeMap type="double">base_FloatingPoint</SchemaTypeMap> <SchemaTypeMap type="float">base_FloatingPoint</SchemaTypeMap> <SchemaTypeMap type="decimal">base_Integer_Internal</SchemaTypeMap> </SchemaTypeMappings>您可以在這裡併入您自己的定義。
類型是要符合的綱目類型。此值針對「資料欄位設定」建置器中欄位的欄位類型顯示。 SchemaTypeMap 宣告中的文字是在找到相符項時使用的資料定義。 string_enumeration 類型是特殊類型。如果節點的葉的實際綱目類型是字串,且其已定義列舉或選取選項,則它會使用此類型。
欄位設定(以及資料輸入欄位的驗證設定)的某些一般內容會顯現在「資料欄位設定」建置器及 WebSphere Portlet Factory Designer 的「內容」視圖中。 不過,這些內容並不會顯現在建置器呼叫編輯器中。 若要使用這些內容,您必須將其直接新增至專案基本資料定義檔案 dojo_base_datadef.xml 或 base_datadef.xml 中。
<Attributes>
<Attribute>
<Name>color</Name>
<Value>black</Value>
</Attribute>
<Attribute>
<Name>size</Name>
<Value>${Variables/CurSize}</Value>
</Attribute>
</Attributes>
使用上述部分內容來設定直欄寬度、對齊方式、排序狀態及樣式的典型資料定義元素可能會如下所示:
<DataDefinitionElement name="DATE_SHIPPED" base="base_SAPDate"> <Label>Date Shipped</Label> <Required>false</Required> <ColumnWidth>400</ColumnWidth> <ColumnAlignment>right</ColumnAlignment> <ColumnSorting>Case Sensitive String</ColumnSorting> <Attributes> <Attribute> <Name>style</Name> <Value>color:red</Value> </Attribute> </Attributes> </DataDefinitionElement>
<ControlElementModifiers>
<BuilderCall use_modifier_dataentry="true" use_modifier_display="true">
<BuilderDefID>com.bowstreet.builders.webapp.AttributeSetterBuilderBuilderDefID>com.bowstreet.builders.webapp.AttributeSetterBuilder></BuilderDefID>
<Inputs>
<Input name = "BuilderCallEnabled">true</Input>
<Input name = "HandleExisting">Skip</Input>
<Input name = "HandleMissingValue">Ignore</Input>
<Input name = "Separator">;</Input>
<Input name = "Attributes">
<top>
<Attribute>
<Name>style</Name>
<Value>color:red</Value>
</Attribute>
</top>
</Input>
</Inputs>
</BuilderCall>
</ControlElementModifiers>
<DataEntryControl>com.bowstreet.builders.webapp.TextAreaBuilder</DataEntryControl> <DataEntryInputs> <Inputs> <Input name = "Wrap">off</Input> <Input name = "Cols">80</Input> <Input name = "Rows">5</Input> </Inputs> </DataEntryInputs>
儲存器欄位的其他值包括:
您可以使用此內容來設定具有一組可能值的欄位選項。 這個內容並不會像參考表一樣提供個別文字/值。
請參閱下面關於列舉值的本地化附註。
這個內容的典型用法可能會如下所示:
<EnumerationValues> <Value>Shipped</Value> <Value>Out of Stock</Value> <Value>Returned</Value> <Value>In Process</Value> </EnumerationValues>
您可以使用這個內容,在豐富型資料定義檔中指定自訂格式製作程式類別。 格式製作程式類別會使用與「資料欄位修飾元」建置器相同的機制及介面。
格式製作程式類別的名稱是使用 FormatterClass 元素指定,如下所示。
<DataDefinition name="AMOUNT" base="base_Currency"> <Label>Amount</Label> <ColumnSorting>Case Sensitive String</ColumnSorting> <ColumnWidth>100</ColumnWidth> <ColumnAlignment>right</ColumnAlignment> <FormatterClass>com.bowstreet.builders.webapp.pageautomation.StandardFormatter</FormatterClass> <FormatExpr resource_key="BaseDate_FormatExpr">Format(yyyy-MM-dd$MM/dd/yyyy)</FormatExpr> <TranslateExpr resource_key="BaseDate_TranslateExpr">Translate(yyyy-MM-dd$MM/dd/yyyy)</TranslateExpr> <ValidateExpr>Date(yyyy-MM-dd)</ValidateExpr> </DataDefinition>
針對 StandardFormatter,替換您的類別規格。 如果您省略 FormatterClass 元素,則會使用 StandardFormatter 類別。
替換適用於您資料定義的 FormatExpr、TranslateExpr 及 ValidateExpr 元素。
您可以使用這個內容來建立參考表,並建立其與欄位的關聯性。 若要建立新的參考表,您必須指定建置器的 ID,且該建置器必須是在 WebApp 中建立參考表 (「參考表」、「Domino 關鍵字查閱」或「SAP 說明值」) 的建置器。 請在 Inputs 元素中指定所有必要的建置器輸入,如下所示:
此範例程式碼會使用「參考表」建置器,從 XML 資料建立一項查閱。 此功能還用來自動建立並套用「SAP 說明值」查閱。
<DataDefinitionElement name="BILLING">
<Label>Billing</Label>
<LookupTable>
<BuilderID>com.bowstreet.builders.webapp.LookupTableBuilder</BuilderID>
<Name>billing</Name>
<Inputs>
<Input name = "DataType">NewXmlData</Input>
<Input name = "GetDataFrom">BuilderInput</Input>
<Input name = "TablePosition">InFront</Input>
<Input name = "Name">billing</Input>
<Input name = "NewXmlData">
<lookup>
<entry>
<name>Purchase Order</name>
<value>1</value>
</entry>
<entry>
<name>Credit Card</name>
<value>0</value>
</entry>
</lookup>
</Input>
<Input name = "ValueElementName">value</Input>
<Input name = "LabelElementName">name</Input>
</Inputs>
</LookupTable>
</DataDefinitionElement>
<PotentialColumnSorting>Case Insensitive String</PotentialColumnSorting>
<DataDefinition name="AMOUNT"> <Label>Amount</Label> <Properties> <Property name="ColumnWidth">100</Property> <Property name="ColumnAlignment">right</Property> </Properties> </DataDefinition>
如果您要定義的查閱值,是來自本身不會建立查閱的建置器,則可以指定呼叫其他的建置器。
最後結果是資料定義檔會使任何數目的欄位中 (在參照資料定義的每個模型中) 自動移入下拉參考表,其中的值是透過呼叫服務來動態擷取。 例如,下列 XML 可用來呼叫「服務消費者」建置器,以動態取得查閱值,然後參照「參考表」建置器中的結果值:
<LookupTable>
<Name>companyLookup</Name>
<BuilderID>com.bowstreet.builders.webapp.LookupTableBuilder</BuilderID>
<Inputs>
<Input name = "DataType">XmlData</Input>
<Input name = "VariableType">ValueTagLabelTag</Input>
<Input name = "GetDataFrom">BuilderInput</Input>
<Input name = "TablePosition">InFront</Input>
<Input name = "Name">companyLookup</Input>
<Input name = "XmlData">${MethodCall/companiesGetCompanyList}</Input>
<Input name = "ValueElementName">Value</Input>
<Input name = "LabelElementName">Name</Input>
</Inputs>
<ServiceInfo>
<BuilderID>com.bowstreet.builders.webapp.ServiceConsumer2Builder</BuilderID>
<Inputs>
<Input name = "UseAllOperations">true</Input>
<Input name = "OverrideInputs">false</Input>
<Input name = "Name">companies</Input>
<Input name = "ProviderModel">services/CompanyListService</Input>
<Input name = "OperationName">getCompanyList</Input>
</Inputs>
</ServiceInfo>
</LookupTable>
在豐富型資料定義檔案中,您可以建立欄位的分組。
<DataDefinitions>
<GroupDefinitions>
<GroupDefinition name="Personal">
<Label>Personal Information</Label>
</GroupDefinition>
<GroupDefinition name="Address">
<Label>Address</Label>
</GroupDefinition>
</GroupDefinitions>
<DataDefinition name="Members">
<Required>true</Required>
<Children>
<DataDefinition name="first">
<GroupName>Personal</GroupName>
<Label>First Name</Label>
<Required>true</Required>
<DataType>string</DataType>
</DataDefinition>
<DataDefinition name="last">
<GroupName>Personal</GroupName>
<Label>Last Name</Label>
<Required>true</Required>
<DataType>string</DataType>
</DataDefinition>
<DataDefinition name="states" base="base_US_States">
<GroupName>Address</GroupName>
<Label>States</Label>
<Required>false</Required>
</DataDefinition>
<DataDefinition name="birthdate" base="base_date">
<GroupName>Personal</GroupName>
<Label>Date Of Birth (MM/DD/YY)</Label>
<Required>false</Required>
</DataDefinition>
<DataDefinition name="birthtime" base="base_time">
<GroupName>Personal</GroupName>
<Label>Time Of Birth (HH:MM AM/PM)</Label>
<Required>false</Required>
</DataDefinition>
<DataDefinition name="salary">
<GroupName>Business</GroupName>
<Label>Salary</Label>
<Required>false</Required>
</DataDefinition>
</Children>
</DataDefinition>
</DataDefinitions>
<GroupDefinitions> 元素會在相對應的 <GroupDefinition> 元素下,設定個別的欄位群組。
在豐富型資料定義檔案中,基本屬性可以用於繼承其他資料定義中的內容。
例如,下面是一般資料欄位的兩個定義(QUANTITY 及 DATE_ORDERED)。
<DataDefinitionElement name="QUANTITY"> <Label>Quantity</Label> <Required>false</Required> <ValidateExpr>Optional integer</ValidateExpr> </DataDefinitionElement> <DataDefinitionElement name="DATE_ORDERED" base="base_SAPDate"> <Label>Date Ordered</Label> </DataDefinitionElement>
DATE_ORDERED 的定義衍生自基本屬性中的值。 DATE_ORDERED 使用的 base_SAPDate 定義可能類似於下列程式碼。
<DataDefinitionElement name="base_SAPDate"> <DataEntryControl>com.bowstreet.solutions.wfm.builders.CalendarPickerBuilder</DataEntryControl> <DataEntryInputs> <Inputs> <Input name = "Format">MM/dd/yyyy</Input> </Inputs> </DataEntryInputs> <FormatExpr>Format(yyyy-MM-dd$MM/dd/yyyy)</FormatExpr> <TranslateExpr>Translate(yyyy-MM-dd$MM/dd/yyyy)</TranslateExpr> <ValidateExpr>Optional Date(yyyy-MM-dd)</ValidateExpr> </DataDefinitionElement>
您可以隱藏表單或頁面上目前顯示的直欄或欄位。
如果直欄或欄位目前未顯示,則您還可以安排其在表單或頁面上顯示。 在 IBM WebSphere Portlet Factory 的模型編輯器中,使用「頁面」及「設計」畫面,檢視要變更的表單或頁面。
如果模型不包含此表單或頁面的相關建置器,則會將建議的建置器新增至模型。 如果相關的建置器位於此表單或頁面的模型中,則會以您的變更來更新該建置器中的相關輸入。
您可以修改是否可以排序直欄。
在 IBM WebSphere Portlet Factory 的模型編輯器中,使用「頁面」及「設計」畫面,檢視要變更的表單或頁面。
如果模型不包含此表單或頁面的相關建置器,則會將建議的建置器新增至模型。 如果相關的建置器位於此表單或頁面的模型中,則會以您的變更來更新該建置器中的相關輸入。
您可以合併欄位以呈現為單一欄位,並合併直欄以呈現為單一直欄。
您通常需要資料位於多個欄位中。 不過,顯示資料時,您可能要將這些欄位合併為一個直欄進行顯示。 例如,人員的地址可能包括個別城市、州和郵遞區號欄位。 您可以使用「資料欄位合併」建置器,來將各個欄位作為詳細資料頁面上的單一欄位或單一顯示的直欄。
在 IBM WebSphere Portlet Factory 的模型編輯器中,使用「頁面」及「設計」畫面,檢視要變更的表單或頁面。
「資料欄位合併」建置器會新增至具有設定的模型。 您可以開啟建置器呼叫編輯器,並指定要在所合併欄位之間顯示的分隔字元。 您還可以透過將欄位拖放至建置器呼叫編輯器中,來重新排列欄位的順序。
IBM WebSphere Portlet Factory 模型中的頁面可以從模型外取得,或者當您在模型中工作時建立。
其他建置器呼叫可以在這些頁面上執行,以及修改或新增至其顯示的 HTML 控制項。
「資料頁」建置器與使用「資料頁」的其他建置器一起,可以自動產生已顯示頁面的 HTML。 我們稱此特性為「頁面自動化」。 您可以使用「頁面自動化 HTML 範本」來控制此產生的 HTML 的外觀與操作方式。
如需相關資訊和實際應用程式,請參閱此 IBM WebSphere Portlet Factory Wiki 文章。
「在具名標籤上」技術是三種頁面位置方法中最簡單的一種,並且會使用實作建置器控制項的 JSP 程式碼,來取代頁面上的具名元素。
若要使用「在具名標籤上」技術在頁面上放置控制項建置器,請執行下列步驟:
在頁面上放置控制項建置器呼叫時,「相對於具名標籤」技術比「在具名標籤上」方法稍微複雜一些。
如果您在建置器頁面位置輸入中使用相對於具名標籤,則可以選擇取代具名標籤的內容、在指定的標籤內部插入新標籤,或在具名標籤鄰近插入新標籤。 若要使用相對於具名標籤技術,請執行下列步驟。
每個頁面位置技術 都會產生一個「頁面位置」字串,該字串會決定控制項建置器呼叫要新增至的頁面及頁面上的位置。
「進階」頁面位置技術可讓您建立複式頁面位置字串,以在多個頁面上 以多種方法尋找控制項建置器呼叫。
下列頁面位置範例用於表現頁面位置語法的彈性:
StartingPage 頁面上的 firstBuilder 標籤。
所有 (非產生的)「頁面」上所有名為 firstBuilder 的位置
在 StartingPage 中,搜尋名為 firstBuilder 的元素。 如果有找到,則為該節點。 如果找不到,則搜尋 XPath "HTML/BODY",並使用 InsertInsideBottom 來插入一個新節點,將其命名為 firstBuilder。
在 StartingPage 中,搜尋名為 theBody 的元素。 如果找不到,則搜尋 XPath "HTML/BODY"。 在這兩種情況下,都請使用 InsertInsideBottom 來插入一個新節點,並命名為 "firstBuilder"。
在所有頁面中,在 BODY 標籤內部的底端插入一個新節點,並命名為 Foo。
在所有公用頁面及名為 Extra 的「頁面」中,使用 XPath 來搜尋 FORM 標籤,然後在其內部頂端插入一個新節點。 將新節點命名為 Header。
在三個具名元素 (在「頁面 A」及「頁面 B」上名為 OKButton 的元素,以及在「頁面 C」上名為 OK 的元素) 的右邊建立一個新元素,命名為 Cancel。
針對所有內容 TopLevel 設為 true 的頁面,搜尋名為 "AdvancedButton" 的節點。
對於所有內容 TopLevel 設為 true,或者內容 AddAdvanced 設為 true 的頁面,搜尋名為 AdvancedButton 的節點。
以防禦方式編碼模型,可防止 Script 錯誤。
在存取元素之前,請檢查文件中是否存在該元素。 可以藉由測試元素是否為空值來執行此動作。 如果元素為空值,則它尚不存在於物件模型中。
若要實作此修正程式,請建立會採用及測試物件的簡式函數。 如果測試失敗,使用者會接收到錯誤訊息,如果測試成功,程式碼會繼續如預期般執行。 例如:
function isTheObjectAroundYet(object) {
var passed = (object!=null)
if (!passed)
alert("The page is not completely loaded.
Please wait a moment and try again.")
return passed
}
function exampleFunction() {
var theformneededtobeprocessed = document.forms["myForm"]
if (isTheObjectAroundYet(theformneededtobeprocessed)) {
// it's okay to script to the form
}
}
此測試適用於小型本地化測試。 然而,僅測試是否已載入頁面會更簡單。 請記得必須在下載完頁面上的內容及所有影像之後,才會發動 Onload 事件。 如果使用者的連線較慢,表示該事件要過一段時間才會發動。 在某些情況下,必須使用 Onload 事件 (例如,您想要載入影像,或在 Internet Explorer 中執行動態內容)。 但是,您常常只需要知道元素是否已準備好可進行 Script 編寫 (尚未載入的影像仍然可以進行 Script 編寫)。
使 Script 成為頁面上的最後一個項目,而不要使用 Onload 事件。 例如:
<SCRIPT>
function doLoad() {
// This is the script that will
// execute when the page content is
// loaded
}
</SCRIPT>
<BODY>
...body content...
<SCRIPT>
// The last element in your document
// is a script calling the doLoad()
// function
doLoad()
</SCRIPT>
</BODY>
</HTML>
您可以建立用於追蹤頁面內容是否可用的旗標變數。 使用此方法,就不需要測試每個元素。
<SCRIPT>
var isLoaded = false
function doSomething() {
if (isLoaded) {
// run script
}
}
</SCRIPT>
<BODY>
...body content...
<SCRIPT>
// The last element in your document
// is a script that sets the isLoaded
// flag
isLoaded = true
</SCRIPT>
</BODY>
總而言之,要以防禦方式編寫 Script。 因為可以先執行事件及 Script,再完整載入頁面,所以請勿低估不同計時對 Script 的影響。 測試是否存在物件,注意 Onload 事件及影像。
您可以使用特定建置器,將 JavaServer Pages (JSP) 引入模型中。
可以使用下列建置器。
除了使用這些 JSP 特定的建置器之外,您也可以手動編寫 JSP 或使用 IBM WebSphere Portlet Factory 頁面(例如「匯入的頁面」建置器、「頁面」建置器及「匯入的目錄」建置器)中現有的 JSP,但前提是它們不會執行下列動作。
WebSphere Portlet Factory 頁面一律使用 include 來呼叫,而不允許執行這些動作。
假設它們遵循上述注意事項,「匯入的目錄」建置器通常可以正常運作,以併入一組現有 JSP(包括頁面間動作及鏈結)。
如果匯入模型以供使用的任何 JSP 頁面包含任何重新導向程式碼,則需要使用模型中的方法重新實作此行為。
<%
response.sendRedirect(response.encodeRedirectURL("http://127.0.0.1:7001/MyApp/results/success.html"));
%>
您需要變更處理此頁面的動作,以併入 JSP 頁面內含的任何邏輯,並處理 success.html 頁面。 您應該呼叫「匯入的頁面」建置器來匯入 success.html。 例如,模型中的方法會包含與下列內容類似的程式碼:
...
// incorporate any logic in JSP here.
webAppAccess.processPage("SuccessPage");
...
將頁面匯入模型之後,您便可以使用相對應建置器的呼叫來取代部分或全部 HTML 控制項。
若要使用相對應的建置器呼叫來取代 HTML 控制項,請執行下列步驟:
如果您決定建立自己的表單,則需要執行下列步驟:
您可以在「資料頁」及「資料欄位修飾元」建置器中,定義表單元素樣式,並指定那些樣式。
您可以修改產生的 HTML 頁面,方法為在 HTML 頁面中指定您自己的 CSS 類別,並建立適當的 CSS 檔案。
若要確認您的變更會傳送到模型,請開啟可將頁面匯入至模型的「匯入的頁面」建置器,並在建置器呼叫編輯器中按一下確定。
如果您從「資料頁」建置器呼叫中 (或從建置器呼叫編輯器中的「進階」群組) 產生範例 HTML 頁面,則 HTML 頁面會使用下列 CSS 類別名稱。
您可以將下列 CSS 樣式定義用作開始點。 將它們複製到空白 CSS 檔案中,或將它們內含在產生之 HTML 頁面的 <STYLE /> 元素中。
.label { font-family: Arial, Helvetica, sans-serif; font-size:10pt;
font-weight: bold; color: #004E8E}
.sectionLabel { font-family: Arial, Helvetica,
sans-serif;font-size: 14pt; font-weight: bold; color: #000000}
.outputData { font-family: Arial, Helvetica, sans-serif;font-size:
10pt; font-weight: bold; color: #000000}
.entireTable { background-color: #e0e0e0}
.tableHead {background-color:#404040;color: #ffffff;font-family:
Arial,Helvetica,sans-serif; font-size: 10pt;font-weight: bold; }
.tableRow {background-color: #e0e0e0; color: #000000;font-family:
Arial, Helvetica, sans-serif; font-size: 10pt; }
.tableRowEven {background-color: #e0e0ff; color:
#000000;font-family: Arial, Helvetica, sans-serif; font-size: 10pt;
}
.tableRowOdd {background-color: #e0e0e0; color:
#000000;font-family: Arial, Helvetica, sans-serif; font-size: 10pt;
}
.Required {font-family: Arial, Helvetica, sans-serif;
font-size:10pt; font-weight: bold; color: #ff0000}
.ErrorMessage {font-family: Arial, Helvetica, sans-serif;font-size:
10pt; font-weight: bold; color: #ff0000}
使用「資料頁」建置器,來建立提示使用者進行輸入的表單。
您可以使用數種方式在 IBM WebSphere Portlet Factory 應用程式中建立表單。
在許多情況下,「資料頁」及「資料欄位修飾元」建置器所提供的架構具有足夠的延伸性,可以實作複雜的表單。 如果無法使用這些建置器來實作您的需求,則可以使用個別建置器呼叫來建立您自己的表單、甚至自己的表單架構。 使用「資料頁」及「資料欄位修飾元」建置器實作的表單可以提供更健全的架構來處理表單顯示,以及驗證輸入、處理輸入及錯誤。
您可以使用「資料頁」建置器,來建立提示使用者進行輸入的表單,以自動顯示輸入控制項及輸入的處理。
當您想要針對資料服務作業 (此作業不會傳回結果資料) 建立輸入頁面時,請使用「輸入表單」建置器。 此建置器會建立資料服務作業或方法的輸入頁面。 它與「視圖及表單」輸入頁面支援很相似,但是在提交輸入表單之後的下一個動作是使用者指定的動作。 此建置器適用於沒有要顯示之結果資料的作業。
因為「資料頁」建置器使用綱目來控制其行為,所以您只要變更定義表單輸入的綱目,即可變更表單。
「資料頁」建置器會在模型的頁面上,將輸入表單插入具名的位置。 此頁面可以像 Main and Page 基本模型中包括的 page1 頁面一樣簡單,也可以是由 HTML 設計器所建立的匯入頁面。 如果該頁面包含輸入元素,則「資料頁」建置器可將 XML 變數中的元素對映至這些輸入。 您還可以配置「資料頁」建置器,根據與變數相關聯的綱目,或頁面上定義的輸入欄位及綱目定義的元素組合,決定要顯示的輸入欄位。
使用「資料欄位修飾元」建置器,可以置換表單行為。
針對資料中任何指定的元素,您都可以藉由使用「資料欄位修飾元」建置器呼叫,以及指定想要用來控制元素行為的建置器,置換「資料頁」實作的行為。 一般而言,如果您無法決定與資料相關聯之綱目或 HTML 頁面中的元素行為,則會置換元素的預設行為。
需要置換「資料頁」功能的某些特定使用個案包括:
若要利用以「資料頁」建置器建立的表單來置換元素預設行為,請將「資料欄位修飾元」建置器新增至模型,並指定要變更其行為的元素。
您可以決定顯示畫面或輸入表單的外觀。
提供實作所需佈置及顯示畫面的專屬 HTML 頁面。 「資料頁」建置器會讓所提供 HTML 中的具名 <input /> 及 <span /> 標籤與資料中的元素名稱一致。 在「資料頁」建置器呼叫中,請選擇要讓表單完全由 HTML 頁面決定,或完全由相關聯的資料綱目決定,或由 HTML 及綱目共同決定。 如果 HTML 頁面包含要顯示重複元素的表格,請指定整個表格或僅指定表格及列名稱。 同時使用 HTML 頁面及綱目來衍生表格外觀不是一種良好的作法。
正如您可以藉由限制所使用的具名 <span /> 或 <input /> 標籤來限制表格中所顯示的資料一樣,如果您要顯示表格的其他資料,可以將具名 <span /> 或 <input /> 標籤新增至表格,並使用部分其他建置器呼叫來顯示其他來源的資料。 例如,如果您想要顯示範例資料中每位客戶的電子郵件位址,請將另一個 <td /> 元素新增至客戶列,並從包含每位客戶之電子郵件位址的變數將資料移入此直欄。
使用各種建置器及 CSS 樣式修改輸入表單。
您可以變更「資料頁」建置器產生的表單佈置。
使用「資料欄位修飾元」建置器,可以隱藏或控制資料元素的顯示。 您可以使用「資料欄位修飾元」建置器呼叫,指定想要隱藏的元素,然後啟用隱藏元素輸入,來隱藏表單資料的元素。
依預設,「資料頁」建置器會垂直顯示非重複的元素,例如範例資料中的 <street />、<city />、<state /> 及 <zip /> 元素。 若要水平顯示這些元素,請將欄位輸入設為包含非重複元素 (在此情況下,<address />) 的元素,並針對儲存器顯示方向啟用水平選項。
依預設,「資料頁」建置器會在表格中顯示重複元素。 若要垂直顯示重複元素,請將欄位輸入設為包含重複元素的元素,並對儲存器顯示方向輸入啟用垂直選項。
您可以透過「已建立設定檔 Web 服務呼叫」建置器所產生的多個變數,建立表單。
服務呼叫經常針對特定服務呼叫作業定義數個輸入。 您可以配置「已建立設定檔 Web 服務呼叫」建置器來產生變數,讓它從其中取得與服務呼叫相對應的輸入值。 (如果您有 WSDL 文件中所定義的作業,則使用「Web 服務呼叫」建置器)。 若要產生這些輸入的輸入表單,您可以使用「資料頁」建置器呼叫,指定服務呼叫所產生的所有輸入變數。
下列步驟會針對配置服務呼叫以產生變數,以及設定「資料頁」建置器呼叫以根據那些變數來產生表單的作業,提出其程序大綱。
您可以重新顯示表單頁面,並將表單值重設成原始值。
若要起始設定表單,請執行下列步驟。
在存取 XML 變數內容的簡式表單中,您可以顯示基於 XML 變數內容的資料。
您可以使用所產生之頁面上的輸入控制項,來指定使用者可以變更的元素。
使用「按鈕」建置器、「鏈結」建置器或 HTML 事件動作,以進行表單提交。
若要新增可讓使用者提交表單的控制項:
如果模型具有「資料頁」建置器可以在其上放置 (或使用) 表單的頁面,請配置「資料頁」建置器呼叫,以實作想要的表單行為。
「資料頁」建置器可以操作輸入表單、僅限檢視表單或混合輸入及僅限檢視欄位的表單。 這些指示與建立輸入表單相關。 若要配置「資料頁」建置器呼叫來建立輸入表單:
使用「資料頁」建置器來建立輸入表單的範例 HTML 頁面。
若要使用「資料頁」建置器建立範例 HTML 頁面,請執行下列步驟:
使用「資料頁」建置器,可以修改表單中的所有標籤。
若要產生所有表單欄位的內容檔,請執行下列步驟:
如果只想要變更資料中一個元素的標籤,則可以使用「資料欄位修飾元」建置器。
您可以置換「資料頁」建置器產生的預設標籤。
「資料頁」建置器會根據元素名稱 (是在與表單上所顯示的資料相關聯之綱目中定義),為每個表單欄位產生標籤。 例如,元素 <customer /> 的輸入標籤是 "customer"。 您通常會為每個表單欄位設定您自己的標籤。
您可以使用內容檔來置換預設的輸入標籤,此內容檔會列出每個元素名稱,以及要用於每個元素的標籤。 例如,<customer=Customer Name> 可以是內容檔中的一個項目。 在表單中,與資料中之 <customer /> 元素相對應的欄位為客戶名稱。
您可以使用「資料頁」建置器來產生內容檔,它包含表單上每個元素的項目。 然後,您可以將此內容檔指定為「資料頁」建置器要使用的資源軟體組。
您可以配置「資料頁」建置器呼叫,產生以資料為基礎的 HTML 頁面。
當您使用「資料頁」建置器來建立要使用的 HTML 頁面時,可以控制「資料頁」建立此表格的方法:
「資料頁」建置器讓您能夠顯示服務呼叫、SQL 陳述式或任何其他提供資料之建置器呼叫的結果。
若要使用「資料頁」建置器顯示資料:
使用「日期/時間格式製作程式」建置器可以控制是否以特定格式顯示日期及時間值。
此建置器會變更伺服器的預設日期及時間格式,以便為模型中的所有日期及時間變數指派相同的格式。 若要指定伺服器的特定日期及時間格式,請執行下列步驟:
當您執行包含此建置器的模型時,您會看到採用所指定格式的日期及時間。 請記住,您選取的格式會置換伺服器設定的格式,並會套用至模型中的所有「日期」、「時間」及「日期時間」變數的內容。
使用此說明中的步驟,來進行特殊化且詳細的欄位格式化。
若要對用於顯示欄位的設定執行限制變更,請使用「資料欄位設定」建置器。
com.bowstreet.methods.IInputFieldFormatter您可以變更一個以上欄位的顯示格式、資料格式及驗證方法。
IBM WebSphere Portlet Factory Designer 提供數個建置器,可以用來控制日期、時間及日期時間值的格式。
在大多數情況下,這些值會儲存在變數中,您可以個別控制它們的格式,也可以在整個模型或應用程式中全域控制它們的格式。 您可以自訂日期及時間的顯示格式,也可以驗證使用者輸入的日期及時間值。 IBM WebSphere Portlet Factory Designer 包括一個 StandardFormatter 類別,可用於控制日期及時間的格式化作業。
格式製作程式類別會提供由「資料欄位修飾元」建置器呼叫控制之欄位及輸入的格式化及驗證功能。
格式製作程式會採用原始電話號碼資料 (例如,2075558487),並將它格式化為以點隔開的格式 (例如,207.555.8487) 或以橫線隔開的格式 (例如,(207)555-8487) 格式。 它也會確保使用者僅使用其 validate 方法輸入數值字元。
您可以在單一格式製作程式類別中實作任意數量的格式、轉換或驗證作業。
當您開始開發您的格式製作程式類別時,請實作 IInputFieldFormatter 介面。
import java.util.List;
import java.util.ArrayList;
import com.bowstreet.methods.IInputFieldFormatter;
import com.bowstreet.webapp.WebAppAccess;
public class SimpleFormatter implements IInputFieldFormatter
{
}
匯入的類別將用來建置表示式清單,並與 webAppAccess 物件進行互動。
format 方法會檢查它接收及呼叫適當作業的表示式,將值當作引數傳遞至該作業。
public String format(String value, String expression) {
String result = null;
if(getErrorMessage() == null) {
if (expression.equals(PHONEDOTS)) {
result = phoneWithDots(value);
}
else if (expression.equals(PHONEDASHES)){
result = phoneWithDashes(value);
}
}
else {
result = value;
}
return result;
}
在此情況下,format 方法會檢查並查看表示式是否等於之前定義的其中一個表示式常數。 下列程式碼片段顯示 phoneWithDots 及 phoneWithDashes 方法。
String phoneWithDots(String value) {
String dotvalue = value.substring(0,3)+ "." + value.substring(3,6) +
"." + value.substring(6,value.length());
return dotvalue;
}
String phoneWithDashes(String value) {
String dashvalue = "(" + value.substring(0,3)+ ") " + value.substring(3,6) +
"-" + value.substring(6,value.length());
return dashvalue;
}
在新增執行格式化、轉換及驗證的程式碼之前,您需要協助建立各種表示式清單,以及部分錯誤訊息文字。
private String errorMessage;
private WebAppAccess webApp;
protected static List formatExpressionList = null;
protected static List translateExpressionList = null;
protected static List validateExpressionList = null;
// Set constants for format expressions
public final static String PHONEDOTS = "Phone # with Dot Separators";
public final static String PHONEDASHES = "Phone # with Dash Separators";
// Build up array of format expression constants
private static final String[] formatExpressions =
{
PHONEDOTS, PHONEDASHES
};
// Use the makeList method to build up the expression lists
static
{
formatExpressionList = makeList(formatExpressions);
//translateExpressionList = makeList(translateExpressions);
//validateExpressionList = makeList(validateExpressions);
}
// You can create your own way to build up the expression lists or copy this one
protected static List makeList(String[] array)
{
List list = new ArrayList(array.length);
for (int i = 0; i < array.length; i++)
list.add(array[i]);
return list;
}
此外,IInputFieldFormatter 介面還會宣告取得並設定這些資源的方法。 下列程式碼會顯示這些方法的簡單實作:
/* These methods are quick implementations of those defined in the IInputFieldFormatter
*/
public void setErrorMessage(String msg) { errorMessage = msg; }
public String getErrorMessage() { return errorMessage;}
public void setWebAppAccess(WebAppAccess webApp) { this.webApp = webApp; }
public WebAppAccess getWebAppAccess() { return webApp; }
public void setTranslateSuccessFlag(boolean parm1) { }
public boolean getTranslateSuccessFlag() { return true; }
public List getFormatExpressionList() { return formatExpressionList; }
public List getTranslateExpressionList() { return translateExpressionList; }
public List getValidateExpressionList() { return validateExpressionList; }
當使用者輸入電話號碼時,他們可以在輸入時不使用任何分隔字元,也可以使用某種分隔字元 (例如點或橫線)。
public String translate(String value, String expression) {
String result = null;
if (expression.equals(PHONEDATA)) {
result = stripPhoneNumber(value);
}
return result;
}
與 format 方法的情況一樣,translate 方法會檢查並查看表示式是否等於其中一個預先定義的表示式常數,並呼叫提供 value 作為其引數的方法。 下列程式碼範例會顯示 stripPhoneNumber 方法:
private String stripPhoneNumber(String value) {
String result = value;
String temp = value;
if(value.indexOf('.') > -1) {
temp = value.trim();
StringBuffer sb = new StringBuffer(temp);
for(int i= sb.length() - 1;i > -1;i--){
char c = sb.charAt(i);
if (c == '.'){
sb.deleteCharAt(i);
}
}
result = sb.toString();
} //end if
else if (value.indexOf('-') > -1) {
StringBuffer sb = new StringBuffer(temp);
for(int i= sb.length() - 1;i > -1;i--){
char c = sb.charAt(i);
if (c == ' ' || c == '(' || c == ')' || c == '-'){
sb.deleteCharAt(i);
} //end if
}
result = sb.toString();
}
return result;
}
validate 方法遵循分析表示式及呼叫適當方法的程序來執行實際的作業;在此情況下,驗證使用者在輸入電話號碼時是否僅使用數值字元。
public boolean validate(String value, String expression) {
boolean result = false;
if(expression.equals(VALIDATEPHONE)) {
result = validatePhoneNumber(value);
}
return result;
}
validatePhoneNumber 方法會檢查並查看 value 引數是否僅由數值字元組成:
boolean validatePhoneNumber(String value) {
boolean result = true;
char ch;
for(int index = 0; index < value.length(); index++) {
ch = value.charAt(index);
if (ch<48 || ch>57) {
result=false;
setErrorMessage("Phone numbers cannot include letters.");
}
}
return result;
}
在上面的程式碼範例中,請注意如果發現字元在數值字元的 ASCII 範圍之外,程式碼便會呼叫 setErrorMessage 方法,設定含有適當錯誤訊息的訊息字串。
package doctest.datapage;
import java.util.List;
import java.util.ArrayList;
import com.bowstreet.methods.IInputFieldFormatter;
import com.bowstreet.webapp.WebAppAccess;
public
class SimpleFormatter implements IInputFieldFormatter
{
private
String errorMessage;
private WebAppAccess webApp;
protected static
List formatExpressionList = null;
protected static List translateExpressionList
= null;
protected static List validateExpressionList = null;
public
final static String PHONEDOTS = "Phone # with Dot Separators";
public
final static String PHONEDASHES = "Phone # with Dash Separators";
public
final static String PHONEDATA = "Translate Phone # to Data Fromat";
public
final static String VALIDATEPHONE ="Validate Phone #";
private static
final String[] formatExpressions =
{
PHONEDOTS, PHONEDASHES
};
private
static final String[] translateExpressions =
{
PHONEDATA
};
private
static final String[] validateExpressions =
{
VALIDATEPHONE
};
static
{
formatExpressionList
= makeList(formatExpressions);
translateExpressionList = makeList(translateExpressions);
validateExpressionList
= makeList(validateExpressions);
}
/**
* @see com.bowstreet.methods.IInputFieldFormatter#format(String,
String)
*/
public String format(String value, String expression)
{
String result = null;
if(getErrorMessage() == null) {
if
(expression.equals(PHONEDOTS)) {
result = phoneWithDots(value);
}
else
if (expression.equals(PHONEDASHES)) {
result = phoneWithDashes(value);
}
}
else
{
result = value;
}
return result;
}
/**
*
@see com.bowstreet.methods.IInputFieldFormatter#translate(String, String)
*/
public
String translate(String value, String expression) {
String result =
null;
if (expression.equals(PHONEDATA)) {
result = stripPhoneNumber(value);
}
return
result;
}
/**
* @param value The input value to be validated.
*
@param expression The description of the validation method to be performed.
*
*
@see com.bowstreet.methods.IInputFieldFormatter#validate(String, String)
*/
public
boolean validate(String value, String expression) {
boolean result =
false;
if(expression.equals(VALIDATEPHONE)) {
result = validatePhoneNumber(value);
}
return
result;
}
/* These methods are quick implementations of those
defined in the IInputFieldFormatter
*/
public void setErrorMessage(String
msg) { errorMessage = msg; }
public String getErrorMessage() { return
errorMessage;}
public void setWebAppAccess(WebAppAccess webApp) { this.webApp
= webApp; }
public WebAppAccess getWebAppAccess() { return webApp; }
public
void setTranslateSuccessFlag(boolean parm1) { }
public boolean getTranslateSuccessFlag()
{ return true; }
public List getFormatExpressionList() { return formatExpressionList;
}
public List getTranslateExpressionList() { return translateExpressionList;
}
public List getValidateExpressionList() { return validateExpressionList;
}
String phoneWithDots(String value) {
String dotvalue = value.substring(0,3)+
"." + value.substring(3,6) +
"." + value.substring(6,value.length());
return
dotvalue;
}
String phoneWithDashes(String value) {
String
dashvalue = "(" + value.substring(0,3)+ ") " + value.substring(3,6) +
"-"
+ value.substring(6,value.length());
return dashvalue;
}
/**
*
Method stripPhoneNumber.
* @param value
* @return String
*/
private
String stripPhoneNumber(String value) {
String result = value;
String
temp = value;
if(value.indexOf('.') > -1) {
temp = value.trim();
StringBuffer
sb = new StringBuffer(temp);
for(int i= sb.length() - 1;i > -1;i--){
char
c = sb.charAt(i);
if (c == '.'){
sb.deleteCharAt(i);
}
}
result
= sb.toString();
} //end if
else if (value.indexOf('-') > -1)
{
StringBuffer sb = new StringBuffer(temp);
for(int i= sb.length()
- 1;i > -1;i--){
char c = sb.charAt(i);
if (c == ' ' || c ==
'(' || c== ')' || c== '-'){
sb.deleteCharAt(i);
} //end if
}
result
= sb.toString();
}
return result;
}
boolean validatePhoneNumber(String
value) {
boolean result = true;
char ch;
for(int index =
0; index < value.length(); index++)
{
ch = value.charAt(index);
if
(ch<48 || ch>57)
{
result=false;
setErrorMessage("Phone
numbers cannot include letters.");
}
}
return result;
}
protected
static List makeList(String[] array)
{
List list = new ArrayList(array.length);
for
(int i = 0; i < array.length; i++)
list.add(array[i]);
return
list;
}
}</p>
您可以變更專案的預設佈景主題內容。
您可以使用佈景主題來指定及控制 Web 應用程式中的使用者介面 (UI) 外觀。
佈景主題是樣式資訊的集合,可用來驅動在您模型中提供應用程式使用者介面的建置器輸入。 此資訊包括但不限於 HTML 範本、樣式表 (CSS)、基本頁面、強調顯示樣式以及分頁樣式。
<Theme extends="/WEB-INF/factory/themes/">
<DataPage_StyleSheetOverride>/factory/html_templates/gridtable_blue.css</DataPage_StyleSheetOverride>
<ViewAndForm_ViewPageStyleSheetOverride>/factory/html_templates/gridtable_blue.css</ViewAndForm_ViewPageStyleSheetOverride>
<ViewAndForm_HighlighterBackground>#60A1EA</ViewAndForm_HighlighterBackground>
<ViewAndForm_HighlighterForeground>#FFFFFF</ViewAndForm_HighlighterForeground>
<InputForm_StyleSheetOverride>/factory/html_templates/gridtable_blue.css</InputForm_StyleSheetOverride>
<PagingLinks_BasePage>/factory/pages/paging/data_paging_links_blue.html</PagingLinks_BasePage>
.......
</Theme>
bowstreet.themeFile=/WEB-INF/factory/themes/blue.uitheme
在單一模型中,只要併入「佈景主題」建置器,便可置換所使用的佈景主題。 「佈景主題」建置器會置換專案佈景主題 (如果已指定的話),或者可讓您置換某些建置器的個別佈景主題驅動輸入。 「佈景主題」建置器也可讓您建立專屬的佈景主題檔。
對於「資料頁」、「輸入表單」以及「視圖及表單」建置器以外的使用者介面相關建置器,您可以使用您建立之佈景主題內容資料的間接參照。 對於個別的建置器輸入,您可以在佈景主題檔中定義元素及相關值,並在相關的建置器輸入中參照該定義。 例如,對於按鈕影像,在佈景主題檔中定義指定影像檔路徑的元素,並在相關的建置器輸入中使用間接參照,以存取相關的內容資料。 使用此安排,您可以在某處定義單一類型的輸入,然後在多個建置器中參照該輸入。
如果「資料頁」等使用者介面相關建置器具有針對樣式表置換輸入指定的值,則會使用該樣式表。
如果未指定任何樣式表置換輸入,且使用中的佈景主題具有特定建置器的 CSS 定義,則會使用該 CSS。
如果未指定任何樣式表置換輸入,且未指定佈景主題檔值,則相關 HTML 範本中的提示會判定使用的 CSS 檔。
如果您想要在相同入口網站網頁上的不同 Portlet 中,使用不同的佈景主題,請確保您的佈景主題使用唯一的樣式表類別名稱,以避免發生衝突。 若要確保在不同 Portlet 中的唯一性,請變更 HTML 範本檔中以及對應樣式表中的所有類別樣式名稱。 例如,您無法在位於相同入口網站網頁上的不同 Portlet 中,使用兩個所提供的佈景主題 (blue.uitheme 及 green.uitheme 檔)。 這兩個佈景主題共用一般 HTML 範本,因此使用相同的樣式表類別名稱,而這會導致衝突。
可能必須針對其他基本頁面以及樣式表來變更這些類別樣式名稱。
您可以在 Web 應用程式中,套用分頁建置器使用的按鈕樣式。 .uitheme 檔可以有多個以 Button_ActionRole_ 為開頭的元素,例如,Button_ActionRole_Submit。 這些元素會指定 CSS 類別的名稱。 您可以使用這些元素來套用不同的按鈕樣式。 預設角色為 Default。 blue.uitheme 檔具有一個角色類別:Button_ActionRole_Default = wpfBlueButton。
IBM WebSphere Portlet Factory 的「服務導向架構 (SOA)」定義存取後端系統資料及服務的服務提供者模型。
SOA 還定義提供前端系統 Web 使用者介面的服務消費者或呈現模型。 WebSphere Portlet Factory 會自動化這些層及啟用各層間鬆散連結所需之構件的產生程序。
完全將各層獨立與一組 SOA 特定的 WebSphere Portlet Factory 特性結合一起,可讓您切斷與後端存取 UI 實作及測試的連結,並簡化 SOA 開發及發佈。
WebSphere Portlet Factory 對「服務導向架構」之支援特性的目標如下:
IBM WebSphere Portlet Factory 提供服務種類的建置器,可讓您用來建立、測試、使用及記載資料服務。
服務建置器會根據各種資料整合建置器 (例如,「SQL 呼叫」、「SAP 函數呼叫」、「Domino 資料存取」),來從後端資料庫存取資料。
若要執行資料的其他操作或驗證,可以在作業執行期間呼叫 Java 程式碼。
執行期間您可以在下列時機呼叫處理程序:
在每種情況下,您都可以藉由發動事件或者呼叫動作來啟動處理程序。 下面是使用事件的方式:
呼叫兩個事件中的一個,來起始處理程序:operationnamePreExecute 及 operationnamePostExecute。 每個事件都會採用兩個 IXml 引數。 PreExecute 事件引數為 operationInputs,它會保留傳遞給作業的輸入,以及 calledActionInputs,它會在執行輸入欄位值表格中指定的任何轉換後,保留所呼叫之動作的輸入。 PostExecute 引數為 calledActionResults,它會保留所呼叫動作的結果,以及 operationResults,它會在執行結果欄位值表格中指定的任何轉換後,保留作業的結果。
使用「服務導向架構 (SOA)」方式來建置資料驅動的應用程式時,其中一個最大的好處就是:資料服務程式碼與使用該資料的應用程式是完全分開的。
這種分隔形式容許將「服務提供者」模型交換成不同的模型。 使用「服務對映登錄」在服務提供者實作之間切換,而無需編輯任何消費者模型。 例如,自動使用服務的 Stub 實作。 您可以使用下列任一方法,來完成服務提供者的這種交換。
使用「服務對映登錄」檔案,要比以手動或設定檔方式變更「服務消費者」建置器呼叫中的「服務提供者」參照,更有特別的優勢。
在「服務對映登錄」檔案中,有數個可供使用的主要建構。 這些建構分為「選取器」及「對映」種類。 「選取器」提供「服務提供者」應該與其他「服務提供者」進行交換的條件。 「對映」提供取代「服務提供者」模型的名稱。
對映的定義很容易理解。
<ForServiceMatching pattern="_testing"> <ModifyName pattern="_testing" replacement="_production" /> </ForServiceMatching>
在下列檔案中,您可以找到所容許之建構的更多範例:WEB-INF\config\service_mappings\mappings.xml.example
本質上,「服務對映登錄」檔案的運作方式是,首先識別在何種條件下需要將「服務提供者」參照取代或交換為其他「服務提供者」參照,然後提供取代「服務提供者」的模型 ID。
為了開發人員的方便起見,您可以配置「服務對映登錄」檔案,以便在重新產生時期,一律使用 Stub 提供者,而在執行時期,使用實際的「服務提供者」(視現用資料而定)。 若要設定此配置,下列 XML 指示必須存在於「XML 服務對映登錄」檔案中,該檔案儲存在 Web 應用程式專案的 WEB-INF\config\service_mappings 資料夾中。
<ForService name="services/myDataServices" when="regen-time"> <UseStub /> </ForService>
在此情況下,「服務消費者」建置器會將 services/myDataServices 模型參照為「服務提供者」。 在重新產生時期, WebSphere Portlet Factory 會知道如何換出 myDataServices「服務提供者」模型,並使用 myDataServices 模型之「服務定義」建置器呼叫中參照的 Stub 模型。
「選取器」可評估為 true 或 false。 如果存在將選取器的準則評估為 true 的條件,則會使用在選取器內部宣告的對映。
<ForService name="services/myDataServices" when="regen-time"> <UseStub /> </ForService>
ForService 選取器接受稱為 name 的屬性。 如果 name 屬性的值符合「服務消費者」模型中參照之「服務提供者」的模型 ID,則會套用對映。 模型 ID 衍生自「服務提供者」模型的完整路徑及檔名。 「服務提供者」模型的完整路徑及檔名看起來類似下列內容:WEB-INF\models\subfolders\...\filename.model。 模型 ID 會省略開頭的 WEB-INF\models\,以及檔名結尾處的 .model。 它還會將斜線反轉過來。 因此,位於 WEB-INF\models\services\myDataServices.model 之模型的模型 ID 為:services/myDataServices。
另外,還有其他選取器可以在「服務對映登錄」檔案中使用。
<ForAllServices when="regen-time"> <UseStub /> </ForAllServices>在重新產生時期評估為 true,而在執行時期評估為 false。
<ForServiceMatching pattern="_testing"> <ModifyName pattern="_testing" replacement="_production" /> </ForServiceMatching>
假設「服務提供者」模型的命名慣例包括子字串 _testing 及 _production,則此建構會交換模型 ID 包含子字串 _testing 的所有「服務提供者」,並使用子字串 _production 進行取代。 實際的模型並不會變更,但是如果試圖使用 _testing「服務提供者」,則會導致改用相對應的 _production「服務提供者」。
<ForService name="services/myDataServices"> <IfParameterEquals name="mode" value="testing"> <UseService name="services/myDataServices_testing" /> </IfParameterEquals> <IfParameterEquals name="mode" value="production"> <UseService name="services/myDataServices_production" /> </IfParameterEquals> <UseService name="services/myDataServices" /> </ForService>
您可以使用此「服務作業」建置器,將作業輸入及結果轉換為不同的綱目結構。
在名稱直欄中會列出所呼叫作業的輸入欄位。 您可以在值直欄中指定輸入的值。 如果開啟值挑選器,則作業輸入的所有欄位都會列出在引數區段中。 如果兩個結構的欄位名稱不同時,您就可以輕鬆地進行欄位對映。 您也可以指定其他值,來提供給所呼叫的動作。 例如,您的某些欄位中的值可能是寫在程式中的,或來自變數的值。
在名稱直欄中會列出新作業的結果欄位。 您可以在值直欄中指定結果的值。 如果開啟值挑選器,則所呼叫之動作結果的所有欄位都將列在結果區段中。 如果兩個結構的欄位名稱不同時,您就可以輕鬆地進行欄位對映。 您也可以指定其他值,來提供給結果欄位。 例如,您可以從 MethodCall 區段挑選,來呼叫方法,以計算欄位值。
轉換建置器系列提供多種方法,可讓您對服務提供者模型中分送的資料進行操作。
一般而言,您可以將轉換建置器新增至服務提供者模型,將其與現有的資料服務相關聯,新增「服務作業」建置器以進行轉換作業,以及將轉換作業顯示為提供者模型中的作業。已新增的轉換作業是您從服務消費者呼叫的作業。
因為每一個轉換建置器本身都會建立新的資料服務作業,並覆蓋目標作業,所以您可以使用此方式將多個轉換建置器鏈結在一起。例如,使用此鏈結,您可以呼叫單一服務作業,讓來自資料服務作業的結果既由「轉換過濾器」建置器進行過濾,又由「轉換排序」建置器進行排序。
您可以使用一系列轉換建置器,修改提供給現有資料服務作業的輸入。
下列步驟使用「Web 服務呼叫」建置器,作為模型中資料服務的範例。該程序適用於任何資料服務提供者建置器。
當呼叫服務作業時,該作業會呼叫轉換對映。轉換對映會轉換提供給服務作業的輸入。輸入會轉換為「Web 服務呼叫」所預期的輸入結構。轉換對映會呼叫「Web 服務呼叫」,並向其傳遞已轉換的輸入資料。此時會傳回來自「Web 服務呼叫」作業的結果。服務作業會轉換提供給「Web 服務呼叫」的輸入,並傳回來自「Web 服務呼叫」未修改的結果資料。
IBM WebSphere Portlet Factory Designer 可讓您呼叫 Web 服務。
您可以透過將「Web 服務呼叫」建置器新增至您的模型,來存取 Web 服務,並可以使用其他建置器呼叫,來顯示服務所傳回的資料或與其互動。 下列是存取 Web 服務的一般步驟。
您可以顯現模型中一個以上的方法,作為由 WSDL 文件說明的 SOAP 服務。 在「服務定義」建置器中,啟用產生 WSDL 輸入。 若要取得 WSDL 文件的 URL,請啟用測試支援並執行模型。 測試索引頁面含有 WSDL URL 的鏈結。
您可以透過模型建立 Web 服務。 針對模型中您要顯現為 Web 服務的每個方法,使用「Web 服務啟用」建置器。
找到 Web 服務之後,請將「Web 服務呼叫」建置器新增至模型。
若為 HTTP 服務 (Get 或 Post),請將「REST 服務呼叫」建置器新增至模型。
如果您呼叫的服務以 XML 結構作為輸入,則「Web 服務呼叫」建置器會將綱目新增至模型,以說明該 XML 結構。
若要新增 Web 服務呼叫,請執行下列步驟:
現在,您可以呼叫服務。
取得服務 WSDL 文件 URL 後,您可以將服務呼叫新增至 IBM WebSphere Portlet Factory Designer 中的模型。
在「Web 服務呼叫」建置器的建置器呼叫編輯器中,指定服務的 WSDL 文件 URL。 建置器呼叫編輯器就會依據 WSDL 文件中包含的資訊,顯示輸入欄位。 請在服務中選取一個方法,並指定該方法的輸入值。
「Web 服務呼叫」建置器還可讓您指定任何必要的基本權限,並配置服務呼叫的其他方面,例如記載輸入及輸出,以及對建置器呼叫本身的個別輸入建立設定檔。
如果模型中具有「Web 服務呼叫」建置器,您就可以透過呼叫該「Web 服務呼叫」建置器新增至模型的 serviceCallName_invoke() 方法,來呼叫指定的服務。 serviceCallName_reply 變數會儲存服務呼叫的輸出。
使用「Web 服務呼叫」建置器將 Web 服務新增至模型之後,您就可以起始呼叫 Web 服務。
webAppAccess.callMethod("ServiceCallName.invoke");
serviceCallName_reply 變數會儲存服務呼叫的輸出。 如果服務傳回 XML,則「Web 服務呼叫」建置器還會新增定義服務結果的綱目。
您可以使用多種方式,建立複合 Web 服務。
下列步驟詳細地說明了該處理程序。
您可以將模型中的方法顯現為 Web 服務,來建立 Web 服務。
在您的模型中使用「服務定義」及「服務作業」建置器。「服務定義」建置器可以建立具有一或多個作業的服務。 在該建置器中,您可以讓服務可用於 WSDL 及 SOAP 的其他應用程式。如果其他模型包含「服務消費者」建置器,則可以在其他模型中呼叫「服務定義」建置器所建立的資料服務。
使用「服務作業」建置器,可以將特定服務新增至利用「服務定義」建置器建立的服務。
如果您的方法採用 XML 輸入 (複式類型的輸入),則需要建立一個綱目,來定義方法預期作為輸入接收的結構。 此綱目會併入到產生的 WSDL 文件中,並會供呼叫您的服務的其他開發人員,用來將您的服務 XML 輸入結構化。
您可以將 Web 服務顯現為管理應用程式之伺服器的送入 SOAP 要求,或本端模型中的服務呼叫。
如果要顯現為 Web 服務的方法採用一個以上的 XML 引數,或傳回 XML 結構,則您需要建立綱目以說明引數及傳回類型的結構,然後將「綱目」建置器呼叫新增至模型,以將綱目新增至模型。
「綱目」建置器只接受「XML 綱目 2001 XSD」,該綱目可以使用協力廠商工具 (如 "XML Spy") 來建立。 此外,「簡式綱目產生器」建置器也會從如下所示的簡式 XML 將綱目建置到模型中。
例如,如果方法採用具有下列結構的 IXml 引數:
<customers> <customer> <name></name> <id></id> </customer> ... </customers>
則相對應的綱目為:
<?xml version="1.0" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.acme.com" xmlns="http://www.acme.com"> <xsd:element name="customers"> <xsd:complexType> <xsd:sequence> <xsd:element name="customer" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="name" type="xsd:string" /> <xsd:element name="id" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
此綱目需要開發人員呼叫此服務,來傳遞至少包含一個 <customer /> 元素的 <customers /> 結構。
您可以在公共網站上或在公用或私密登錄中,找到要呼叫之 Web 服務的 WSDL 文件。
您可以使用相關的 WSDL 文件來配置「Web 服務呼叫」建置器,以呼叫這些 Web 服務。
xmethods.com (或 xmethods.org) 網站會不斷更新可用服務的清單。 此網站會提供呼叫網站上所列服務需要的所有資訊 (包括 WSDL 文件)。
已發佈至公開「通用描述、探索與整合 (UDDI)」通訊協定登錄的大部分服務 (例如,uddi.xml.org) 具有關聯的 WSDL 文件。 公開 UDDI 登錄也由 IBM、Microsoft 及其他公司管理。 私密 UDDI 登錄可以在您自己的組織內或事業夥伴組織內管理。
IBM WebSphere Portlet Factory 文件假設 Web 服務具有 WSDL 文件。 如果您要呼叫的 Web 服務沒有 WSDL 說明文件,則可以使用類似的說明步驟。 然而,您需要瞭解服務的輸入,以便您可以配置服務呼叫,來傳遞適當的輸入。
IBM WebSphere Portlet Factory 提供從高階到低階的各種資料庫工具。
這些工具可讓您連接到資料庫並且與資料庫互動。 對於工具功能方面的說明如下:
提供已在配送的 IBM WebSphere Application Server Community Edition (WAS CE) 上預先配置的範例資料來源及資料庫。 您可以在專屬的 WebSphere Application Server Community Edition 上或您的 IBM WebSphere Application Server 伺服器上,配置此資料庫及資料來源。
您可以使用「SQL 呼叫」建置器來使用 SQL 陳述式。
「SQL 呼叫」建置器提供重新撰寫 SQL 程式碼的智慧型替代方案。 您可以使用此建置器的「資料庫瀏覽器」特性,來建置 SQL 陳述式。
SQL 建置器可用於實作資料庫作業。
SQL 建置器可實作存取資料來源的 JNDI 型方法,並支援與本端及遠端資料來源的連線
SQL 建置器還支援產生資料庫相關伺服器統計資料及記載。 這些統計資料為您提供分析資料庫效能問題的方法。 記載資訊可讓您維護資料庫作業的審核追蹤,如資料庫變更及確定。 SQL 建置器包括:
轉換陳述式結果:
此建置器還提供設定,容許透過方法驅動的轉換,對直欄進行特殊處理。 例如,您可以使用此特性,將輸出參數轉換為記錄集。
除了 SQL 組合之外,「SQL 陳述式」建置器還提供方法,讓您將自訂轉換方法套用至 ResultSet 中的直欄。 這可讓您以逐欄方式,控制傳回之資料的 XML 格式。 如果 ResultSet 包含複式 JDBC 直欄類型,或您要對 ResutlSet 套用其他格式,就可能需要執行此動作。
針對資料庫執行 SQL 陳述式時,您可以追蹤模型中與陳述式相關的資料庫事件,還可以產生與陳述式執行相關的統計資料及日誌。 這些選項可讓您評定效能,並保留陳述式用途的審核追蹤。
如果 SQL 陳述式傳回資料,則您可以使用「資料頁」建置器進行顯示。
SQL 建置器設計為統一運作。 例如,您可以將「資料來源」建置器與「陳述式」建置器組合搭配,以在各種資料來源上執行相同的查詢。 或者,也可以將單一 XML 轉換套用至各種結果集。
projectname.war\WEB-INF\logs\event.log,並且伺服器統計資料儲存在這裡:
projectname.war\WEB-INF\logs\serverStats.txt
cluster.properties 檔案的下列內容可以置換此預設設定:bowstreet.builder.enableGlobalSqlBuilderServerStatistics 及 bowstreet.builder.enableGlobalSqlBuilderStatementLogging。 設為 true(預設)時,所有 SQL 建置器均會建立伺服器統計資料及診斷記載訊息。 設為 false 時,個別 SQL 建置器統計資料及記載輸入會生效。 這兩個內容是獨立的。 serverStats.txt 一律由 Factory 撰寫。 預設更新設定時間是 5 分鐘,因此您必須等一會,才能看到執行模型後,記載的任何 SQL 統計資料。
您可以使用數種方式來建立與應用程式伺服器上安裝及執行之 JNDI 資料來源的連線。
「SQL 交易」建置器可以將模型中的其他 SQL 建置器鏈結到一起,以建立交易序列。
編製好查詢並提供轉換資訊之後,就可以建置整個交易。 此建置器可以建立短期或長期 SQL 交易。 這樣的交易可以識別 SQL 陳述式要執行的資料來源,以及要在 ResultSet 套用的轉換。 針對資料庫執行 SQL 陳述式時,您可以追蹤模型中與陳述式相關的資料庫事件,還可以產生與陳述式執行相關的統計資料及日誌。 這些選項可讓您評定效能,並保留陳述式用途的審核追蹤。 如果 SQL 陳述式傳回資料,則您可以使用「資料頁」建置器進行顯示。
「快取控制項」建置器是您用來快取資料庫查詢結果的工具。
此類型的快取適合於變更不太頻繁的資料 (每個小時變更一次) 及對許多使用者都相同的資料。 可以從快取獲得好處的典型資料範例,是由 HR 部門群組存取的員工資料。
交易是資料庫相關活動的組合,它會以顯示查詢從資料庫傳回的資料作為終結。
交易管理的關鍵是「SQL 交易」建置器。 此建置器可以與其他 SQL 建置器一起使用,來建立短期或長期 SQL 交易。 使用此建置器,您可以建立一系列可供執行的已備妥陳述式或可呼叫交易。
通常,您會將交易的結果送入顯示機制,以檢視結果。 WebSphere Portlet Factory 有提供數個顯示選項,其中功能最強的是「資料頁」建置器。 此建置器可以自動建立表單來顯示資料,及/或提示使用者輸入資料。
「資料頁」建置器會參照綱目 (可能是由「SQL 轉換至 XML 綱目」建置器建立) 或與綱目類型相關的變數,來決定要顯示的表單欄位。 「資料頁」建置器還可以依據綱目 及相關變數定義的元素類型,來建立輸入表單。
使用「SQL 呼叫」建置器來建立資料庫連線及擷取資料。
使用此方法,可以將基本資料庫連線功能新增至模型。
此建置器會提供低階連線功能,且其功能會納入「關係資料庫模型」精靈及「SQL 呼叫」建置器中。 此建置器還提供許多其他配置輸入。 您可以使用其他的建置器輸入來完成下列進階連線作業:
Oracle 儲存程序會傳回 REF_CURSOR 物件,透過此物件,IBM WebSphere Portlet Factory 建置器可以使用儲存程序的結果。
若要強制轉型 Oracle 儲存程序的輸出參數,請遵循下列步驟:
與「SQL 呼叫」建置器相比,「SQL 陳述式」建置器提供更多的基本功能。 「SQL 陳述式」建置器是設計來使用可供執行的已備妥或可呼叫 SQL 陳述式。
請遵循下列步驟,以實作資料庫交易。
使用「快取控制項」建置器來設定對資料庫查詢的快取。
「SQL 陳述式」建置器提供設定,容許透過方法驅動的轉換,對直欄進行特殊處理。 例如,您可以使用此特性,將輸出參數轉換為記錄集。
模型可以使用事件來設陷及處理 Web 應用程式或小組件中不同類型的事件。
所有模型都支援下列預先定義的系統事件:
若要處理這些事件的任何一個,請將「事件處理常式」建置器新增至模型,並指定當發生事件時要執行的動作。
當使用者與應用程式的 HTML 控制項互動時,您可以使用「HTML 事件動作」建置器來處理那些事件。 此建置器會監視指定的 HTML 控制項 (其他建置器新增至頁面的控制項),並在指定事件發生時執行動作。 例如,若要在使用者按一下鏈結時提交表單,請使用「HTML 事件動作」建置器呼叫。