反饋已提交

網絡繁忙

部署集成介紹

一、web應用的概念

  1. 當您透過本機設計器開啟決策平臺,可以看到決策平臺的URL是以 http://localhost:8075/webroot/decision/ 開頭的,如下圖1所示。如果您將這個連結分享給其他人,他們是無法查看你本地的決策平臺的。如果您關閉了設計器,然後再次訪問這個URL,也是無法看到決策平臺的。

  2. 在這種情況下,本機的報表工程僅提供了web頁面的素材(即報表),而不是一個真正的web應用,因為你無法隨時隨地透過web來訪問這些報表。

  3. 如果您訪問線上demo(本質上也是一個決策平臺),會發現URL也是以  http://twdemo11.finereport.com/webroot/decision開頭的,如下圖2所示。如果其他人在瀏覽器輸入這個連結,也可以訪問線上demo。

  4. 線上demo是一個web應用,因為人們可以隨時隨地透過web來訪問它。

  5. 本地報表工程和線上demo的內容都是基於FineReport製作的,他們唯一的區別在於,線上demo透過一個web伺服器,將報表工程對映成一個可以透過web訪問的URL。這個將本地工程轉變為web應用的過程稱為“部署”。

二、部署的原理

部署的操作步驟將在本節的其他文章中進行具體介紹。我們建議使用的web伺服器包括Tomcat, WebLogic 和 Jboss。本文重點介紹為什麼部署可以將一個本地的報表工程轉變為web應用。

1
已經部署的報表工程如何工作。
  1. ①使用者在瀏覽器中輸入一個URL。假設這個URL是請求查看報表工程中的某張報表。

  2. ②web伺服器接收來自瀏覽器的請求,然後對於請求的內容進行判斷。由於報表涉及到資料庫取數,並且會帶有查詢、聯動等動態效果,因此報表本質上是一種“動態資源”。而web伺服器無法直接處理並傳回動態資源(但可以直接處理並傳回“靜態資源”),所以web伺服器將請求轉發給內部的Servlet(Server Applet)容器,讓容器中的Servlet處理動態資源。

  3. ③-⑤容器中的Servlet即是FineReport自主研發的一系列JAR包,JAR包處理了生成報表頁面所需的一系列操作,包括向資料庫取數、生成參數來實現查詢、生成圖表來展示資料等等。

  4. ⑥Servlet處理完請求後,將可查看的報表頁面傳回給Servlet容器。

  5. ⑦Servlet容器將可查看的報表頁面傳回給瀏覽器,使用者最終得以查看報表。

1.png

2
工作步驟重點說明。
  1. web伺服器(包括其中的Sevlet容器)負責接收使用者的請求(即接收URL)和回覆使用者的請求(即展示報表)。

  2. FineReport負責處理來著使用者的請求。具體而言,它根據報表開發者設計的範本(範本本質上是儲存了報表的邏輯),將報表邏輯轉化為可以讓使用者查看的報表頁面。

3
web伺服器和FineReport的關係。
  1. 事實上,FineReport內建了一個Tomcat,如果你開啟FineReport的安裝資料夾,會發現一個叫server的資料夾,這裡面存放了內建Tomcat的配置檔案,這個內建的Tomcat可以讓你在本地透過 localhost:8075 起頭的URL來預覽每一張報表。

  2. 但是這個內建的Tomcat無法讓其他人透過自己的裝置訪問本地的報表工程,你需要尋找一臺伺服器(這裡的伺服器是硬體概念上的伺服器,比如一個Linux伺服器或者是你的PC)來配置一個web伺服器(這裡的伺服器是軟體概念上的伺服器,比如Tomcat),然後將報表工程中的檔案放入web伺服器中,當這個web伺服器開始工作,報表工程就成為了一個真正意義上的web應用。當然如果你已經有了一個web伺服器,可以將報表工程中的檔案直接放入這個web伺服器。

  3. 這裡我們提到了兩種部署的方法,一種是從0到1配置一個web伺服器,這種部署方式稱為獨立部署;另一種是將報表工程中的檔案放入一個已有的web伺服器,這種部署方式稱為嵌入式部署。你可以根據實際的情況選擇部署方式。

三、整合

1
整合的背景。
  1. FineReport部署成一個web應用後,使用者需要透過帳號名和密碼登入決策平臺。但是在企業中,往往有多個業務系統,比如CRM、OA和MES,如果進入每個系統都需要使用者重複輸入使用者名稱和密碼,會使得操作十分繁瑣。

  2. 整合的目的就是讓各個業務系統共用一套帳號系統,當用戶登入其中一個系統後,只要登入狀態沒有過期,就可以直接訪問其他系統,無需重複進行登入。因此,整合就是透過單點登入技術實現的。

2
單點登入。
  1. 單點登入可以基於多種協議實現,比如基於HTTP,oAuth和CAS。FineReport基於HTTP開發了一套登入登出API,可以透過修改已有系統的前端程式碼來呼叫這套介面,實現簡單的單點登入。相比之下,基於oAuth和CAS實現單點登入更加複雜,但更加有利於帳號系統的安全。oAuth是將登入決策平臺作為一種服務授權給第三方應用(比如其他的業務系統),第三方應用不會獲得帳號系統的內容,但是會獲得登入決策平臺的授權。CAS則是構建了一箇中央帳號認證平臺,讓所有的業務系統透過一個統一的平臺進行使用者認證,但核心還是透過FineReport的登入登出API完成認證。

3
單點登入的原理。
  1. 假設有兩個系統,一個是基於FineReport搭建的報表,另外一個是其他業務系統,下圖展示了使用者只登入一次但可以訪問兩個系統的過程。你需要了解session、token和cookie的基本概念來進一步理解這個過程。

  2. session:如果使用者認證成功,伺服器端會針對這個使用者生成一個session,你可以將session理解為用來儲存使用者登入狀態的資訊。session生成後,伺服器會傳回一個sessionid給瀏覽器,用來尋找對應使用者的session。使用者每次訪問一個系統,都會對token進行驗證,如果驗證token後發現登入未過期,則透過sessionid找到對應使用者的session,此session保留,允許使用者訪問頁面;如果驗證token後發現登入已經過期,則根據sessionid刪除服務端對應使用者的session,下一次使用者訪問系統時,需要重新輸入使用者名稱和密碼進行認證。

  3. token:如果使用者認證成功,伺服器會傳回一個token給瀏覽器,你可以將token理解為加密了的使用者資訊,它記錄了登入過期的時間。token會被瀏覽器儲存在cookie中,當使用者每次訪問一個系統,伺服器會先對token進行解密,然後進行驗證。

  4. cookie:在瀏覽器中儲存token和sessionid。

4.png

附件列表


主題: 部署集成
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉