• 沒有找到結果。

第四章 系統設計

4.5 網路應用程式設計

當資訊請求端使用者建立任務之後,BIMFeeD 會發出 email 通知給在任務中 被指定的資訊回饋端使用者,接收到通知的使用者可透過 email 中的超連結連至 模式來進行開發,Play Framework 也不例外。

MVC 模式(Model-View-Controller)最早是由 Reenskaug (1979)提出,是一種軟 體架構的設計模式,其將軟體系統分為模型(model)、檢視(view)和控制器(controller)

Yang and Zhang (2006)在設計基於 IFC 的建築物件資訊系統時,同樣採用 MVC 模式來設計其網頁伺服器系統,其中網頁伺服器會先辨別 HTTP request,並轉送至 該 URI 路徑所對應的控制器,控制器負責處理對於物件資訊的請求(request),並操 控模型以取得相關資料,最後則產生相應的檢視,即呈現具備物件資訊的使用者 介面於網頁瀏覽器。

76

圖 14:MVC 模式的運作方式

BIMFeeD 的網頁伺服器和上述研究的運作流程相似,因此接著以路由(routing)、

控制器、模型和檢視的順序分別說明:

 路由

早期的網頁伺服器大多直接對應檔案的目錄結構,然而大部分採用 MVC 模 式的 web 應用程式框架皆具備自有的路由功能,且幾乎都採用 RESTful 設 計架構,即開發者可指定任意的 URL 位址與任意的控制器對應,而檢視則 主要透過樣板系統來產生,如此可獲得極高的設計彈性。因此,當資訊回 饋端使用者連接 BIMFeeD 網頁伺服器時,Play Framework 會先辨別 HTTP request 之 HTTP 方法和 URL 位址,並呼叫對應的控制器動作(action)或方法 (method)。BIMFeeD 的路由設計如表 4 所示。

表 4:BIMFeeD 路由設計 HTTP

方法 URL 位址 控制器方法

GET / controllers.Application.index()

GET /lite/images/tasks/:file_name controllers.Application.getImage(file_name: String) GET /lite/:taskID controllers.Application.getTaskLite(taskID: String) POST /lite/:taskID controllers.Application.setTaskLite(taskID: String,

recipients: String, modelManagerEmail: String)

77

 控制器

Play Framework 的 控 制 器 必 須 是 一 個 命 名 空 間 為 controllers 、 繼 承 自 Controller 類別的 Java 子類別,根據表 4 的設計,當資訊回饋端使用者在瀏 覽器網址列鍵入/lite/images/tasks/:file_name 的 URL 位址時,表示 HTTP request 為 GET 方法,故路由系統會將此 HTTP request 對應到控制器的靜態 (static)方法,即 Application 類別的 getImage 方法,其中:file_name 代表一個 型別為 String 的控制器方法引數,此控制器主要負責呈現模型的截圖。

 模型

Play Framework 的模型必須是一個命名空間為 models 的 Java 類別,此類別 負責處理控制器所轉發的資料處理要求,例如:當 URL 位址為/lite/:taskID 的 GET 方法被執行時,Application 控制器會將 taskID 這個變數傳送給 getTaskLite 靜態方法,而在此靜態方法中必須呼叫對應的模型類別,透過 該模型類別的方法來取得所需的資料(即請求資訊),因此模型類別的方法主 要負責向 Redis 資料庫進行 CRUD 操作,並將資料處理結果回傳至控制器,

再由控制器產生(render)一個 HTML 頁面的檢視,此頁面包含任務資訊、模 型截圖、網頁操作模組等,以傳送至瀏覽器供資訊回饋端使用者觀看或操 作,此時 HTTP 狀態代碼也一同被回傳至客戶端。

 檢視

Play Framework 的檢視是一個基於 HTML 的樣板系統,當控制器透過模型 取得所需資料後,將所取得的資料或整個模型類別傳送至樣板系統,則樣 板系統會產生相應的 HTML 頁面,伺服器再將此頁面傳送至客戶端瀏覽器 呈現,例如:當資訊回饋端使用者在網頁操作模組提供模型修改建議時,

其會送出一個 HTML 的表單(form),此時 URL 位址為/lite/:taskID 的 POST 方法會被執行,故 Application 控制器的 setTaskLite 靜態方法會被呼叫,在

78 在全生命週期的應用本來就有需要整合不同的領域知識(domain knowledge)、使用 工具和工作流程(workflow),以下用條列的方式來補充十個可讓 BIMFeeD 更加健 全的專業版功能需求:

 專案管理系統之整合

因為在生命週期中會使用許多 BIM 工具,包含設計工具、分析工具、規範 檢核工具等,Singh et al. (2011)提出以模型庫(BIM server)作為多領域 (multidisciplinary)協同作業平台的理論架構,從模型管理、設計審查、資料 安全、模型庫建置環境等不同層面來分析協同作業平台的技術需求。由此 可見,專案管理系統對於 BIM 協同作業而言是基本而必要的(essential),但 專案管理系統涉及的技術層面和研究議題太廣泛,上述研究也僅是以需求 分析的觀點來提出理論架構,因此 BIMFeeD 若能站在巨人的肩膀上,以現 有的商用軟體或學術研究進行整合,或許也是可行的出路。商用軟體如 Bentley 的 ProjectWise,其自稱為「工程資訊管理和專案合作軟體」;學術 研究如郭榮欽 et al. (2013)的「BIM 工程實作雲端服務平台」,其利用 VDI 技術將協同作業平台在雲端環境佈署,將是未來的趨勢。以下九個功能需 求亦必須以專案管理系統為基礎,始能達到較佳的協同作業效率。