李健輝
(埃森哲(中國)有限公司 上海市 200072)
(1)受理負責人在接受終端用戶的呼叫時,利用本系統的報價注冊功能制作概算報價(可以輸出概算報價單)。
(2)在上流的PILOT系統中注冊對CE的作業做指示處理。
(3)在FITS-CE系統中,從CE(負責修理的人)處登記出差、現場作業的各種時間和。
(4)在估算實績系統中提取夜間批處理完成的工作。
(5)通過估算實績系統進行實績登記→實際成績批準→實際成果發送。
1.無償作業:直接在實績批準畫面上承認,并在夜間批量向SAP側發送實績。
2.有償作業:在有償作業實績登記畫面中登記實際成績信息,計算請求金額的費用后進行實際工數和費用的登錄。
(6)在實際工數以及費用完成后,通過實際成績批準畫面,夜間批量向SAP側發送數據進行后續處理。
OracleADF是ApplicationDevelopmentFramework的縮寫,是端對端的程序開發框架,該框架通過虛擬開發設置和基礎架構,能加速構建面向服務的應用程序。例如使用無線網絡和桌面應用程序來檢索、顯示以及更新數據等處理,使開發得到大大的簡化。ADF的框架可以分割視圖層、控制業務邏輯層和數據接口層三者之間的關系,體現了經典的MVC模式的靈魂。如圖1所示。
1.3.1 Business Service業務服務層
包括ADF底層接口層(ADFApplicationModule),業務數據訪問層(DataAccess)和業務持久層(PersistentBusinessObject)。創建的步驟是先創建和定義Entity對象(EntityObject),接著創建和定義View對象(ViewObject),之后是創建和定義ADF底層接口層。Entity對象是指對象數據庫中所有的表或對象關聯表結合后的View視圖,View對象是根據Entity對象來創建的,它主要用于數據庫訪問。ADF底層接口層是Business Service業務服務層和中間Model層的接口,其中上述被創建好的View對象需要被定義到ADF底層接口層。通過這樣的定義方式可以進行訪問下述的中間Model層。
1.3.2 Model層
Model層有兩部分(詳細參照圖1),一是ADFDataControl部分,二是ADFBindings部分。ADFDataConrol部分是在上述介紹的ADF底層接口層中被定義好的View對象,ADFBindings部分主要用于綁定。實際的項目開發過程中Model層幾乎沒有開發步驟。
1.3.3 Controller層
ADF的Controller層有很多擴充,其中最主要是提供了畫面流轉圖,其目的在于簡化整個程序的開發過程。開發過程中開發人員可以直接拖拽需要的各種組件拖入到Controller層內,同時相關的配置信息自動同步更新到畫面流轉圖的相關聯的Strutsconfig配置文件,簡化開發步驟提高效率。另外被開發人員喜愛的組件是DataPage組件,它主要是創建對象畫面并且創建相關聯的DataForwardAction,根據業務邏輯開發人員可以覆寫創建好的DataForwardAction來擴展功能。
1.3.4 View層
視圖View層融入了ORACLE 強有力的UIX 技術,提供了功能強大的開發組件豐富了整個視圖層,根據業務需求能夠更好的選擇相應的組件實現各種功能。其中可視化畫面編輯器Jdeveloper被開發人員大力推崇,可以在使用組件面板中加入客戶業務需要的特色組件,并自由地定義,編輯和更新對象組件的屬性。由于編輯器和代碼的同步性,在編輯屬性的同時與之相關的代碼也會發生變化,大大提高效率減少開發過程的工作。
該系統是使用Fusion Web應用程序的制作和構建的,JDeveloper作為應用程序的開發以及調試工作。JDeveloper提供了若干可用于創建應用程序和項目的模板應用程序。模板應用程序是根據開發各種各樣的應用程序所需的基本技術事先構成。為了構建工作環境,在選擇最符合需求的模板后,根據需要進行追加預定使用的技術的設定。開發流程步驟如圖2所示。

圖1:ADF整體架構圖

圖2:ADF的開發流程步驟

圖3:創建工程Model
如圖3所示。

圖4:創建DataSource

圖5:創建Business Service
如圖4所示。
Business Service是指連接到數據庫,進行數據取得和更新的服務器方面的處理。ADF商務組件是為了創建只在開發者的最小限度的代碼描述中可再使用的數據庫對應的BusinesssService的技術。開發者可以使用向導和視覺編輯器,在不描述Java代碼的情況下創建ADF業務組件服務,還可以擴展核心ADF業務組件類,ADF商務組件服務也使用在應用程序的視圖層的ADF模型。下面做成的列子是數據庫表的Business Service。如圖5所示。
然后就可以可以對作成好的控件進行數據表的字段匹配。
在ViewController按照設計書采用拖拽控件作成JSF畫面。查看自動生成的代碼。如圖6所示。
如圖7所示。
返回到Model,在按鈕事件中編寫Java邏輯代碼實現客戶的各種業務需求。
流程:上流系統數據受理→預定工數/實際工數錄入→批準→數據送入下流系統。
3.1.1 概要描述
使用Oracle的PL/SQL創建業務邏輯的Package,啟動服務器上的JobCenter軟件調用Package實現每天20 點到早上8點每間隔1個小時把上流的相關數據,21條為單位同步工數管理系統的各個業務表中。
3.1.2 難點分析及解決方法
難點在于系統上線后JobCenter啟動時總是發生原因不明的異常。為了解決這個問題,我們從三方面進行了確認,一是確認服務器的環境配置以及JobCenter的參數是否正確。二是確認程序的性能,業務邏輯是從上流系統抽取對象數據更新到本系統的業務表,前期做壓力測試時更新處理對性能的影響較小,確認連接上流系統的數據庫配置沒有問題后針對上流系統的抽出部分SQL語句以及該當SQL語句的實行計劃進行分析但是結果還是沒有找到原因。三是在上流系統抽出處理的SQL語句附近加輸出日志代碼在來確認生產環境下看抽數據的情況,結果每次抽到第21條數據時就會出錯不能處理了。針對調查出的結果,我們在上流系統抽出處理的SQL語句的抽出條件中加了【ROWNUM < 21】此問題得到解決。但是為什么會發生推測最大的可能就是上流系統的數據庫中有處理對象數據件數的設置,很遺憾我們沒有權限去查看客戶上流系統的服務器,后跟客戶確認了服務器情況客戶說明上流系統數據庫的建立初期時沒有留下資料,客戶方也沒有辦法確認。雖然原因不明但是解決了問題,得到了客戶的高度好評。

圖6:創建JSF畫面
3.2.1 概要描述
需要錄入信息多,被錄入的信息來做工數以及費用的算出的邏輯處理很復雜,被錄入的信息組合大約3000種情況。需要錄入的信息如下。
(1)關聯的作業登錄碼信息錄入;
(2)客戶信息自動反映;
(3)發生工數后承擔費用的管理信息自動反映;
(4)擔當工作的個人信息錄入;
(5)相關制品,信息錄入;
(6)工作類型的信息錄入;
(7)使用部件的信息錄入;
(8)發生各種工數信息錄入;
(9)發生各種費用信息錄入。

圖7:DB數據反映到關聯的畫面的流程圖

圖8:DB ADF框架問題
3.2.2 難點分析及解決方法
由于需要輸入的信息很多,利用JSF開發對象功能畫面簡化了拖拽控件的方式節省了很多時間。這一點得到了客戶的很高的認可。本環節的問題在于ADF框架的問題導致發生系統障害。畫面的項目輸入值后放置30秒左右被輸入的值會變成【0】,并且從可輸入的狀態變成不能輸入的狀態。詳細如圖8所示。
因為這個現象是偶發的,最初雖然我們做了很多方向的調查但是不知道發生的原因。為了再現這個現象重復操作大約用了3天時間才得到一些方向,推測是ADF框架發生數據庫的瞬斷并且自動清除緩存信息,再次自動進行了數據庫的再連接、SQL語句的自動再執行處理導致畫面數據發生了變化。通過客戶去咨詢了OracleADF的技術支持,OracleADF技術部門的擔當者回復他們目前沒有類似的例子且由于客戶的信息安全原因不能提供相應的程序給OracleADF相關的技術部門做調查,所以需要自己調查怎么解決問題。另外這樣的現象是偶發的且發生的時間不固定難度很高,所以推測最大的原因應該是ADF的某些對象控件的有特殊的設定而沒有去調查后臺的數據庫相關的設定。后來把控件的相關屬性做了調查,發現List一覽控件有個【受動化】的屬性沒有被設置上。嘗試著設置好【受動化】的屬性并測試了沒有在發生控件的值和狀態變化。這個問題是在沒有OracleADF技術支持的情況自發解決的,雖然用了很長時間但是得到了客戶的認可。
3.3.1 為已發生的工數以及費用做批準處理
查詢出需要得到承認的已發生的工數以及費用的對象數據做批準/取消批準的處理。還可以對象數據由于特殊原因不需要被承認的處理,此外還可以查看對象數據的相關的信息。
3.3.2 批準者的基準
在實現本機能時,不需要任何前臺的處理,后臺各種邏輯判斷。畫圖雖然看上去很簡單,其實非常的難。特別利用Oracle技術的階層查詢SQL語句。如表1所示。

表1
通過上述3.2到3.3介紹的工數以及各種費用會被輸出到下流的系統中,特別是SAP的ERP系統的結算費用的模塊。如錯誤錄入信息時,需要聯動各個部門聯絡手動改數據再次輸出到下層系統或者總務部門修改賬票的數據。
整個系統由多個層級結構的虛擬網站構成,每個站點可單獨按用戶或其角色進行訪問授權。在單個站點內部,存儲信息的文檔庫和列表(如項目文檔庫,聯系人列表)也可以在庫/列表一級,文件夾一級和單個文檔/條目一級按用戶或角色進行授權。各級管理員可通過定義角色或共享已定義的角色來方便的進行授權設置。
系統支持多種用戶認證機制,LDAP,和自帶的用戶認證機制;可采用HTTPS(The secure hypertext transfer protocol)來傳輸加密的用戶登錄信息,加密存儲用戶的信息。并且加密后的密碼存儲在上層系統中。
基于系統安全訪問控制,我們對訪問用戶的賬戶類型進行分類管理。針對內部用戶我們通過采用雙因素的身份驗證方式,保證系統訪問安全。
該系統架構能夠提供7*24小時的高可靠性。在該種部署模式中,每臺服務器(Windows Server,Oracle均通過負載均衡或群集方式排出了單點故障可能。此外,Oracle也提供了完善的數據備份/恢復工具幫助用戶快速備份/恢復數據。
系統平臺的管理工作全部集中在一個單獨的管理中心站點上,用戶界面完全基于Web。管理員可通過遠程方便的完成對系統的管理。服務器提供了用戶訪問統計,搜索統計等的數據分析功能,以圖表或文件方式幫助管理員了解門戶日常使用情況。而且也提供了完善的日志功能,通過對日志的分析,可以獲得更詳細的分析報表。
OracleADF框架減少代碼的開發,編程者只需要處理業務邏輯問題。使用起來也很方便。但是同時也存在著一些問題,只能用提供的標準畫面不能自主地改變。會使用本框架的開發者少,意味著未來可能會消失。希望以后的開發框架也能這么使用方便,能節省很多時間。本系統上線后,得到了客戶的好評。