建設(shè)

項(xiàng)目模式

bim_mode_20180613.png

描述

移動(dòng)應(yīng)用中主要?jiǎng)澐謨深?lèi)角色,側(cè)重點(diǎn)不同沿腰。具體包括:

  • 監(jiān)管人員
    • 可以理解為項(xiàng)目管理人員叔扼,監(jiān)管權(quán)限下有多個(gè)項(xiàng)目的監(jiān)管權(quán)限事哭。
    • 監(jiān)管人員有特定的功能模塊。
    • 針對(duì)不同的項(xiàng)目币励,監(jiān)管人員還有用不同的功能模塊權(quán)限慷蠕。
  • 項(xiàng)目使用人員
    • 具體項(xiàng)目的使用人員。主要針對(duì)其負(fù)責(zé)的項(xiàng)目(或者標(biāo)段)進(jìn)行操作食呻。

項(xiàng)目具體類(lèi)別有包括以下3大類(lèi):

  • 路橋類(lèi)
  • 地鐵類(lèi)
  • 園區(qū)類(lèi)

項(xiàng)目的功能上具體跟項(xiàng)目掛鉤流炕,且部分功能,比如「問(wèn)題上報(bào)」仅胞、「設(shè)計(jì)圖紙」每辟、「現(xiàn)場(chǎng)巡檢」、「建設(shè)資料」要求支持離線操作干旧。

方案

將方案之前渠欺,補(bǔ)充說(shuō)明下移動(dòng)端使用的是MVMCV模式(可以理解成是MVVM模式的變種),簡(jiǎn)單理解就是將View-Model進(jìn)行分解椎眯,將一些邏輯放在controller中挠将。UI布局上使用Tabbar形式,分別表示首頁(yè)编整、功能集聚頁(yè)舔稀、待辦頁(yè)面。

程序在線/離線模式的切換掌测,基于觀察者模式來(lái)實(shí)現(xiàn)内贮。 當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變更的時(shí)候,可以通過(guò)主動(dòng)獲取和推送兩種方式靈活使用汞斧。

項(xiàng)目首頁(yè)模式的切換夜郁,基于狀態(tài)模式來(lái)實(shí)現(xiàn)。 比如監(jiān)管模式下粘勒,點(diǎn)擊地圖上項(xiàng)目詳情竞端,進(jìn)入項(xiàng)目模式;項(xiàng)目模式下返回到首頁(yè)時(shí)進(jìn)入監(jiān)管模式等庙睡。

  • 程序(或者功能)的在線/離線模式

    • 在管理程序的ViewModel事富,監(jiān)聽(tīng)網(wǎng)絡(luò)變更剑勾。變更時(shí)發(fā)通知。
    • 不同用戶(hù)模式下程序在線/離線模式會(huì)根據(jù)網(wǎng)絡(luò)情況進(jìn)行反應(yīng)赵颅。
    • 功能集聚頁(yè)會(huì)額外根據(jù)網(wǎng)絡(luò)變更通知即使調(diào)整功能圖標(biāo)。
    • 其他:比如具體離線功能內(nèi)根據(jù)不同的模式進(jìn)行UI調(diào)整暂刘。
  • 項(xiàng)目首頁(yè)的模式

    • 在首頁(yè)的ViewModel饺谬,定義兩種模式。
      • 監(jiān)管模式
      • 項(xiàng)目模式
    • 監(jiān)管人員
      • 默認(rèn)監(jiān)管模式
      • 切換管理項(xiàng)目時(shí)谣拣,將首頁(yè)模式調(diào)整為項(xiàng)目模式募寨。并根據(jù)不同的項(xiàng)目類(lèi)別,加載不同的項(xiàng)目首頁(yè)
        • 路橋首頁(yè)
        • 地鐵首頁(yè)
        • 園區(qū)首頁(yè)
      • 項(xiàng)目首頁(yè)返回到監(jiān)管首頁(yè)時(shí)森缠,首頁(yè)模式調(diào)整為監(jiān)管模式
    • 項(xiàng)目使用人員
      • 項(xiàng)目模式拔鹰,并根據(jù)不同的項(xiàng)目類(lèi)別,加載不同的項(xiàng)目首頁(yè)
  • 功能集聚頁(yè)

    • 為監(jiān)管模式定義特殊的Key贵涵。
    • 項(xiàng)目模式使用約定的Key列肢。
    • 功能列表根據(jù)不同的Key從緩存數(shù)據(jù)庫(kù)中獲取。

應(yīng)用中宾茂,首頁(yè)模式的切換瓷马,聯(lián)動(dòng)著不同首頁(yè)的push和pop;集聚功能頁(yè)(及其他)獲取具體功能的key變更跨晴。

離線操作

bim_offline_20180613.png

描述

程序的工作環(huán)境有時(shí)候比較特殊欧聘,比如地鐵、房屋修建端盆,經(jīng)常會(huì)用到一些比如上報(bào)工作進(jìn)度怀骤、問(wèn)題,或者是查看項(xiàng)目相關(guān)的文檔焕妙、模型等功能蒋伦,如果應(yīng)用對(duì)網(wǎng)絡(luò)有強(qiáng)需求,那么程序本身是不容易讓人接受的访敌。因此凉敲,「工程在線」在項(xiàng)目整合之處,就要求同時(shí)支持離線操作模式寺旺。
此處拿問(wèn)題上報(bào)的離線功能來(lái)舉例爷抓。通常情況下,問(wèn)題上報(bào)會(huì)涉及上傳照片/視頻阻塑、問(wèn)題類(lèi)別等多種條目蓝撇。且功能的使用存在不確定性。iOS的沙盒機(jī)制決定了我們?cè)谶M(jìn)行離線功能設(shè)計(jì)的時(shí)候陈莽,不能僅僅依靠本地?cái)?shù)據(jù)庫(kù)渤昌,還需要借助于文件操作虽抄。

方案

功能離線模式通過(guò)本地?cái)?shù)據(jù)庫(kù)和文件管理兩種方式來(lái)完成。

  • 本地?cái)?shù)據(jù)庫(kù)
    • 離線功能所需數(shù)據(jù)的緩存独柑。
      • 比如問(wèn)題上報(bào)中涉及的位置迈窟、問(wèn)題類(lèi)別、相關(guān)人員等信息忌栅。
    • 離線數(shù)據(jù)的維護(hù)车酣。
      • 比如URL,HTTP請(qǐng)求方式索绪,參數(shù)湖员,所屬功能,文件夾標(biāo)識(shí)瑞驱,請(qǐng)求狀態(tài)等娘摔。
  • 文件系統(tǒng)
    • 程序會(huì)在Library的Cache目錄下單獨(dú)建立文件夾來(lái)存放離線功能產(chǎn)生/使用的文件。
    • 文件夾標(biāo)識(shí)
      • 使用唯一標(biāo)識(shí)唤反,程序使用yyyyMMddHHmmss格式凳寺。
      • 在使用到照片/視頻時(shí),創(chuàng)建文件夾拴袭。且將過(guò)程中用到的文件移動(dòng)/復(fù)制到該目錄下读第。
      • 在線模式功能提交成功后,會(huì)刪除該文件夾及內(nèi)部文件拥刻。

離線模式下怜瞒,點(diǎn)擊保存就是將相關(guān)的URL、HTTP請(qǐng)求方式般哼、參數(shù)吴汪、文件標(biāo)識(shí)存入離線數(shù)據(jù)庫(kù)中。

當(dāng)程序處于網(wǎng)絡(luò)狀態(tài)下蒸眠,程序會(huì)后臺(tái)上傳離線數(shù)據(jù)庫(kù)中的相關(guān)請(qǐng)求數(shù)據(jù)漾橙。此時(shí)考慮到多文件、多請(qǐng)求上傳會(huì)影響程序性能楞卡。程序在處理離線任務(wù)上傳時(shí)霜运,對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行了專(zhuān)門(mén)的控制。

  • 每次只有一個(gè)離線任務(wù)進(jìn)行上傳蒋腮。
  • 上傳完成后淘捡,刪除數(shù)據(jù)庫(kù)及文件緩存中相關(guān)的數(shù)據(jù)
  • 統(tǒng)計(jì)并提示最終離線任務(wù)結(jié)果。針對(duì)失敗的任務(wù)池摧,由用戶(hù)自行決定是放棄還是后續(xù)上傳焦除。

項(xiàng)目總覽

bim_overview_20180613.png

描述

部分用戶(hù)(比如領(lǐng)導(dǎo)、項(xiàng)目管理人員)會(huì)比較關(guān)心項(xiàng)目整體情況作彤,比如進(jìn)度膘魄、問(wèn)題乌逐、投入等信息。我們的設(shè)計(jì)師對(duì)項(xiàng)目總覽功能頁(yè)面設(shè)計(jì)出了很多手勢(shì)相關(guān)的操作创葡。功能整體上下滑動(dòng)浙踢,內(nèi)部左右滾動(dòng)。
首先UI本身并不復(fù)雜灿渴,但是好的體驗(yàn)就需要用心去做了成黄。比如,切換不同類(lèi)別頁(yè)面時(shí)逻杖,數(shù)據(jù)的預(yù)加載。不同類(lèi)別的數(shù)據(jù)如何組織等思瘟。

方案

整個(gè)項(xiàng)目總覽頁(yè)面使用UIPageViewController來(lái)實(shí)現(xiàn)荸百,右側(cè)的UIPageControl則通過(guò)實(shí)現(xiàn)UIPageViewController的相關(guān)協(xié)議來(lái)更新。在每個(gè)頁(yè)面內(nèi)部滨攻,根據(jù)具體的類(lèi)別及數(shù)據(jù)源來(lái)更好的表現(xiàn)/維護(hù)代碼够话。為了達(dá)到更好的用戶(hù)體驗(yàn),總覽功能使用了一個(gè)viewModel來(lái)維護(hù)光绕。

  • 總體
    • 在UIPageViewController的Controller中女嘲,控制導(dǎo)航欄、PageControl诞帐。
    • 在總覽頁(yè)退出時(shí)欣尼,取消各個(gè)子頁(yè)面中未完成的網(wǎng)絡(luò)請(qǐng)求
  • 子頁(yè)面
    • 為了保證數(shù)據(jù)的展示,建立一定的規(guī)則
      • 比如為每個(gè)請(qǐng)求提供有3次重試的機(jī)會(huì)停蕉。這樣當(dāng)用戶(hù)滑動(dòng)過(guò)快時(shí)(或者某個(gè)接口太慢用戶(hù)直接滑過(guò)相關(guān)頁(yè)面時(shí))愕鼓,程序接口可以繼續(xù)運(yùn)行
    • 針對(duì)不同數(shù)據(jù)源,選擇合適的處理方法
      • 比如進(jìn)度對(duì)比頁(yè)慧起,需要支持多種攝像頭設(shè)備現(xiàn)場(chǎng)菇晃。使用策略模式來(lái)針對(duì)不同設(shè)備進(jìn)行登錄/退出、視頻通道等適配
        • 大華硬盤(pán)錄像機(jī)設(shè)備
        • 大華視頻服務(wù)器設(shè)備
        • 候炯罚康威視硬盤(pán)錄像機(jī)設(shè)備
        • 夯撬停康威視視頻服務(wù)器設(shè)備
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市灿意,隨后出現(xiàn)的幾起案子估灿,更是在濱河造成了極大的恐慌,老刑警劉巖脾歧,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甲捏,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鞭执,警方通過(guò)查閱死者的電腦和手機(jī)司顿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)芒粹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人大溜,你說(shuō)我怎么就攤上這事化漆。” “怎么了钦奋?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵座云,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我付材,道長(zhǎng)朦拖,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任厌衔,我火速辦了婚禮璧帝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘富寿。我一直安慰自己睬隶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布页徐。 她就那樣靜靜地躺著苏潜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪变勇。 梳的紋絲不亂的頭發(fā)上恤左,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音搀绣,去河邊找鬼赃梧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛豌熄,可吹牛的內(nèi)容都是我干的授嘀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼锣险,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蹄皱!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起芯肤,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤巷折,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后崖咨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體锻拘,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了署拟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婉宰。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖推穷,靈堂內(nèi)的尸體忽然破棺而出心包,到底是詐尸還是另有隱情,我是刑警寧澤馒铃,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布蟹腾,位于F島的核電站,受9級(jí)特大地震影響区宇,放射性物質(zhì)發(fā)生泄漏娃殖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一议谷、第九天 我趴在偏房一處隱蔽的房頂上張望珊随。 院中可真熱鬧,春花似錦柿隙、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至螟炫,卻和暖如春波附,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昼钻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工掸屡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人然评。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓仅财,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親碗淌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盏求,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,223評(píng)論 0 3
  • 1. 概要 在過(guò)去五年間,負(fù)責(zé)過(guò)從數(shù)百萬(wàn)DAU到幾千萬(wàn)DAU的成熟型數(shù)據(jù)算法團(tuán)隊(duì)亿眠,也曾負(fù)責(zé)從零開(kāi)始的到幾百萬(wàn)DA...
    VentLam閱讀 14,531評(píng)論 0 56
  • 清明臨近 氣溫也很適宜地降了下來(lái) 這個(gè)天氣碎罚,適合 點(diǎn)一根煙,喝一壺酒 以及 思念一個(gè)人纳像。 但我...
    腎毒閱讀 307評(píng)論 13 15
  • 1. 新建Fragment后荆烈,報(bào)錯(cuò),找不到v4包中的Fragment竟趾,只有app包中的憔购。 也可能實(shí)際沒(méi)有導(dǎo)入v4包...
    兔斯基第2號(hào)閱讀 1,873評(píng)論 0 0
  • 起初宫峦,我們浪蕩、沖動(dòng)倦始, 不知怎的我們擁有愛(ài)斗遏,相信愛(ài) 或許如王菲所唱的那樣, 只因?yàn)樵谌巳褐卸嗫戳四阋谎郏?就始終堅(jiān)...
    生于一九九七閱讀 248評(píng)論 0 0