為 Webform Server 開發 IBM Lotus Forms
轉自:http://www.ibm.com/developerworks/cn/lotus/forms-webform/index.html
IBM Lotus Forms 用於開發和向使用者交付資料驅動的、基於 XML 的電子表單(e-forms)。使用者可以使用 Lotus Forms Viewer 和 Webform. Server 檢視錶單。Lotus Forms Viewer 為表單特性提供全面的支援;Webform. Server 不要求在每個桌面都安裝客戶端應用程式。由於這個原因,Webform. Server 用於廣泛的使用者群體。
由於 Webform. Server 中 XFDL 到 HTML 的轉換,為 Webform. Server 開發 Lotus Forms for Webform. Server 與常規 Lotus Forms 開發實踐在以下方面不同:
- 轉換到 HTML 之後的佈局調整
- 從 Webform. Server 列印
- 表單特性行為差異
- 瀏覽器差異
- Webform. Server 產品限制
在 Lotus Forms 開發過程中,必須小心處理這些差別來滿足使用者的需求和期望。本文總結了在 Webform. Server 開發下處理 Lotus Forms 開發的最佳實踐,討論前面提到的方面。本文使用最新的 Webform. Server 3.5.1。針對 Lotus 的 IBM 軟體服務一直被 Lotus Forms 客戶應用到他們的專案上;這些主題是客戶在使用 Lotus Forms 和 Webform. Server 3.5.1 時最常遇到的問題。
此外,本文還闡述了幫助客戶瞭解 Webform. Server 行為的總體指導原則。
圖 1 展示了 Webform. Server 如何處理表單請求。客戶端瀏覽器將請求提交給表單應用程式(樣例 Webform. Server 應用程式或任意定製應用程式)。然後該應用程式呼叫 Webform. 伺服器轉換程式進行從 XFDL 到 HTML 的轉換。當 XFDL 轉換成 HTML 之後,HTML 被返回到客戶端瀏覽器並重新呈現。
使用者完成表單之後,處理表單提交類似於表單請求,如圖 2 所示。Web 應用程式和客戶端瀏覽器之間的請求都是 HTML 格式的。
從 Webform. Server 3.5 開始便引入了一個 Ajax 呼叫,從而改善 Webform. Server 使用者的體驗。通過引入 Ajax,表單上的一些動態計算不再需要重新整理頁面。JavaScript. 監聽器將行為和事件處理程式轉換成一個 Ajax 呼叫。然後,該呼叫被傳遞給 Webform. 伺服器轉換程式,並由該程式通過 Web 應用程式將 Ajax 響應傳送回到客戶端瀏覽器,如圖 3 所示。
Lotus Forms Viewer 和 Webform. Server 的區別
Webform. Server 的核心功能是將 XFDL 轉換成 HTML。所有 XFDL 項都由一個 HTML 小部件或 Webform. Server 中的 JavaScript. 來呈現。儘管Lotus Viewer 的主要特性在 Webform. Server 中得到支援,但鑑於以下原因還存在一些差別:
- HTML 存在很多難以克服的限制。
- JavaScript. 不能用於複製所有功能。
- Webform. Server 要求使用者具有不間斷的網路連線。
下面的幾個小節描述一些主要的差異。
表單檢視佈局
文字佈局稍微不同。
圖 4 顯示了在 Lotus Forms Viewer 中的佈局。
圖 5 在瀏覽器中顯示在 Webform. Server 中呈現的程式碼。
這種外觀上的差異很難讓這兩種佈局在 Lotus Forms Viewer 和瀏覽器中都呈現得很完美。還有兩個不受 Webform. Server 支援的 XFDL 項:幻燈和 RTF。
表單列印
在 Lotus Forms Viewer 中,輸出直接從 Lotus Forms Viewer 傳輸到列印驅動程式。在 Webform. Server 中,列印通過其他方式來實現。表單首先被轉換成 PDF 檔案或 GIF 影像。然後使用者使用 Adobe® Acrobat 或 Web 瀏覽器將 PDF 檔案或 GIF 影像傳輸到列印驅動程式。這種方法導致檢視結果和實際的列印結果之間出現差距。
限制檢查
在 Webform. Server 中,對使用者輸入的限制檢查不是主動的,而是被動的。在使用者從一個項切換到另一個項之前不會檢查使用者資料。如果資料不匹配格式,將標記為錯誤。這種方法意味著 Webform. Server 和 Lotus Forms Viewer 給使用者帶來不同的體驗。
附件
在 Webform. Server 中,使用者一次僅能將一個檔案附加到表單。但是在 Lotus Forms Viewer 中就不存在這種限制。
行為和計算
在 Webform. Server 中不能夠正確地重複一個行為。即使將一個行為設定為執行一次,它仍然在每次重新整理頁面時執行。現在一些計算被轉換成 Ajax,但並不是所有都轉換。當觸發計算時,使用者有時仍然能夠發現頁面被重新整理。Webform. Server 不支援某些事件模型,比如 popup/combo 中的啟用選項、擊鍵選項和滑鼠懸停選項。有一些事件模型計算可以通過轉換程式屬性配置檔案來啟用或禁用,比如 focused 和 focuseditem。
提交和電子郵件
資料提交的行為在 Webform. Server 中稍有不同。首先,它支援僅將資料傳送到一個 URL。其次,servlet 支援已計算的 URL,但前提是它們提交到執行 Webform. Server 的伺服器。在 portlet 中不支援已計算的 URL。
Webform. Server 不支援電子郵件功能;在工具欄上沒有電子郵件按鈕。即使表單上提供傳送電子郵件的按鈕,該按鈕在瀏覽器中不起作用。如果使用者需要使用電子郵件特性,那麼只能將表單儲存在本地磁碟,然後通過電子郵件傳送它。
XML 資料模型和 XForms
Webform. Server 仍然支援 XML 資料模型,但是不支援針對 XML 模型的 Smart Fill 和為 XML 模型嵌入的 Web 服務呼叫。
Webform. Server 支援所有與 XForms 相關的特性,包括 XForms 事件、模型和 XPath。一個小區別是 XForms 提交導致重新整理表單,但在 Lotus Forms Viewer 中不存在這種情況。
其他區別
其他一些區別包括:
- Webform. Server 支援 XFDL 6.0 及其以後的版本,而 Lotus Forms Viewer 支援 XFDL 5.0 及其以後的版本。
- Webform. Server 在 Microsoft® Internet Explorer 中省略不活動單元格,但在 Mozilla Firefox 中顯示它們。Lotus Forms Viewer 一般都顯示不活動單元格。
- Webform. Server 的 XForms 模式驗證僅限制在伺服器端。
- Webform. Server 不支援拼寫檢查。
當您使用 Webform. Server 開發表單時,必須考慮我們剛才提到的差別,以確保表單能夠正常工作。下面提供一些使用 Webform. Server 開發表單的最佳實踐,這是我們在參與幾個 Lotus Forms 服務專案時總結的成果。這些最佳實踐可劃分成 5 個類別:
由於 HTML 中的元素不像 XFDL 中的元素那樣存在畫素位置,所以當表單被轉換成 HTML 時元素位置就不再完全是原來的畫素位置。在瀏覽器中的佈局與在 Lotus Forms Viewer 和 IBM Lotus Forms Designer 中的 Design 檢視中的佈局稍微不同。
線上瀏覽器的佈局和列印紙張佈局也不同。您不能根據 Lotus Forms Designer 中的 Design 檢視中的位置來建立佈局。這種差別可能增加布局開發所需的時間,因為您必須在瀏覽器中檢查每個調整。
圖 6 展示了在瀏覽器中顯示的文字。
圖 7 在列印 PDF 檔案中顯示了相同的文字。
文字在列印時消失,即使它在瀏覽器中非常完美。解決該問題的辦法是在表單上使用兩個標籤。一個標籤用於線上瀏覽,另一個標籤用於列印。線上瀏覽標籤設定為列印時不可見。清單 1 顯示了樣例程式碼片段。
這種解決辦法能夠讓文字在兩種情況下很好地顯示。這種方法還適用於欄位和其他類似的情況。
在 Webform. Server translator.properties 檔案中有一些屬性用於控制 Webform. Server 的列印行為。表 1 列出了一些常用的列印設定並提供建議設定值。
名稱 | 值 | 最佳實踐 |
---|---|---|
printOutputFormat | png | pdf | pdfa | gif | plugin/png |plugin/gif | 建議使用 PDF,它的影像列印效果比較好。 |
printPDFPageWidthInches | 預設值:7 | 通常設定為大約比目標紙張的尺寸小 0.5 英寸。對於信紙,設定為 8 或 8.3。 |
printPDFPageHeightInches | 預設值:9.5 | 通常設定為大約比目標紙張的尺寸小 0.5 英寸。對於信紙,設定為 10.5 或 10.6。 |
printPageLayout | 預設值:shrinktopage | 在一個方向選項中使用標題。 |
printRadioToCheck | 預設值:true | 如果客戶想要使用無線裝置傳送,那麼需要關閉該選項。 |
printScrollbarsOnFields | 預設值:true | 如果文字超出顯示範圍將被截掉,因此建議將該選項設定為 false。 |
在列印紙張表單時,有時需要調整頁面底部、頂部、左側和右側的邊沿。為了控制頁面邊沿,您可以使用表 1 中的 printPDFPageWidthInches 和 printPDFPageHeightInches 來調整邊沿。建議為表單元素的界線設定一個標準的 x,y 位置,然後在實際的頁面測試之後調整這兩個屬性。
如果頁面內容超出界線並且選擇了 shrink-to-page 選項,有時可能導致頁面變形。如果選擇了 title-in-one-direction 選項,將生成另一個空白頁。這種情況將導致一些頁面元素在頁面界線之外。
有時即使超越界線的元素不可見,但它們會生成一個多餘的空白頁,從而影響到頁面列印。要解決這個問題,必須確保所有頁面元素都在頁面界線之內,包括不可見的元素。
儘管 Webform. Server 支援不同版本的 Firefox 和 Internet Explorer,但瀏覽器支援 HTML 和 CSS 標準的本性導致它們之間出現差異。如果您想要表單在兩個瀏覽器中都完美地呈現,那麼必須小心地處理這一差異。其中一個方面就是下拉選單的行為。圖 8 顯示了在 Firefox 3 中的下拉選單。
圖 9 顯示了在 Internet Explorer 7.0 中的下拉選單。
通過圖 8 和圖 9 可以看到下拉選單的寬度不一樣。在 Internet Explorer 7.0 下拉選單中的項不能完全顯示。確保下拉選單能夠在兩個瀏覽器中都完全顯示的唯一方法是為組合框分配足夠的寬度,從而讓文字能夠在兩個瀏覽器中完全顯示。
即使是相同瀏覽器的不同版本,您也能發現某些行為存在細微的差別。圖 10 顯示了表單在 Internet Explorer 7.0 中的一個例子。
圖 11 顯示了表單在 Internet Explorer 6.0 中的例子。
要避免該問題,一個最佳實踐就是在徵得客戶同意後在專案中只關注一個型別的瀏覽器。選擇 Internet Explorer 7 或 Firefox 3 比選擇 Internet Explorer 6 或 Firefox 2 好,因為前者對 HTML 和 CSS 的支援更好。
Webform. Server 有一些需要特別關注的獨特行為:
頁面重新整理
頁面通常在發生計算或行為之後重新整理。如果每個下拉選項或值填充都需要重新整理頁面,可能會讓使用者感到煩心。有時候,如果計算或 XForms 事件很複雜,瀏覽器端的響應時間就會變慢。沒有配置能夠改變該行為。唯一的解決辦法是讓表單邏輯保持簡單,並將複雜的邏輯從表單作用域移除,比如將其移動到後臺 servlet。
按需頁面載入
全域性表單有一個選項允許您指定在表單開啟時載入哪個頁面。在圖 12 所示的例子中,載入了兩個頁面 PAGE1 和 SummaryPage,但沒有載入其餘的頁面。當表單比較大時,這個選項能夠改善表單的載入速度。在 Webform. Server 中,這個選項能夠幫助您避免載入大表單時出現記憶體不足的錯誤。
不過,當存在跨頁面引用時,該選項還能導致一個問題。如果一個計算引用另一個未載入的頁面上的項,該計算將不能完成,因為所引用的項沒有載入到記憶體中。對於這種情況,需要載入被其他頁面引用的所有頁面。另一個辦法是確保被引用的頁面在頁面導航順序中首先載入。
XForms-ready 效能
有兩個 XForms 事件可用於在表單載入時執行函式:XForms-ready 和 xforms-model-construct-done。在 Webform. Server 中,這兩個事件的響應時間是不一樣的,因為 Webform. Server 以不同的方式呈現它們。表 2 顯示了通過 Webform. Server 呈現表單時的詳細效能測試結果。
響應時間 | xforms-ready | xforms-model-construct-done |
---|---|---|
伺服器響應時間 | 8.44 s | 5.70 s |
第一瀏覽器響應時間 | 13.02 s | 9.85 s |
平均瀏覽器響應時間 | 10.14 s | 7.10 s |
從表 2 中顯示的測試結果可以看到,很明顯 xforms-model-construct-done 的效能更好。在呼叫 xforms-ready 之後,需要再次呼叫 UI 呈現,但在呼叫 xforms-model-construct-done 之後,不需要再次呼叫 UI 呈現。在這裡,建議對任何沒有呼叫 UI 更新的邏輯使用 xforms-model-construct-done,以縮短響應時間。
Webform. Server 產品存在一些已知的但又無法解決的限制。例如:在一個列印 PDF 頁面上,核取方塊的邊框不能正確顯示,並且在實際列印出來的頁面上,核取方塊的顏色是灰色的。這個限制可能會給使用者帶來困惑,如圖 13 所示。
下面是我們從幾個服務專案中學到的技巧:
- 不可能在所有訪問方法(檢視、Webform. Server、列印頁面)中都實現完美的表單,這是由 Webform. Server 的性質決定的。在開始開發之前,應該和客戶達成協議,應該使用哪種訪問方法作為開發和測試的基礎。
- 客戶需要了解在 Webform. Server 下開發表單需要花費更多時間。此外,還要考慮本文介紹的一些技術和注意事項,這讓表單的開發更慢。
- 存在一些產品限制因素,它們導致 Lotus Forms Viewer、線上佈局和列印 PDF 檔案之間出現不一致的情況。客戶需要了解這些差異並接受專案中存在的風險。
總而言之,為 Webform. Server 開發 Lotus Forms 與為 Lotus Forms Viewer 開發表單不同,前者需要付出更多的努力。通過了解 Webform. Server 的本質並應用本文介紹的最佳實踐,您就能夠在開發階段解決潛在的問題,並構建出讓客戶滿意的專案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14751907/viewspace-631574/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Xamarin.Forms-手機串列埠除錯程式開發文件ORM串列埠除錯
- forms元件ORM元件
- webform 最後的黃昏之力WebORM
- HTML 22 - FormsHTMLORM
- Django forms元件DjangoORM元件
- asp.net webform在Linux上部署--jexusASP.NETWebORMLinux
- IBM已開發第一臺獨立量子計算機IBM計算機
- IBM Engineering Workflow Management—軟體協作開發管理平臺IBM
- server-side-events(SSE)開發指南(Node)ServerIDE
- WebForm登入頁面(連線資料庫)WebORM資料庫
- WebForm 頁面ajax 請求後臺頁面 方法WebORM
- 微信網頁授權登入(c# Webform)網頁C#WebORM
- [Django高階之forms元件]DjangoORM元件
- Xamarin.Forms 5.0 來了ORM
- IBM推出AutoAI 為Watson Studio加速AI應用IBMAI
- 架設 Go Module Proxy Server 加速團隊開發GoServer
- @angular/forms 原始碼解析之 ValidatorsAngularORM原始碼
- 【Xamarin.Forms 3】頁面型別ORM型別
- SQL Server Denali開發工具SSDT新功能解讀ZLSQLServer
- Webpack5 - 開發伺服器 webpack-dev-serverWeb伺服器devServer
- Filecoin資訊:Filecoin網路將升級至Lotus v1.2.0版本
- 杜拜政府聯合IBM開發區塊鏈企業登記平臺IBM區塊鏈
- 保險經紀公司達信聯合IBM開發區塊鏈平臺IBM區塊鏈
- /ibm/fanIBM
- IBM HeapAnalyzerIBM
- Xamarin.Forms Shell基礎教程(1)ORM
- Dynamics CRM Performance Issue when CRM Forms OpeningORM
- oracle Forms Builder常用函式 (轉載)OracleORMUI函式
- ASP.NET Web Forms – 事件簡介ASP.NETWebORM事件
- Qt開發Active控制元件:如何使用ActiveQt Server開發大型軟體的主框架(2)QT控制元件Server框架
- IBM:2020年資料洩露平均成本為386萬美元IBM
- 混合雲時代,IBM如何讓資料化繁為簡IBM
- 專為五大科學領域定製,NASA與IBM合作開大語言模型INDUSIBM模型
- IBM knative101演示實驗開源專案IBM
- ASP.NET Web Forms – SortedList 物件簡介ASP.NETWebORM物件
- ASP.NET Web Forms – Hashtable 物件簡介ASP.NETWebORM物件
- ASP.NET Web Forms – ArrayList 物件簡介ASP.NETWebORM物件
- Tap Forms 5 for Mac(資料管理軟體)ORMMac
- ASP.NET Web Forms – 導航簡介ASP.NETWebORM