Fred Wang(http://fredwang.blogspot.com) 2005/07/25
SAP Web Dynpro是一套快速建構的Java Web Application Framework, 在SAP Netweaver Developer Studio的開發環境中提供特有Component-Based的MVC架構 。
不過,網路上鮮少文獻或討論有關使用Web Dynpro開發Web Application完整的軟體工程方法或程序。在SAP出版, Chris Whealy, “Inside Web Dynpro for Java”書中, 第27-31頁僅以五頁的篇幅描述這個程序。對於多數開發者而言,一個新的架構,需要更多的時間,更多的學習資訊協助以了解Web Dynpro如何用在真實的應用專案中。下面是筆者近幾個月開發Web Dynpro專案整理的一些心得筆記,希望對準備學習或使用Web Dynpro的人有所幫助。也歡迎先進給予指正。
需求分析
Web Dynpro開發專案的
分析階段應該與Web Dynpro的技術無關,建議可採用UML的技術來描述系統需求。
架構設計架構設計階段則與系統規模,非功能需求如可靠度,可擴充性等有關,例如: 是否使用異質資料庫,是否分散式處理,效能需求的要求如何,是否採用Design Patterns,採用何種Design Patterns,採用哪些基礎性與平台性的APIs, 例如: Logging , Exception Handling, Authentication,
Authorization, Asynchronous Processing, Scheduling, Configuration, Messaging等。 採用哪應用APIs, 例如 : Workflow, Reporting, Content Management, Transaction等。 另外使否使用JDI, 是否整合SAP Portal, 是否與其他Project互相整合等。
細部設計與實作程序第一 使用者介面設計與系統雛形(Prototyping)1. 根據Activity Diagram中的畫面建立View : 可以一個畫面建立一個View或多個類似的畫面共用一個View
1.1 View中進行畫面設計, 表格, 欄位, 按鈕等
1.2 建立畫面所需Binding的Context nodes and value attributes,並設定UI elements property的binding關係
1.3 若Context nodes或attributes需要跨Views來使用,則要在Component Controller複製相同的若Context nodes或attributes,並用Data Modeler(Component Diagram)建立Context mapping。
1.4 若是共用的View則應增加一些value attributes並bind到特定UI元件的read-only, enabled, visible等欄位, 來控制這些View在不同的狀況下可否輸入,是否顯示等。
2. 建立View間的Navigation關係 : 建立Window, 在Window Diagram建立View的Inbound plug與Outbound plug及連結關係
2.1 若Inbound Plug與Outbound Plug間要傳遞參數, 則兩者都需建立相同名稱的參數
2.2 找出Trigger Outbound Plug的UI元件,建立Event Handler,並指定Outbound Plug
2.3 要注意,畫面除了有進入的Inbound Plug,也應該要有返回的Outbound Plug,因此也要指定一個UI元件來啟動Outbound Plug
2.4 若View為多個功能畫面共用,則在Inbound Plug Method中根據不同的參數或不同的Inbound plug,設定畫面的read-only, enabled, visible (透過value attributes)
3. 使用者進行介面測試 : 完成上面的程序,畫面的Navigation已接近完成,此時可以與使用者進行介面測試,確認畫面樣式與畫面操作流程是否正確。
3.1 此時可以在Context node的supply function中,設定一些測試資料,以利操作過程中雛型的測試。
3.2 完成上面的程序可以提早在此階段與使用者確定規格,避免在開發的後期才更改規格, 造成專案進度更大的影響。
第二 商業功能設計與單元測試1. 完成每個商業功能1.1 畫面顯示前的處理, 在wdDoInit()或onPlugXXX() (Inbound Plug)中的商業處理
1.2 商業功能處理, 每一個會Trigger Event的UI元件,實作這些Event的Event Handler功能
1.3 Context Node的Supply Function,若與Data Model整合可以到後面資料模型設計階段來處理。
2. 這階段,可能有自行開發的程式,採用外界的APIs, 或自訂的公用APIs, 盡量可以讓
程式高度模組化,提高程式的可再用性。
3. 如果使用者前端設計及商業功能設計為不同開發人員,則負責商業功能設計的開發人員需
撰寫單元測試程式進行商業功能的單元測試,一般採用JUnit測試架構。
第三 資料模型設計與整合測試1. 建立Database Tables2. Data Model可以用不同的方式實作2.1 Java Bean : 用EJB or POJOs(DAO design pattern)
2.2 Web Service
2.3 SAP RFC Function
3. 將Data Model Map到View Context Node或Component Controller的Context Node4. 進行整合測試4.1 此時的測試就是包含Data Model, Business Function與UI設計的整合測試。