SpreadJS 用於開發多人協作「在線excel」系統的優勢

2020-12-14 泡泡網

SpreadJS 用於開發多人協作「在線excel」系統的優勢

2020年01月02日 11:30作者:黃頁編輯:黃頁

SpreadJS 開發多人協作「在線excel」系統

主講人:上海佳軟CTO劉立兼

講師簡介:擁有14年研發經驗,6年電商領域的大數據經驗,專注於數據採集/清洗/關聯/分析/可視化與應用方案設計分析,同時也是3款線上數據產品的創始人。

葡萄城公開課回放:https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=68652

分享內容

多人協作在線文檔的概念,最早由Google Docs帶入中國。但實際上,在日常工作中,與團隊的其他人進行協作是一種在常見不過的工作方式。

由於工作分工、工作進展的不同,團隊內部的信息往往需要及時同步,然而伴隨著團隊經營規模的不斷擴大,在線協同、多人協作,以及軟體項目管理等問題將會接踵而至,成為制約企業高效發展的瓶頸。

這些問題,通常表現為:

1.跨部門、地區協作不便

2.過度依賴文件夾共享的形式,不能確保文檔的安全性

3.沒法紀錄和體現職工對文本文檔的意見和評價

4.文檔記錄發生變更時,無法及時通知到相關部門和員工

5.文檔無法在線協同編輯,缺失必要的流程管控

6.多人共同編輯一個文檔,無法留存修改記錄和歷史版本

針對上述問題,目前最佳的解決方案是:使用一款可多人在線協同辦公的軟體或工具。市面上,這類軟體有很多,比如國外的Google Docs、Office365,以及國內的騰訊文檔、石墨文檔、有道雲協作等。

本文將不再過多贅述這類成品軟體,而是深入協同辦公系統的實現原理,從企業IT管理者的角度出發,深入研究多人協作的形式、基礎和難點,分析一款開發工具應具備怎樣的特點,才是實現多人協作「在線excel」系統的關鍵。

多人協作的形式:歷史與發展

多人協作的歷史十分悠久,起源於靜態的多人協作模式,即每個人先完成自己的工作,然後再進行匯總。

靜態的多人協作模式

•遞增式協作

•郵件:你來我往

•論壇:跟帖回復

•獨佔式協作

•文檔傳遞

•微軟VSS

•合併式協作

•SVN

•Git

•diff,patch,merge指令

常見的靜態多人協作方式

從靜態到動態

•靜態協作的比喻

•拼接畫

•積木

•靜態協作的特點

•多版本

•塊操作

•有協作動作

•靜態協作的缺點

•版本碎片化

•缺乏時效性

•協作動作成本高

靜態多人協作的成本,會隨著加入人數和項目的複雜度呈幾何級數的增長。因此,對於企業來說,急需一種無協作動作、唯一版本、版本可控的無協作成本模式,即動態多人協作模式。

動態的多人協作

•動態協作的比喻

•一起畫黑板

•動態協作的特點

•唯一版本

•原子操作

•無協作動作

•動態協作的優點

•版本可控

•實時

•無協作成本

•典型產品

•Office Online

•石墨

•OnlyOffice

多人協作的基礎:原理與架構

任何信息,無論其是什麼展現形式,如果要做到多人實時編輯與展現,只需要實現以下三步而已:

1.操作化

2.可傳輸

3.可還原

舉例說明多人協作的實現方式

操作化

操作化,指任何信息都可以轉換為一組操作的集合。很容易理解,但它仍有不少值得思考的點:

1.分割與組合

·如何保證:信息的所有變化都可以分解為操作的集合?反之,操作如何覆蓋出信息的所有變化?

·分割的顆粒度如何決定?

•粗一點?

•細一點?

•如何兼顧解釋性與擴展性?

2.絕對操作與相對操作

·絕對操作

•針孔印表機的完美世界

•印表機時代的編輯噩夢

·相對操作

•4K電視不是夢

•為什麼數位電視穩定性不如模擬電視

·絕對操作與相對操作比喻:時間與空間的互換

3.使用一款開發工具:SpreadJS,實現操作化的優勢:

·好用的指令集,保證覆蓋信息的全部變化與操作的集合

·經過實踐驗證的顆粒度,完美兼顧解釋性與擴展性平衡

可傳輸

可傳輸,就是指操作有辦法通過網絡傳輸給其他終端。實現動態多人協作,需要考慮以下幾點:

1.傳輸內容

·原始文本

•清晰

•冗餘

·壓縮技術

•邏輯壓縮

•協議壓縮

•手動壓縮

2.網絡協議

·Socket

•TCP

•UDP

·HTTP

·WebSocket

3.QoS(Quality of Service,服務質量)

·快速失敗

·自動回滾

·自動重連

·自動恢復

可還原

可還原,就是指接收到來自網絡的操作消息後,可以在本地完全一致地再次執行該操作。可還原包括了:

1.絕對操作的還原

·控制體積

·合理的提示

2.相對操作的還原

·嚴格的順序性

·從源頭保障順序性

·順序性的補救

3.本地操作的還原

·過濾收到的操作集合

·從源頭細化操作顆粒

·本地保存本地執行

4.無入侵的還原

·定義入侵

·排除入侵

·千人千面

多人協作的難點:亂序與衝突

亂序

亂序的表現形式如下圖,小明在客戶端執行了一系列操作,傳遞到伺服器時發生亂序,導致小花看到了截然不同的信息:

為了解決亂序問題,可以嘗試以下方法:

1. 用性能換取順序正確——基於協議

2. 用性能換取順序正確——基於回執

兩種方法的優缺點

1.基於協議

•優點

·可靠,歷經考驗

·簡單,無需開發

•缺點

·資源開銷高

·必須整套使用

2.基於回執

•優點

·自主可控,按需開發

·資源開銷可控

•缺點

·需要自己投入開發

·應用層邏輯控制使得網絡複雜度向外蔓延

·複雜度帶來維護成本

基於亂序處理方法的總結

網絡不是絕對可靠的,為了實現相對可靠,需要付出一定的代價,企業需要考慮的是:如何衡量所付出的代價與產出成正比。

衝突

比亂序更高級的一種表現形式,存在多向、多維度等問題。

如何避免錯誤的蔓延?

原則:任何一次不一致,都會導致後續的操作基於錯誤的信息進行,從而不斷擴大錯誤,造成無法收拾的結果。因此,不一致是不能被容忍的。

解決辦法:

1.嚴格一致性:獨佔

2.最終一致性:檢查與修復

3.非技術手段:設計與提示

嚴格的一致性

獨佔就是同一時間同一範圍只能由一人操作。

1.範圍(以SpreadJS為例)

1.整個表格,類似VSS

2.工作表

3.單元格範圍

2.排他性

1.獨佔衝突時,必有一方被彈開

2.直到佔有者解開,不然無法佔用

3.佔用前無法操作

4.原理和鎖基本一致

3.優點

1.可以確保嚴格一致性,不會產生多版本的錯誤累積

2.比起修復恢復這類彌補手段,一開始就不出錯的成本最低

3.邏輯清楚簡單,開發維護成本低

4.缺點

1.靜態協作的味道

2.獨佔動作嚴重影響體驗

3.大幅降低協作效率

5.SpreadJS提供的支持

1.鎖定工作表

2.鎖定單元格

最終一致性

基於唯一正確順序,察覺客戶端的錯誤,撤銷錯誤操作後重新執行正確的操作。

1.唯一正確

1.伺服器到達順序

2.協作邊界分流

3.P2P+選舉算法

2.察覺錯誤

1.伺服器回執id

2.伺服器回執操作,MS

3.撤銷錯誤

1.撤銷到錯誤發生前的一步操作的結果

2.利用SpreadJS的撤銷功能

3.利用操作版本快照

4.重新執行

1.操作隊列需保存

2.區分好無感知執行與顯式執行

非技術手段

技術手段追求錯誤0發生,而非技術手段則可以降低錯誤發生的可能性。

1.選中框

1.非常重要但不顯眼

2.人性化的獨佔

3.操作的預期

4.協作感

5.SpreadJS提供高度可自定義的邊框

2.協作設計

1.設計協作區域與合併手段

2.設置權限

3.SpreadJS提供幾乎Excel的所有公式

4.SpreadJS提供了工作表和單元格鎖定功能

3.單向協作

1.區分單向與雙向協作的場景

2.對單向協作儘量放開

3.對雙向協作嚴謹設計

SpreadJS作為實現多人協作「在線excel」系統的巨大優勢是什麼?

首先,可以明確一點:SpreadJS完全可以用作多人協作系統開發的組件。原因在於:

•SpreadJS的產品質量是毋庸置疑的

•SpreadJS在設計之初,便考慮到了多人協作的可能,而除此之外,絕大多數的前端產品都不是為了多人協作而設計的

•多人協作需要中心系統的支持,SpreadJS基於純前端的體系架構可以很容易的嵌入系統開發,而無需過多考慮與原生系統的兼容性,這是常規組件是無法做到的

•要實現多人協作,需要投入一定的開發成本,SpreadJS作為一款開發工具,可以有效幫助開發人員減輕代碼量

多人協作表格的本質:

•Server – Clients 中心系統,類似數值敏感的小型網遊

•任何這類系統都是在體驗和正確性中尋求平衡

多人協作表格的特點:

•表格的數值敏感性高於網遊,數據操作和存儲的挑戰更大

•表格的計算複雜度更高,尤其涉及複雜公式嵌套與全量統計篩選

•Web存在天花板,所以複雜的頁遊並不多見,端遊較多

對SpreadJS這類開發工具/組件的展望與期待

1.SpreadJS 已經可以很好地支持多人協作的最終一致性。如果能支持多人多撤銷隊列,或者撤銷重做自定義,那麼就可以給用戶提供更加易用且多樣化的體驗效果,從此絲般順滑不是夢。

2.SpreadJS的絕大部分功能是支持命令的,這使得操作化變得更簡單。如果SpreadJS能開放命令自定義,便可以讓自主控制顆粒度成為可能,用戶可以針對具體的業務邏輯做出更加精細化的操作轉換,大幅提高協作效率。

3.SpreadJS不僅在數據錄入、數據填報等方面表現出強大的功能,其各類統計分析與圖形化手段也是一個不少,一旦明年的透視表功能上線,使用SpreadJS開發在線協同系統的數據商業價值將更易體現,用戶將體驗到「表格」無限的魅力與威力。

4.表格在多人協作中的數據量增長速度比單人使用時快得多,希望SpreadJS可以支持更大的數據量,尤其是在大數據量情況下仍舊保持操作的性能與體驗。

免費下載試用SpreadJS:https://www.grapecity.com.cn/developer/spreadjs

轉載請註明出處。

相關焦點

  • SpreadJS 純前端表格控制項應用案例:在線問卷系統
    下面,讓我們一起來看看該公司是如何在「在線問卷系統」中應用表格技術,實現「類 Excel 報表設計」(https://www.grapecity.com.cn/developer/spreadjs/scenarios/excel-design)與 Excel 文件導入導出的。
  • 如何實現可多人協作的「在線excel」系統?
    如何實現可多人協作的「在線excel」系統?市面上,這類軟體有很多,比如國外的Google Docs、Office365,以及國內的騰訊文檔、石墨文檔、有道雲協作等。 本文將不再過多贅述這類成品軟體,而是深入協同辦公系統的實現原理,從企業IT管理者的角度出發,深入研究多人協作的形式、基礎和難點,分析一款開發工具應具備怎樣的特點,才是實現多人協作「在線excel」系統的關鍵。
  • SpreadJS 純前端表格控制項應用案例:雨諾訂單管理系統(雨諾OMS)
    由青島雨諾研發的雨諾訂單管理系統,為各醫療零售門店提供了統一、簡單的操作界面,通過打通線上線下平臺,在兩個信息孤島之間搭建通信橋梁,實現了訂單、庫存、財務信息在線上平臺和線下ERP之間自由流轉。下面,讓我們一起來看看青島雨諾是如何在「雨諾訂單管理系統」中應用表格技術,實現「類 Excel 報表設計」(https://www.grapecity.com.cn/developer/spreadjs/scenarios/excel-design)與線下線上數據對接的。一、案例名稱:青島雨諾 – 雨諾訂單管理系統(雨諾OMS)
  • 除了類 Excel, SpreadJS 表格控制項還能為系統開發帶來什麼價值?
    考慮到項目成本與可能逾期的風險,經過多輪技術評估,該項目的研發團隊最終選擇了取代自主研發,並如期完成了項目交付。這位負責人表示,使用他們研發的系統,用戶只需簡單的拖拉拽,便可在線完成各類Excel財務報表和營收分析表的設計工作,並通過可視化界面與資料庫建立映射關係,實現單元格級別的數據綁定。
  • 用它來開發「在線Excel」系統,竟如此簡單!
    除了自行研發外,更加省時省力的方式便是藉助第三方組件,開發個性化的「在線Excel」系統。、與 Excel 高度兼容」的產品特性,高效完成「在線Excel」系統的開發與維護。      SpreadJS 官網:https://www.grapecity.com.cn/developer/spreadjs       「在線Excel」系統開發的難點      團隊對於文檔管理的需求
  • SpreadJS 純前端表格控制項應用案例:表格數據管理平臺
    下面,讓我們一起來看看該公司是如何在「表格數據管理平臺」中應用表格技術,實現「類Excel報表設計」(https://www.grapecity.com.cn/developer/spreadjs/scenarios/excel-design)功能,從而構建出企業個性化行業應用、集成應用和複雜業務報表的。
  • SpreadJS 純前端表格控制項應用案例:貨運代理客戶服務平臺
    下面,讓我們一起來看看德迅(中國)是如何在「貨運代理客戶服務平臺」中應用表格技術,實現「類 Excel報表設計」(https://www.grapecity.com.cn/developer/spreadjs/scenarios/excel-design)功能與業務數據採集、分析和計算的。
  • 【案例分享】在 React 框架中使用 SpreadJS 純前端表格控制項
    本期葡萄城公開課,將由國電聯合動力技術有限公司,資深前端開發工程師——李林慧女士,與大家在線分享「在 React 框架中使用 SpreadJS 純前端表格控制項」的實戰開發經驗。 項目背景:公司採購SpreadJS 純前端表格控制項,其主要應用場景是開發一套完善的日常業務流程管理系統,該系統以部門為單位劃分,每周由各部門填報人員,根據系統運行情況、日常運營數據等在系統中進行填報,後交由部門進行數據匯總,並在移動端/PC端系統頁面進行數據展示。
  • SpreadJS 純前端表格控制項應用案例:風險指標補錄系統
    為滿足上述需求,華融科技推出了其自主研發的風險指標補錄系統。系統統一了管理模板的設計和制定,基於SpreadJS構建了填報模板的設計模塊,允許用戶在線填報表單,並在模板中直接指定指標入庫的位置、數據校驗規則和權限管控。
  • 打破技術壁壘,用SpreadJS 搶佔表格文檔協同編輯系統入市先機
    在線文檔(表格類)軟體產品對比我們以微軟Office Online、Google文檔、WPS雲文檔、有道雲協作、石墨文檔、騰訊文檔等這六款國內外主流在線表格文檔軟體為例,從客戶端支持、文檔類型支持、存儲空間、面向企業級的解決方案、產品優勢及短板這五個維度,深入對比他們的功能差異:客戶端支持
  • Ember.js和Vue.js,哪種框架更適合前端開發?
    Ember.js是一個基於MVVM模型的開源框架,該框架主要用於創建複雜的多頁面應用程式。它最大的特點是:持續推出最新的特性,並不會丟棄任何舊功能。讓我們花幾分鐘總結一下Ember.js的特點:1、Ember.js是適用於複雜結構、多頁應用程式的MVVM模型的開源框架2、Ember.js持續提供最新功能,且不會丟棄任何舊功能3、Ember.js遵循一套非常嚴格的結構框架,不能提供太高的靈活性4、藉助Ember.js完善的控制系統可幫助你與新版本完美集成
  • SpreadJS 全面支持 Angular2,V10.2 版本即將發布
    SpreadJS 純前端表格控制項是基於 HTML5 的 JavaScript 電子表格和網格功能控制項,提供了完備的公式引擎、排序、過濾、輸入控制項、數據可視化、Excel 導入/導出等功能,適用於 .NET、Java 和移動端等各平臺在線編輯類 Excel 功能的表格程序開發。Angular2 是一套完整的前端框架,用於構建移動應用和桌面 Web 應用的開發平臺。
  • OnlyOffice在線協作文檔編輯使用指南
    項目開發中,可能會需要用到在線編輯文檔的功能(比如常用的word、excel),甚至多人協作編輯的功能,經過對比,最終採用了onlyoffice在線協作編輯,下面簡要介紹一下。文檔服務工作原理打開文檔流程用戶通過瀏覽器打開文檔預覽或編輯頁面文檔編輯頁面通過js腳本將文檔編輯請求發送到文檔伺服器文檔編輯頁面向文檔伺服器請求打開文檔編輯
  • 友信智通:集成SpreadJS,構建iWebExcel協同數據填報和在線分析平臺
    友信智通擁有國內領先的ERP系統設計、研發、實施團隊,也是用友網絡金牌供應商之一,曾自主創立了一整套企業級ERP研發及實施體系(YSS),涵蓋企業戰略諮詢、集團級系統項目管控、企業級產品設計方案,為近百家大型企業成功部署了ERP系統。
  • 在線編輯word、excel的軟體
    眾所周知,word 、excel 等辦公軟體每天都在大量被使用,但由於其是比較早期pc應用的成熟產品,對在線編輯支持比較差,大家還是習慣在自己的電腦裡把文檔編輯好,再傳到網絡上,如在異地需要編輯,又得把這個文檔下載到本地進行編輯。
  • 使用SpreadJS 實現 JavaScript 中導入和導出Excel文件
    如果有一款產品,能夠將二者完美融合,將在前端表格數據處理、數據填報、數據可視化、在線文檔等領域大放異彩。SpreadJS,正是這樣一款功能布局與Excel高度類似,無需大量代碼開發和測試即可實現數據展示、前端 Excel 導入導出、圖表面板、數據綁定等業務場景的純前端表格控制項。
  • 前端高效開發必備的 js 庫梳理
    作者: 徐小夕 來源:趣談前端之前有很多人問學好前端需要學習哪些 js 庫, 主流框架應該學 vue 還是 react ? 針對這些問題, 筆者來說說自己的看法和學習總結。比如說你對移動端比較感興趣, 工作中也剛好涉及到一些技術的應用,那麼我可以專門研究移動端相關的技術和框架, 又或者你對企業後臺/中臺產品感興趣, 比較喜歡開發PC端項目, 那麼我們可以專門研究這種類型的js庫或者框架, 接下來筆者也是按照不同前端業務的需求, 來整理一份能快速應用到工作中的js庫, 以提高大家的開發效率。
  • 基於WebGL的在線3D建模與互動腳本開發系統 ThingJS
    GL中的3D框架進行3D開發,界面設計採用HTML5,系統腳本採用 JavaScript。完整的平臺系統包含七大模塊:3D場景搭建、模型操作、模型導入、模型導出、場景渲染、壓縮與解壓、信息存儲與顯示。各模塊獨立又緊密聯繫,核心的核心主要是3D建模與場景搭建、交互控制開發,ThingJS本著加速3D項目開發的原則,做了間接的封裝,擁有自己的平臺特色。
  • 網頁實現Excel在線預覽方案集合
    在WEB項目中經常遇到excel文檔在線預覽的需求,基本的解決思路有以下幾大類:excel文檔轉PDF、excel文檔直接轉html、後臺讀取excel數據返回給前端利用Excel效果的表格插件如(HandsonTable)將數據進行展示、部署微軟Office Online服務(office
  • js讀取Excel報表文件
    進入正文:在實際開發中,經常會遇到導入Excel文件的需求,有的產品人想法更多,想要在前端直接判斷文件內容格式是否正確,必填項是否已填寫 依據HTML5的FileReader,可以使用新的API打開本地文件(參考這篇文章)FileReader.readAsBinaryString(Blob|File)FileReader.readAsText