国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      模塊化鏡像下載系統(tǒng)的制作方法

      文檔序號(hào):6566860閱讀:281來(lái)源:國(guó)知局
      專利名稱:模塊化鏡像下載系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明一般地涉及計(jì)算機(jī)程序配置,更具體地涉及基于動(dòng)作樹的鏡像 網(wǎng)絡(luò)下載系統(tǒng)。
      背景技術(shù)
      隨著可能的機(jī)型、選項(xiàng)組和其他變量的數(shù)目的增加,在現(xiàn)代計(jì)算機(jī)和 計(jì)算機(jī)化設(shè)備中配置軟件正變得日益復(fù)雜。例如,為了支持客制化 (configured to order, CTO)計(jì)算機(jī)的銷售,當(dāng)考慮不同的基礎(chǔ)鏡像
      5(foundation image)和應(yīng)用鏡像(application image)組時(shí),給定系統(tǒng)可用 的選擇矩陣可能達(dá)到數(shù)百萬(wàn)的不同鏡像組,這些鏡像組中的任何組會(huì)需要 被復(fù)制到計(jì)算機(jī)的硬盤驅(qū)動(dòng)器上。通常,除了可以被安裝以在這些計(jì)算機(jī) 上運(yùn)行的應(yīng)用模塊的集合之外,這些選擇涉及與具體的硬件有關(guān)的少量基 礎(chǔ)鏡像組。
      鏡像選擇的這種過剩不僅在生產(chǎn)環(huán)境中,而且也在諸如工程、測(cè)試、 質(zhì)量保證、服務(wù)等之內(nèi)的其他領(lǐng)域中是一種負(fù)擔(dān),在這些領(lǐng)域中,軟件和/ 或應(yīng)用程序必須被配置或者重配置為從制造可得的當(dāng)前或先前配置中的任 一種。為了創(chuàng)建這些硬盤驅(qū)動(dòng)器鏡像,創(chuàng)建了模塊化鏡像下載程序,其加 載基礎(chǔ)鏡像以及將被安裝在硬盤驅(qū)動(dòng)器上的預(yù)定一組應(yīng)用模塊鏡像。對(duì)于 任何一種版本的硬件和/或軟件,可以存在許多不同種類的鏡像程序,例如 用于工廠、工程、測(cè)試、質(zhì)量保證、服務(wù)部門等的版本。
      通常,在CTO環(huán)境中,關(guān)于什么將被加載到給定系統(tǒng)的確定如果不 是完全地、也至少是部分地響應(yīng)于包含在桌面管理接口 (DMI)內(nèi)的信息 而確定的。DMI是計(jì)算機(jī)設(shè)備的硬件中的區(qū)域,其中包含在這里被稱為 Mcode的字符串。DMI還包括被稱為UUID的部分,其提供用于硬件的單 元序號(hào)。DMI中所保持的Mcode的位表示關(guān)于設(shè)備的信息,例如硬件特性 以及加載了或者將要加載什么樣的基礎(chǔ)鏡像和其他模塊。由于Mcode未包 含在硬盤驅(qū)動(dòng)器上,因此硬盤驅(qū)動(dòng)器可以被根據(jù)需要而重分區(qū)和格式化, 而不影響Mcode的狀態(tài)。在鏡像下載到硬盤驅(qū)動(dòng)器上之前,Mcode被寫到 固I中。
      大約十幾年前,工業(yè)主要依賴于使用批處理文件來(lái)將鏡像下載到新系 統(tǒng)的硬盤驅(qū)動(dòng)器上。批處理文件使用多個(gè)數(shù)據(jù)源并且嚴(yán)重缺少靈活性,使 得考慮支持大量不同鏡像組是很難的或者甚至是不現(xiàn)實(shí)的。另外,配置的 任何改變都必須在多個(gè)數(shù)據(jù)源和批處理文件上實(shí)現(xiàn),其中該處理是勞動(dòng)密 集、易出錯(cuò)且乏味的。
      最近,引入了模塊化網(wǎng)絡(luò)鏡像,其依賴于單個(gè)數(shù)據(jù)源和一組以高級(jí)語(yǔ) 言編寫的程序,這組程序通常平衡在操作系統(tǒng)的應(yīng)用編程接口 (API)內(nèi) 可用的功能。響應(yīng)于分別的可執(zhí)行文件的執(zhí)行而執(zhí)行下載處理。Sony所使用的一個(gè)這樣的下載配置程序被稱為MINDS (模塊化網(wǎng)絡(luò)下載系統(tǒng))版
      本l ,其與稱為Pacific Tools的程序工具集結(jié)合使用。
      應(yīng)該認(rèn)識(shí)到,用不同的基礎(chǔ)模塊和應(yīng)用模塊建立系統(tǒng)的能力對(duì)于支持
      客制化(CTO)計(jì)算機(jī)的銷售是必要的,CTO計(jì)算機(jī)向客戶提供了不同組 的軟件。 一個(gè)示例是允許客戶選擇將要加載到他們的機(jī)器上的字處理和多 媒體軟件。獲得基礎(chǔ)鏡像并增加模塊以創(chuàng)建鏡像的處理在這里被稱為Sony 模塊化技術(shù)。該技術(shù)的好處在于可以向客戶提供呈指數(shù)增加的數(shù)目的鏡 像。例如,令x等于基礎(chǔ)鏡像數(shù),y等于模塊數(shù),z等于可以提供的獨(dú)特鏡 像數(shù);等式^x2y描述了不同鏡像的數(shù)目大小。以具有23個(gè)基礎(chǔ)鏡像和 33個(gè)模塊為示例,可以提供給客戶的獨(dú)特的可能鏡像的數(shù)目超過八百七十 億,盡管通常在任一時(shí)刻僅提供這些數(shù)目的一個(gè)子集。具有提供并支持火 量的可能鏡像能力的制造商提供了有競(jìng)爭(zhēng)力的優(yōu)點(diǎn)。
      可以認(rèn)為鏡像的生命期具有許多階段。(1)計(jì)劃一一程序管理決定 什么樣的軟件將被放置在特定類型的PC上。(2)鏡像組件的開發(fā)——軟 件集成到基礎(chǔ)鏡像、模塊和恢復(fù)組件中。(3)測(cè)試鏡像組件一一測(cè)試集 成、軟件和各種CTO選項(xiàng)。(4)發(fā)布和交付鏡像組件——將組件送到生 產(chǎn)位置。(5)支持——通過維持、刷新和修復(fù)來(lái)支持產(chǎn)品。
      通常,鏡像生命期的最有技術(shù)性挑戰(zhàn)的階段是開發(fā),而勞動(dòng)最密集的 階段是測(cè)試。在任一種情況下,系統(tǒng)都被頻繁地用新軟件重鏡像。重鏡像 的基本原因之一是要測(cè)試各種CTO選項(xiàng)。另一個(gè)原因是要讓系統(tǒng)返回到 出廠狀態(tài)。
      由于這需要頻繁地對(duì)系統(tǒng)進(jìn)行重鏡像,尤其在測(cè)試期間,因此鏡像處 理由于其所需要的時(shí)間量而在歷史上已經(jīng)成為瓶頸。系統(tǒng)直到鏡像處理完 成才可用。此外,工程師必須通過提供輸入或者換C.D而花費(fèi)時(shí)間來(lái)對(duì)系 統(tǒng)進(jìn)行鏡像,這通常是易出錯(cuò)的非常耗時(shí)的處理。因此,對(duì)系統(tǒng)進(jìn)行鏡像 的處理需要工程師的時(shí)間并且使得系統(tǒng)在鏡像發(fā)生期間不可用。將認(rèn)識(shí) 到,可以從最小化這些時(shí)間中得到許多好處以減小或者消除瓶頸。對(duì)解決 方案己經(jīng)進(jìn)行了許多嘗試,但是在時(shí)間要求和靈活性方面都有所不足。
      早期的鏡像解決方案是使用被稱為"安裝CD"的CD來(lái)對(duì)系統(tǒng)進(jìn)行鏡像的手動(dòng)處理。在開發(fā)諸如MINDS版本1之類的第一個(gè)模塊化鏡像網(wǎng)
      絡(luò)下載解決方案之前,依賴于該處理。安裝CD通常使用MS-DOS作為操 作系統(tǒng)并且在CD上(與更快速的介質(zhì)相反),其中其通常需要一個(gè)工程 師大約半天的時(shí)間來(lái)對(duì)系統(tǒng)進(jìn)行鏡像。該處理也具有在系統(tǒng)可以被鏡像之 前必須復(fù)制CD的額外成本和延遲,這甚至更進(jìn)一歩地增加了瓶頸。此 外,選項(xiàng)的選擇是非常復(fù)雜和有限的。
      在第一個(gè)模塊化鏡像網(wǎng)絡(luò)下載解決方案(即,MINDS版本1)被開發(fā) 時(shí),想出了一種新方法來(lái)對(duì)系統(tǒng)進(jìn)行鏡像。該方法提供一種手動(dòng)處理,與 CD相反,該處理在局域網(wǎng)(LAN)上對(duì)系統(tǒng)進(jìn)行鏡像。雖然MS-DOS仍 然是所使用的操作系統(tǒng),但是這種從CD到LAN的轉(zhuǎn)換將鏡像系統(tǒng)的總時(shí) 間從半天減少為大約三個(gè)小時(shí)。雖然速度增加,但是各種CTO選項(xiàng)不可
      此外,由于該處理被手動(dòng)執(zhí)行,因此在鏡像處理中具有一個(gè)基木弱 點(diǎn),使得難以兩次以相同方式鏡像系統(tǒng)。這種一致性的缺乏是由于必須在 鏡像過程中手動(dòng)地執(zhí)行許多歩驟而出現(xiàn)的,并且引起很大的問題。消除對(duì) 執(zhí)行這些手動(dòng)歩驟的需要將會(huì)消除不一致性。
      MINDS版本1鏡像軟件被創(chuàng)建以平衡PC中的新進(jìn)歩的能力,并且產(chǎn)
      生能夠在大約一小時(shí)內(nèi)鏡像系統(tǒng)而僅需要大約十分鐘的工程時(shí)間的處理, 這是相對(duì)于使用安裝CD的實(shí)質(zhì)改進(jìn)。MINDS vl也被配置為與軟件管理 系統(tǒng)(SMS)數(shù)據(jù)庫(kù)交互以允許第一次測(cè)試CTO選項(xiàng),并且也具有將鏡 像上載到LAN上的能力。MINDS vl的部署意味著鏡像第一次被以 一致的 方式上載和下載,這也增加了測(cè)試的準(zhǔn)確性。
      雖然如工業(yè)上所使用的類似配置程序一樣,當(dāng)前的MINDS W程序提 供許多優(yōu)點(diǎn),但是其仍然具有降低了下載處理的靈活性并且使用戶交互復(fù) 雜的許多缺點(diǎn)。
      因此,需要模塊化網(wǎng)絡(luò)下載系統(tǒng)內(nèi)的增強(qiáng)軟件來(lái)提供增加的靈活性和 容易使用,本發(fā)明實(shí)現(xiàn)這些需要以及其他需要
      發(fā)明內(nèi)容
      本發(fā)明所描述的模塊化鏡像網(wǎng)絡(luò)下載系統(tǒng)(MINDS版本2)是軟件的 集合,所述軟件從存儲(chǔ)區(qū)域(SAN)下載軟件鏡像到目標(biāo)計(jì)算機(jī)系統(tǒng),并 且/或者從目標(biāo)計(jì)算機(jī)網(wǎng)絡(luò)上載鏡像到SAN。新的下載系統(tǒng)被關(guān)于樹構(gòu)建 的動(dòng)作環(huán)境而組織,樹結(jié)構(gòu)的動(dòng)作環(huán)境克服了在前的下載系統(tǒng)所具有的許 多缺點(diǎn)。
      在配置系統(tǒng)的過程期間,通過寫桌面管理接口 (DMI)、設(shè)置硬盤驅(qū) 動(dòng)器、下載基礎(chǔ)鏡像、安裝模塊和清理而在系統(tǒng)中構(gòu)建鏡像。系統(tǒng)的另一 目的允許軟件鏡像被從計(jì)算機(jī)上載到網(wǎng)絡(luò)以用于其他用戶的下載訪問。根 據(jù)本發(fā)明的MINDS軟件允許利用當(dāng)前或以前鏡像組進(jìn)行重新鏡像。
      雖然第一 MINDS系統(tǒng)(版本1)提供許多優(yōu)點(diǎn),但是也發(fā)現(xiàn)其在其 他一些領(lǐng)域有所不足。具體而言, 一個(gè)所識(shí)別出的問題是用于下載的鏡像 組基本上是靜態(tài)的,其中任何將要作出的變化都要求程序被重新編譯。用 于鏡像系統(tǒng)的復(fù)雜過程已在快速地發(fā)展,恒定的變化阻礙要求對(duì)MINDS vl作出比預(yù)期更多的代碼變化;有時(shí)要每天作出變化。理想地,這些軟件 變化應(yīng)該被全面測(cè)試,但是,時(shí)間和資源限制經(jīng)常使得這樣是不切實(shí)際 的。此外,因?yàn)檫@些變化的快速配置經(jīng)常是至關(guān)重要的,所以可以包括創(chuàng) 建很好地設(shè)計(jì)并且高效的解決方案的實(shí)踐。
      MINDS vl的實(shí)現(xiàn)方式要求創(chuàng)建程序的多個(gè)并行版本,這些并行版本 具有不同的用戶流程和功能以支持各種用戶組。這些并行版本導(dǎo)致軟件維 護(hù)時(shí)間的增加和配置時(shí)間的增加。
      在利用當(dāng)前的模塊化下載系統(tǒng)(MINDS vl)的下載過程期間, 一些 文件必須通過局域網(wǎng)傳輸數(shù)次,導(dǎo)致鏡像系統(tǒng)所需要的總吋間的增加以及 網(wǎng)絡(luò)負(fù)載的增加。鏡像過程的一部分在所有的用戶輸入被聚集之前執(zhí)行, 導(dǎo)致鏡像系統(tǒng)所需要的工程時(shí)間比必要的工程時(shí)間更多,這是由于用戶在 繼續(xù)提供輸入之前將必須等待諸如在網(wǎng)絡(luò)和目標(biāo)系統(tǒng)之間傳輸文件之類的 任務(wù)的事實(shí)引起的。另一個(gè)缺點(diǎn)是用戶不能回退并糾正錯(cuò)誤,例如不正確 的輸入或選擇。糾正錯(cuò)誤的僅有方法是重新開始整個(gè)過程,其中損失了到 達(dá)過程中出錯(cuò)的點(diǎn)所花費(fèi)的時(shí)間和努力。
      為了克服這些缺點(diǎn),MINDS v2系統(tǒng)被設(shè)計(jì)為允許用戶響應(yīng)于動(dòng)作并
      9且更具體地響應(yīng)于動(dòng)作樹而創(chuàng)建鏡像。用于該過程的數(shù)據(jù)被從軟件管理系
      統(tǒng)(SMS)中取回,SMS在Sony VAIO環(huán)境的情況下被稱為VSMS
      (VAIO軟件管理系統(tǒng))。MINDS系統(tǒng)被優(yōu)選地配置為從子網(wǎng)開始操作, 該子網(wǎng)是被配置用于系統(tǒng)鏡像加載的計(jì)算機(jī)設(shè)備制造商、增值轉(zhuǎn)售商,集 成商等的子網(wǎng)。當(dāng)選擇希望的鏡像配置時(shí),僅網(wǎng)絡(luò)上可用的鏡像選擇被示 出給用戶。
      在MINDS內(nèi)所利用的動(dòng)作和動(dòng)作樹允許過程被從單獨(dú)的任務(wù)(動(dòng) 作)放在-一起。利用根據(jù)需要而增加或刪除的動(dòng)作,可以容易地改變?nèi)蝿?wù) 的順序。MINDS的內(nèi)部動(dòng)作樹結(jié)構(gòu)允許同一可執(zhí)行文件在給定下載過程 的多個(gè)步驟中執(zhí)行。動(dòng)作類中的所有動(dòng)作實(shí)例都異步于管理類而運(yùn)行,動(dòng) 作將消息發(fā)送回管理類(例如,完成消息、錯(cuò)誤消息、警告消息等等)。 尤其在動(dòng)作被拖延或者是特性密集型的情況下,可以在分開的線程內(nèi)執(zhí)行 動(dòng)作以減小延遲問題。
      在一個(gè)優(yōu)選實(shí)施例中,與執(zhí)行多個(gè)分開的可執(zhí)行文件相比,在 MINDS v2中響應(yīng)于外部設(shè)定文件而控制單個(gè)可執(zhí)行文件。除非另外規(guī) 定,否則MINDS的以下描述涉及根據(jù)本發(fā)明的MINDS版本2。動(dòng)態(tài)鏈接 庫(kù)(DLL)與增加測(cè)試的可靠性并使測(cè)試變得容易的單個(gè)MINDS可執(zhí)行 文件一起使用。與在前的系統(tǒng)不同,可以基于在下載過程被制定之前執(zhí)行 動(dòng)作的動(dòng)態(tài)綁定,在即將用于具體下載過程的時(shí)候配置新的MINDS系 統(tǒng)。例如,在增加新動(dòng)作的過程中,信息被增加到字符串表和動(dòng)作列表 中,為動(dòng)作定義任何用戶交互。應(yīng)該容易地知道,改變這些綁定與編輯系 統(tǒng)內(nèi)的代碼不同。因?yàn)榧词勾a的單個(gè)錯(cuò)誤行都可能使程序不能工作,或 者更壞,創(chuàng)建錯(cuò)誤的或者未如實(shí)表達(dá)的鏡像,所以無(wú)論何時(shí)作出編碼變化 都要保證全面的測(cè)試。但是,當(dāng)僅改變綁定時(shí),因?yàn)槊總€(gè)被綁定的模塊已 經(jīng)被全面地測(cè)試,所以不需要進(jìn)一步測(cè)試軟件。測(cè)試歩驟的消除尤其在配 置經(jīng)常改變的環(huán)境中可以節(jié)省大量資源。
      動(dòng)作樹的使用提供創(chuàng)建快速變化而不重新編譯代碼的機(jī)制。可以定義 一個(gè)或多個(gè)動(dòng)作樹,每個(gè)動(dòng)作樹通常包括多個(gè)樹節(jié)點(diǎn),每個(gè)樹節(jié)點(diǎn)包括一 個(gè)動(dòng)作實(shí)例。每個(gè)樹節(jié)點(diǎn)都包括動(dòng)作以及定義樹內(nèi)關(guān)系的指針。通過示例而不是限制,描述了一個(gè)實(shí)施例,其中樹結(jié)構(gòu)內(nèi)的指針支持子關(guān)系和下一 兄弟關(guān)系。因此,每個(gè)節(jié)點(diǎn)都具有兩個(gè)指針, 一個(gè)指針更深入地指向下一 個(gè)子節(jié)點(diǎn), 一個(gè)指針向旁邊指向最近的兄弟節(jié)點(diǎn)。樹的這種安排簡(jiǎn)化了例 如通過遞歸的樹游歷,而節(jié)約了存儲(chǔ)器。動(dòng)作由管理類來(lái)控制并且被作為 分開的線程而載入。
      代碼被劃分為多個(gè)層,例如用戶接口、基礎(chǔ)設(shè)施(或者管理層)和一 組單獨(dú)的動(dòng)作。這種分開允許在其他應(yīng)用中重新使用單獨(dú)的動(dòng)作,而同時(shí) 可以為一組動(dòng)作和/或分開的動(dòng)作執(zhí)行用戶接口操作。管理層指引具體動(dòng)作 的執(zhí)行,信息從管理層穿越至樹,而不是相反。應(yīng)該知道,使用相同的管 理代碼而不管正在執(zhí)行的動(dòng)作,其中,軟件的升級(jí)和測(cè)試被大大簡(jiǎn)化。對(duì) 于給定的構(gòu)造,進(jìn)行選擇過程以確定哪個(gè)動(dòng)作樹將被執(zhí)行。例如,用戶接 口可以允許用戶選擇動(dòng)作樹,或者在僅指定了 一個(gè)動(dòng)作樹的情況下或者響 應(yīng)于足夠的吋間段的過去卻沒有接收到用戶響應(yīng),而使用缺省值。
      在一個(gè)實(shí)施例中,MINDS系統(tǒng)的功能被與用戶接口分開,以增加
      MINDS核的使用的靈活性。根據(jù)系統(tǒng)的一種模式,在MINDS會(huì)話期間所 執(zhí)行的每個(gè)動(dòng)作都被記錄到例如VSMS中,優(yōu)選地包括ti期和時(shí)間、動(dòng) 作、登錄的人和關(guān)于所配置的系統(tǒng)的信息。
      可以在諸如用于開發(fā)工作、作為MIS (管理信息服務(wù))功能的軟件分 布等的各種鏡像應(yīng)用中利用MINDS裝置和方法。例如,響應(yīng)于專門的許 可、關(guān)于系統(tǒng)本身的信息、部門信息和/或在鏡像創(chuàng)建是可用的其他信息, 模塊可以將選擇性的軟件鏡像提供到系統(tǒng)上。
      本發(fā)明適應(yīng)于以多種方式實(shí)施,包括但不局限于下面的描述。 根據(jù)本發(fā)明的一個(gè)實(shí)施例,描述了一種用于自動(dòng)配置計(jì)算機(jī)上的軟件 程序鏡像的裝置,該裝置包括(a)模塊化網(wǎng)絡(luò)下載程序,其被配置為 訪問來(lái)自網(wǎng)絡(luò)的鏡像文件以配置計(jì)算機(jī)上的程序鏡像;(b)多個(gè)動(dòng)作例 程,所述動(dòng)作例程中的每一個(gè)都被配置為執(zhí)行模塊化網(wǎng)絡(luò)下載程序內(nèi)的具 體操作;以及(c)用于定義將由模塊化網(wǎng)絡(luò)下載程序執(zhí)行的動(dòng)作例程的 樹。
      所述動(dòng)作例程被動(dòng)態(tài)地鏈接到模塊化網(wǎng)絡(luò)下載程序,其中不需要重新編碼、編譯和測(cè)試以修改將要執(zhí)行的一組動(dòng)作,或者創(chuàng)建與新模式相關(guān)聯(lián) 的新動(dòng)作組或新的PC配置。優(yōu)選的是,用文本配置文件來(lái)創(chuàng)建動(dòng)作歷程 的樹。所述模塊化網(wǎng)絡(luò)下載程序包括(i)管理層,其被配置為在動(dòng)作樹 的游歷期間執(zhí)行動(dòng)作;以及(ii)用戶接口,其被配置為針對(duì)正在執(zhí)行的 所希望的自動(dòng)安裝,控制管理層的操作。
      本發(fā)明的另一個(gè)實(shí)施例可以被描述為一種用于自動(dòng)配置計(jì)算機(jī)上的軟 件程序鏡像的裝置,該裝置包括(a)具有多個(gè)動(dòng)作的動(dòng)作樹層,所述 動(dòng)作可以被動(dòng)態(tài)地鏈接并且然后在自動(dòng)軟件安裝期間執(zhí)行;(b)至少一
      個(gè)具有多個(gè)節(jié)點(diǎn)的動(dòng)作樹,所述節(jié)點(diǎn)中的每一個(gè)都包含至少一個(gè)指向來(lái)自
      動(dòng)作樹層的動(dòng)作的指針;(c)管理層,其被配置為在動(dòng)作樹的游歷期間 執(zhí)行動(dòng)作;以及(d)用戶接口,其被配置為針對(duì)正在執(zhí)行的所希望的自 動(dòng)安裝,控制管理層的操作。所述動(dòng)作在功能上是獨(dú)立的并且可以在給定 的動(dòng)作樹內(nèi)和不同的動(dòng)作樹之間重新使用。另外,可以在分開的執(zhí)行線程 內(nèi)載入動(dòng)作,從而允許系統(tǒng)快速地響應(yīng)于用戶,而其仍然在執(zhí)行長(zhǎng)的動(dòng)作 歩驟之中。
      由MINDS軟件所創(chuàng)建的程序鏡像或者包括單個(gè)基礎(chǔ)鏡像,或者更典 型地包括單個(gè)基礎(chǔ)鏡像與至少一個(gè)應(yīng)用程序模塊的組合。但是,將會(huì)知 道,MINDS系統(tǒng)可以支持多個(gè)基礎(chǔ)鏡像,盡管這在當(dāng)前具有較少的實(shí)用 價(jià)值。
      可以執(zhí)行來(lái)自動(dòng)作樹內(nèi)的任何希望數(shù)目的不同動(dòng)作。通過示例,在該 實(shí)施例中所支持的動(dòng)作可以從一組處理的動(dòng)作中選擇,這組處理的動(dòng)作基 本上包括創(chuàng)建Mcode介質(zhì)、從系統(tǒng)的桌面管理接口 (DMI)上載 Mcode、下載基礎(chǔ)鏡像到系統(tǒng)硬盤驅(qū)動(dòng)器、下載應(yīng)用模塊鏡像到系統(tǒng)硬盤 驅(qū)動(dòng)器、從系統(tǒng)硬盤驅(qū)動(dòng)器上載基礎(chǔ)鏡像、從系統(tǒng)硬盤驅(qū)動(dòng)器上載應(yīng)用模 塊鏡像、從恢復(fù)分區(qū)恢復(fù)基礎(chǔ)鏡像、介質(zhì)版本驗(yàn)證、位塊傳送(blitter)、 分配目標(biāo)驅(qū)動(dòng)器、選擇基本單元、清理鏡像移除不必要的文件、將鏡像復(fù) 制到恢復(fù)分區(qū)、將模塊復(fù)制到分區(qū)、創(chuàng)建鏡像CRC、創(chuàng)建Mcode軟盤、 顯示飛濺(splash)屏幕、顯示桌面管理接口比較、彈出介質(zhì)、找到正確 的目標(biāo)驅(qū)動(dòng)器、獲得硬盤驅(qū)動(dòng)器信息、驗(yàn)證是否在網(wǎng)絡(luò)子網(wǎng)上、結(jié)束日志
      12會(huì)話、映射網(wǎng)絡(luò)驅(qū)動(dòng)器、分區(qū)詢問、分區(qū)硬盤驅(qū)動(dòng)器、重新啟動(dòng)、受限登 入、返回主菜單、驗(yàn)證鏡像組件存在以及創(chuàng)建線程。根據(jù)本發(fā)明一實(shí)施 例,任何數(shù)目的另外的或不同的動(dòng)作可以被創(chuàng)建以支持鏡像下載或其他活 動(dòng)。
      根據(jù)另一個(gè)實(shí)施例,本發(fā)明被描述為一種用軟件程序鏡像配置計(jì)算機(jī) 的方法,該方法包括(a)創(chuàng)建和編譯一組可分開執(zhí)行的動(dòng)作以執(zhí)行計(jì) 算機(jī)上的鏡像配置動(dòng)作;(b)創(chuàng)建和編譯管理層,該管理層執(zhí)行在所選
      擇的動(dòng)作樹內(nèi)所定義的動(dòng)作;(c)創(chuàng)建和編譯用戶接口層,該用戶接口 層控制動(dòng)作樹選擇和通過動(dòng)作樹的前進(jìn);(d)創(chuàng)建具有多個(gè)節(jié)點(diǎn)的動(dòng)作 樹結(jié)構(gòu),所述節(jié)點(diǎn)包括指向動(dòng)作和動(dòng)作樹中的其他節(jié)點(diǎn)的指針;以及 (e)將動(dòng)作、管理層、用戶接口和動(dòng)作樹鏈接到程序中,所述程序根據(jù) 用戶輸入而執(zhí)行在動(dòng)作樹中所定義的動(dòng)作。
      樹結(jié)構(gòu)優(yōu)選地包括根據(jù)子指針關(guān)系、兄弟指針關(guān)系或者更加優(yōu)選地根 據(jù)子指針關(guān)系和兄弟指針關(guān)系彼此的組合而連接的節(jié)點(diǎn)。動(dòng)作樹內(nèi)的指針 關(guān)系優(yōu)選地包括指向動(dòng)作所位于的動(dòng)作樹中的節(jié)點(diǎn)位置的指針。優(yōu)選地執(zhí) 行的動(dòng)作被堆棧所跟蹤,堆桟提供允許用戶返回到任何在前的處理步驟的 方便機(jī)制。使用堆棧優(yōu)于在動(dòng)作樹內(nèi)包括父節(jié)點(diǎn)指針。
      通過實(shí)現(xiàn)新的MINDS系統(tǒng)可以得到許多好處,包括但不局限于下列 好處。
      本發(fā)明的一個(gè)方面是提供一種模塊化鏡像網(wǎng)絡(luò)下載系統(tǒng),其動(dòng)作可以 被更容易地適應(yīng)。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其中可以從動(dòng)態(tài)鏈接 的動(dòng)作樹中增加或者冊(cè)l」除動(dòng)作。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其中用戶可以回退到 任何在前的動(dòng)作。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其中用戶可以暫停、 單歩調(diào)試和繼續(xù)處理步驟。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其具有改進(jìn)的錯(cuò)誤處理。
      13本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其可以支持具有增加數(shù)目的可支持選項(xiàng)的更全面的用戶接口 。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其取決于部門(例
      如,工廠車間(factory floor)、工程、服務(wù)、測(cè)試、質(zhì)量保證等等)而消除了對(duì)網(wǎng)絡(luò)下載編程介質(zhì)(即,CD)的多個(gè)版本的需要。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其直接與軟件管理系統(tǒng)(SMS)交互。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其可以支持不同類型的鏡像,例如基礎(chǔ)鏡像、整體鏡像、加基礎(chǔ)的鏡像和使用Ghost的鏡像。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其可以被適應(yīng)于使用小的操作系統(tǒng),例如稱為WinPE的Windows XP按比例縮小的預(yù)安裝版本。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其僅可以從指定的網(wǎng)絡(luò)子網(wǎng)內(nèi)執(zhí)行,從而防止制造商設(shè)備之外的濫用。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其將完整的材料清單(BOM)復(fù)制到目標(biāo)系統(tǒng)。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其可以利用系統(tǒng)UUID作為用于創(chuàng)建Mcode軟盤的缺省值。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其在用于創(chuàng)建Mcode軟盤的主菜單中提供分開的選擇。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其能夠從現(xiàn)有的系統(tǒng)中上載鏡像。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其支持許多不同的操作模式,例如無(wú)人看管模式、工廠模式、SKU選擇模式、高級(jí)模式、基礎(chǔ)圖像上載模式、自由式鏡像上載和下載模式等等。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其中用戶在執(zhí)行任何動(dòng)作之前必須被認(rèn)證。
      本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其中新的動(dòng)作樹可以被定義而無(wú)需重新編譯和測(cè)試。
      14本發(fā)明的另一個(gè)方面是提供一種網(wǎng)絡(luò)下載系統(tǒng),其中所有的用戶選擇和交互都在執(zhí)行任何動(dòng)作之前執(zhí)行。
      本發(fā)明的進(jìn)一步的方面將在說明書的下面部分中出現(xiàn),其中詳細(xì)描述是為了全面公開本發(fā)明的優(yōu)選實(shí)施例的目的,而不對(duì)其進(jìn)行限制。


      通過參考僅用于說明性目的的附圖,本發(fā)明將被更全面地理解圖1是下載到計(jì)算機(jī)硬盤驅(qū)動(dòng)器上的軟件鏡像的框圖。
      圖2是根據(jù)本發(fā)明一實(shí)施例的模塊化網(wǎng)絡(luò)下載系統(tǒng)的輸入和輸出的框
      圖,在左側(cè)示出了與MINDS程序交互的網(wǎng)絡(luò)資源。
      圖3是根據(jù)本發(fā)明一實(shí)施例的模塊化網(wǎng)絡(luò)下載系統(tǒng)的流程模型。
      圖4是根據(jù)本發(fā)明一實(shí)施例的模塊化網(wǎng)絡(luò)下載系統(tǒng)的類層次模型。
      圖5是根據(jù)本發(fā)明一實(shí)施例的模塊化網(wǎng)絡(luò)下載系統(tǒng)內(nèi)的層的框圖,示
      出了用戶接口 (UIF)層、管理層和動(dòng)作層。
      圖6是根據(jù)本發(fā)明一實(shí)施例的模塊化網(wǎng)絡(luò)下載系統(tǒng)內(nèi)的模塊的框圖。
      圖7是根據(jù)本發(fā)明一個(gè)方而的請(qǐng)求動(dòng)作運(yùn)行的管理器層的流程圖。
      圖8是根據(jù)本發(fā)明一個(gè)方面的互連動(dòng)作的樹模型,示出了可用的動(dòng)作
      和所實(shí)現(xiàn)的使用那些動(dòng)作實(shí)例的動(dòng)作樹的示例。
      圖9是示出根據(jù)本發(fā)明一個(gè)方面的動(dòng)作樹示例的樹行圖,示出了僅提
      供樹內(nèi)的一個(gè)或多個(gè)子關(guān)系的樹。
      圖10是示出根據(jù)本發(fā)明一個(gè)方面的動(dòng)作樹示例的樹形圖,示出了在
      樹的每個(gè)節(jié)點(diǎn)處利用單個(gè)子和單個(gè)兄弟關(guān)系的樹。
      圖11A-圖IIF是根據(jù)本發(fā)明一個(gè)方面的樹游歷示例,示出了關(guān)于堆棧
      內(nèi)容的動(dòng)作執(zhí)行。
      圖12是根據(jù)本發(fā)明一個(gè)方面的示例錯(cuò)誤屏幕的屏幕截圖。
      圖13是根據(jù)本發(fā)明一實(shí)施例的示例主菜單屏幕的屏幕截圖,示出了
      可以選擇的操作模式。
      圖14是根據(jù)本發(fā)明一實(shí)施例的示例狀態(tài)和控制屏幕的屏幕截圖,示
      出了動(dòng)作歷史、時(shí)間、當(dāng)前操作以及命令選項(xiàng)。圖15A-圖15B是根據(jù)本發(fā)明一實(shí)施例的示例基本單元選擇屏幕的屏 幕截圖。
      圖16是根據(jù)本發(fā)明一實(shí)施例的示例模塊和開關(guān)選擇屏幕的屏幕截圖。
      具體實(shí)施例方式
      更具體地參考附圖,為了說明性目的,在圖1至圖16所一般示出的
      裝置中實(shí)施本發(fā)明。將會(huì)認(rèn)識(shí)到,裝置可以在配置和部件的細(xì)節(jié)方面來(lái)變 化,并且方法可以在具體歩驟和順序方面來(lái)變化,而不脫離這里所公開的 基本概念。
      在這里被稱為MINDS的模塊化鏡像網(wǎng)絡(luò)下載系統(tǒng)是Sony設(shè)計(jì)和開發(fā) 的用于快速部署PC的整個(gè)軟件方面的解決方案。雖然將軟件放置在特定 PC上的過程看起來(lái)簡(jiǎn)單,但是那些熟悉該過程的人認(rèn)識(shí)到當(dāng)前過程既不 簡(jiǎn)單、靜態(tài),也不迅速(快速)。為了滿足關(guān)于簡(jiǎn)單性、速度、靈活性、 降低開銷和可靠性的目的,MINDS v2系統(tǒng)是在前的MINDS vl模塊化下 載系統(tǒng)的從零開始的完全再設(shè)計(jì)。結(jié)果,該設(shè)計(jì)沒有先前的解決方案的限 制或問題。
      MINDS的一個(gè)目的是加速和簡(jiǎn)化響應(yīng)于應(yīng)用程序和/或用戶選擇而合 并軟件鏡像變化的過程。根據(jù)本發(fā)明執(zhí)行這些功能的簡(jiǎn)易和效率可以貫穿 PC開發(fā)、配置、質(zhì)量保證、測(cè)試和維護(hù)過程提供很大的好處。根據(jù)本發(fā) 明的MINDS v2系統(tǒng)被設(shè)計(jì)為使得過程的變化可以被快速和可靠地實(shí)現(xiàn)。 該設(shè)計(jì)擴(kuò)展地利用了封裝、繼承和多態(tài)性(polymorphism)的面向?qū)ο缶?程原理。因此,MINDS v2 (在下文中簡(jiǎn)稱為MINDS)的新穎和重要的方 面不僅是它做什么,而且是它如何做。
      圖1示出了用于下載到計(jì)算機(jī)(PC)系統(tǒng)上的軟件鏡像10。在該實(shí) 施例中,所示出的鏡像包括基礎(chǔ)鏡像12、軟件應(yīng)用模塊14和可選的恢復(fù) 模塊鏡像16。在PC的硬盤驅(qū)動(dòng)器分區(qū)上裝載的整個(gè)軟件包被稱為鏡像。 應(yīng)該知道, 一些情況下,至少在Sony的一些情況下,至少存在兩個(gè)在PC 上所定義的分區(qū),至少一個(gè)供客戶使用的分區(qū)和另一個(gè)用于恢復(fù)目的的隱
      16藏分區(qū),以下稱為恢復(fù)組件16。這些組件不僅在為客戶制造時(shí)必須被放置 在系統(tǒng)上,而且在開發(fā)和測(cè)試期間也必須被重復(fù)地放置在系統(tǒng)上。也可以 使用通常是一組DVD的介質(zhì)套件來(lái)將鏡像放置在系統(tǒng)上。
      鏡像的主要組件是基礎(chǔ)鏡像12。鏡像包括一個(gè)基礎(chǔ)鏡像,該基礎(chǔ)鏡像
      包含操作系統(tǒng)18、驅(qū)動(dòng)程序20以及一組特定硬件共用的應(yīng)用程序和/或?qū)?用程序22。模塊14是另外的多個(gè)軟件,這些軟件被增加到硬盤驅(qū)動(dòng)器上 以支持來(lái)自PC制造商或者更典型地來(lái)自第三方供應(yīng)商的具體安裝應(yīng)用程 序,例如生產(chǎn)率套件(productivity suite)(即,包含文處理器、電子表 格、演示軟件的應(yīng)用程序)、瀏覽器、電子郵件程序、聲卡應(yīng)用程序、媒 體PC應(yīng)用程序等。
      任何希望數(shù)目的模塊可以包含在鏡像內(nèi),由模塊24a至24n表示?;?復(fù)組件16允許客戶將他們的PC的狀態(tài)恢復(fù)為出廠時(shí)一樣?;謴?fù)組件例如 可以包括經(jīng)壓縮和包裝的一組文件(一般稱為PAC文件),在基礎(chǔ)鏡像被 還原之后需要這些文件來(lái)將針對(duì)項(xiàng)目(project)而定的應(yīng)用程序還原到硬 盤驅(qū)動(dòng)器上。數(shù)據(jù)文件28是包含用PAC文件或模塊來(lái)恢復(fù)應(yīng)用程序所必 需的針對(duì)項(xiàng)目而定的配置文件的模塊化可執(zhí)行文件。WinPE文件30或者 類似物是可以在還原過程中利用的小操作系統(tǒng)。因此應(yīng)該知道,雖然將各 種組件放在一起以創(chuàng)建鏡像的概念是簡(jiǎn)單的,但是實(shí)際的實(shí)現(xiàn)方式是復(fù)雜 的,由許多歩驟組成。
      圖2通過示例示出了具有MINDS軟件42和用戶接口 44的下載系統(tǒng) 40,下載系統(tǒng)40被配置用于下載鏡像到硬盤驅(qū)動(dòng)器46,或者較次優(yōu)選地 從硬盤驅(qū)動(dòng)器中上載鏡像。在優(yōu)選實(shí)施例中,MINDS系統(tǒng)結(jié)合局域網(wǎng)或 者子網(wǎng)而操作,提供對(duì)數(shù)據(jù)庫(kù)的訪問和操作MINDS系統(tǒng)的機(jī)構(gòu)的功能。 在這種情況下,網(wǎng)絡(luò)包括用于鏡像過程的網(wǎng)絡(luò)鏡像和模塊的存儲(chǔ)庫(kù)48、桌 面管理接口 (DMI)數(shù)據(jù)存儲(chǔ)庫(kù)50、軟件管理系統(tǒng)(SMS) 52、工廠信息 54 (即,MINDS.csv)和Mcode加密數(shù)據(jù)56。
      圖3通過示例示出了 MINDS系統(tǒng)過程的一般操作流程60。在節(jié)點(diǎn)62 處加載主菜單,并且在節(jié)點(diǎn)64處系統(tǒng)等待用戶的菜單選擇。如果僅存在 單個(gè)菜單項(xiàng),或者如果所分配的時(shí)間過去卻沒有作出選擇,則選擇缺省模
      17式,其中節(jié)點(diǎn)64被繞過。在節(jié)點(diǎn)66處,加載節(jié)點(diǎn)樹以供選擇,其中可以
      收集用戶信息。如果動(dòng)作和選擇是有效的,則過程進(jìn)行到節(jié)點(diǎn)68,運(yùn)行動(dòng)
      作樹內(nèi)的順序動(dòng)作。本發(fā)明的一種模式允許用戶暫停(中斷)和繼續(xù)該過
      程的執(zhí)行,以及單步調(diào)試(step through)處理步驟或者甚至回到先前所執(zhí) 行的步驟(例如改變?cè)摬襟E所作出的選擇并且從該點(diǎn)繼續(xù))的能力,因此 不需要用戶重復(fù)整個(gè)序列的步驟。 一旦動(dòng)作樹中的動(dòng)作己被執(zhí)行,則動(dòng)作 樹退出到節(jié)點(diǎn)70。
      圖3的節(jié)點(diǎn)64中的菜單選擇可以提供任何數(shù)目的動(dòng)作樹選擇,通常 與MINDS程序的操作模式相關(guān)聯(lián)。另外,例如可以利用第一屏幕上的多 種操作來(lái)嵌套菜單,以提供對(duì)大量模式的選擇,所述操作導(dǎo)致所選擇的種 類內(nèi)的具體模式。應(yīng)該知道,可以利用選擇前端的任何形式,而不脫離本 發(fā)明的教導(dǎo)。
      在本發(fā)明的一個(gè)實(shí)施例中,MINDS v2提供不同的操作模式以消除對(duì) MINDS vl所要求的并行版本的需要。這些各種模式提供完全自治的操作 或者允許用戶選擇他們想要在鏡像過程中實(shí)行多少控制。具有較多用戶控 制的模式幫助調(diào)試和故障檢修,而具有較少控制的模式更適合于自動(dòng)過程 和用于諸如制造之類的領(lǐng)域,在制造過程中,控制硬盤驅(qū)動(dòng)器鏡像很重 要。另外,這些不同的操作模式允許諸如在工廠中鏡像的不同過程被仿 真。當(dāng)工廠過程被仿真時(shí),依賴于與工廠所使用的相同數(shù)據(jù)源,這促成更 準(zhǔn)確的測(cè)試并且允許某些類型的錯(cuò)誤在到達(dá)工廠之前被捕捉。
      一種操作模式在這里被稱為"無(wú)人看管模式",在加載之后用戶不與 MINDS交互的條件下,其自動(dòng)開始(因此繞過圖3的節(jié)點(diǎn)64)。該操作 模式除了 MINDS的初始加載之外不需要用戶輸入就執(zhí)行整個(gè)鏡像過程。 為了獲得將要使用什么樣的鏡像組件,唯一鏡像組件標(biāo)識(shí)符被從給定系統(tǒng) 的桌面管理接口 (DMI)取回并且與VSMS中的項(xiàng)目信息匹配。該操作模 式的價(jià)值在于工程師僅需要幾秒鐘的工程時(shí)間來(lái)下載鏡像。平均工程時(shí)間 的減少(尤其在無(wú)人看管模式中)是MINDS v2的重要好處。因此,每年 可以節(jié)省數(shù)百個(gè)工程人員小時(shí)。另外,由于總的鏡像時(shí)間也減少了,因此 可更快地用于測(cè)試,這等同于實(shí)際的節(jié)省。對(duì)系統(tǒng)進(jìn)行鏡像的復(fù)雜過程不斷地改變,MINDS v2考慮了這種事實(shí)
      而設(shè)計(jì)。代碼被以可以快速和可靠地實(shí)現(xiàn)變化的方式構(gòu)建。通常,改變將
      要下載的鏡像組和配置的混合不需要重新編譯MINDS代碼。另外, MINDS的設(shè)計(jì)是相當(dāng)靈活的,允許快速變化和維護(hù)。
      在較早的MINDS vl的使用過程中發(fā)現(xiàn),鏡像過程連續(xù)展開并且要求 鏡像下載程序中的頻繁的軟件變化,以支持新的系統(tǒng)和新的系統(tǒng)配置變化 或選項(xiàng)。應(yīng)該知道,如果需要任何新的基礎(chǔ)鏡像,例如與新硬件相關(guān)聯(lián)的 新基礎(chǔ)鏡像,或者任何新軟件變得對(duì)于系統(tǒng)可用,則在許多情況下必須改 變MINDS功能。因此,MINDS v2的設(shè)計(jì)目的是要使得這種維護(hù)簡(jiǎn)單和快 速并且可靠。
      MINDS v2中的一個(gè)基本概念是動(dòng)作和動(dòng)作樹的概念。動(dòng)作是執(zhí)行一 個(gè)任務(wù)的功能上獨(dú)立的代碼段,所述任務(wù)例如是對(duì)硬盤驅(qū)動(dòng)器進(jìn)行分區(qū)、 提示用戶進(jìn)行某個(gè)輸入或者讀取DMI。由于每個(gè)動(dòng)作都優(yōu)選地執(zhí)行單個(gè)任 務(wù)(即,或者較次優(yōu)選地是密切相關(guān)元素的集合),因此每個(gè)動(dòng)作的行為 都與其他動(dòng)作分開并且它們之間的耦合被最小化。讓動(dòng)作執(zhí)行極小的操作 可以提供耦合的顯著減小,這是現(xiàn)代軟件工程的關(guān)鍵目的。
      圖4通過示例實(shí)施例示出了一組動(dòng)作的類層次70。動(dòng)作優(yōu)選地都從杣 象基本類得出,該抽象基本類在這里稱為AbstractAction (抽象動(dòng)作)72。 通過使用抽象基本類,存在所有動(dòng)作共用的最小組的行為。這些在 AbstractAction中定義的共用功能是純虛擬功能,所以動(dòng)態(tài)綁定被執(zhí)行以選 擇適當(dāng)?shù)墓δ軄?lái)執(zhí)行。動(dòng)作也可以從提供許多優(yōu)點(diǎn)的其他動(dòng)作得出。首 先,通過從其他動(dòng)作中得出動(dòng)作,可以改變功能而不改變父動(dòng)作,從而隔 離變化并且促進(jìn)很好地策劃的軟件維護(hù)。另外,動(dòng)作的層次可以被創(chuàng)建為 使得一組動(dòng)作所共用的功能可以被封裝在一個(gè)動(dòng)作或抽象基本類動(dòng)作中。
      抽象動(dòng)作類的繼承方面是動(dòng)作的分區(qū)HD類74、 GetModules動(dòng)作類 76和動(dòng)作的GetDMI類78。分區(qū)動(dòng)作類74被配置用于執(zhí)行HD清理和分 區(qū)操作。GetModules動(dòng)作類76獲得給定系統(tǒng)的所有模塊的所有版本。 GetDMI動(dòng)作類78讀取寫入系統(tǒng)的DMI 。所示出的另外的動(dòng)作類 GetSKUModules 80從GetModules類76得出,用于獲得給定系統(tǒng)的當(dāng)前分
      19配版本的模塊。應(yīng)該知道,僅通過示例示出上述動(dòng)作類,可以在層次內(nèi)定 義任何希望數(shù)目的類而不脫離這里的教導(dǎo)。取決于動(dòng)作共用什么樣的元素 以及編程者希望利用該繼承的程度,類層次可以被定義為數(shù)層或者許多層。
      圖5通過示例示出了將MINDS可執(zhí)行文件90分層為最上面的GUI層 92、中間的管理層94和低級(jí)別的動(dòng)作層96,這些層具有動(dòng)作庫(kù)、動(dòng)作樹 和動(dòng)作。因?yàn)橥ㄟ^層之間的接口來(lái)控制交互,所以將MINDS分區(qū)為這些 不同的層可以提供許多好處,而變化通常與進(jìn)一歩降低風(fēng)險(xiǎn)和提高可靠性 的一層隔離。本領(lǐng)域普通技術(shù)人員將會(huì)認(rèn)識(shí)到,系統(tǒng)可以被分區(qū)為任何希 望數(shù)目的層而不脫離本發(fā)明的教導(dǎo)。
      應(yīng)該知道,GUI層92在較次優(yōu)選的情況下是可選的,其功能被外部 提供給MINDS系統(tǒng)或者從單獨(dú)的動(dòng)作內(nèi)提供。該實(shí)施例示出了 GUI的組 件包括狀態(tài)窗口 GUI 98、主菜單GUI 100和動(dòng)作"n" GUI 102。 GUI層 92與管理器層94相關(guān)聯(lián),然而其也可以耦合到其他可執(zhí)行文件以提供系 統(tǒng)的嚴(yán)格鏡像與其他相關(guān)操作之間的協(xié)作。
      GUI層92和管理層94之間的所示出的動(dòng)作例示為用戶通過狀態(tài)窗口 控制管理器104和在框106處接收用戶輸入。
      中間層是管理層94,其包含管理器本身、動(dòng)作庫(kù)和動(dòng)作樹。管理器是 直接或間接控制MINDS系統(tǒng)的所有其他部件(包括動(dòng)作、動(dòng)作樹、動(dòng)作 樹中的節(jié)點(diǎn)和動(dòng)作庫(kù))的可執(zhí)行文件。管理器具有動(dòng)作樹的實(shí)例,該動(dòng)作 樹由動(dòng)作庫(kù)應(yīng)要求而從可編輯的文本文件創(chuàng)建。
      管理器控制動(dòng)作在動(dòng)作樹內(nèi)的排序并且將此與用戶交互關(guān)聯(lián)。當(dāng)動(dòng)作 成功地完成時(shí),其向管理器發(fā)送信號(hào)告知該情況。在這種方式下,管理器 可以確定是否已到達(dá)動(dòng)作樹的葉(leaf)、是否存在要執(zhí)行的動(dòng)作或者是 否動(dòng)作樹已完成執(zhí)行。如果仍然存在耍執(zhí)行的動(dòng)作,則管理器通常向樹發(fā) 回信號(hào)以執(zhí)行下一個(gè)動(dòng)作。在動(dòng)作被告知由管理器進(jìn)行時(shí),管理器將等待 動(dòng)作己完成的信號(hào)。
      管理器94的示例實(shí)施例被示出為具有動(dòng)作管理器例行程序108,其既 可以控制動(dòng)作樹的建立,又可以控制動(dòng)作樹的執(zhí)行。動(dòng)作樹的建立被示出為每個(gè)框110從動(dòng)作庫(kù)112內(nèi)的動(dòng)作形成動(dòng)作樹114以供執(zhí)行。動(dòng)作樹的 執(zhí)行被示出為從框116開始,其中管理器被針對(duì)給定的樹而初始化并且執(zhí)
      行被建立為每個(gè)框118的動(dòng)作樹。如框120所確定的,只要剩下動(dòng)作樹的 至少一個(gè)節(jié)點(diǎn),則動(dòng)作被選擇為每個(gè)框122并且每個(gè)節(jié)點(diǎn)執(zhí)行其代碼駐留 在動(dòng)作層96中的單個(gè)動(dòng)作。管理器也被示出為通過用戶輸入框132將用 戶接口層GUI92與動(dòng)作相連,所述動(dòng)作被描述為框130處的動(dòng)作n。
      最低層是動(dòng)作層96,其包含被描述為動(dòng)作Alpha 126、 Bravo 128…至 動(dòng)作"n" 130的預(yù)編譯動(dòng)作。應(yīng)該知道,動(dòng)作層96內(nèi)的每個(gè)動(dòng)作優(yōu)選地 包括單個(gè)(極小的)動(dòng)作。動(dòng)作樹具有一個(gè)或多個(gè)節(jié)點(diǎn),動(dòng)作樹中的每個(gè) 節(jié)點(diǎn)指向一個(gè)動(dòng)作實(shí)例。應(yīng)該記住,每個(gè)分開的動(dòng)作也可以具有其自己的 GUI。這些各種GUI優(yōu)選地向用戶提供接口以與MINDS系統(tǒng)通信。
      圖6示出了適合圖5所述的分層結(jié)構(gòu)的模塊140的示例。在這里被稱 為MINDS2x.exe 142的MINDS可執(zhí)行文件包含管理層的代碼。應(yīng)該容易 地知道,不必針對(duì)每個(gè)新建立的操作來(lái)修改該代碼。在這里被稱為 ActionLibrary.dll 144的動(dòng)作庫(kù)包含動(dòng)作庫(kù)、動(dòng)作樹以及動(dòng)作樹節(jié)點(diǎn)類。動(dòng) 作類中的一組可用動(dòng)作在Actions.dll 146中描述。在整個(gè)MINDS系統(tǒng)中使 用的設(shè)置類和庫(kù)在這里被稱為MindsCom.dll 148,其與ActionLibrary.dll 144和Actions.dll 146兩者相關(guān)聯(lián)。用于控制已產(chǎn)生的程序線程的活動(dòng)的線 程類在MindsThreads.dll 150中描述。與SMS系統(tǒng)和鏡像配置數(shù)據(jù)庫(kù)交互 所必需的類被描述為Minds2.dll 152,其被示出為將Actions.dll 146與 MindsThreads.dll 150相關(guān)聯(lián)。
      圖7示出了管理器層如何控制動(dòng)作160,例如請(qǐng)求動(dòng)作被進(jìn)行并且在 動(dòng)作完成時(shí)被通知。管理器在框162處執(zhí)行并且在框164處進(jìn)行樹中的下 一個(gè)動(dòng)作。請(qǐng)求可以被傳遞到另外的樹節(jié)點(diǎn),如開始進(jìn)行框168所示的動(dòng) 作X的每個(gè)框166??梢詾閯?dòng)作創(chuàng)建線程,如每個(gè)框170,以改善用戶接 口的響應(yīng)性,這尤其適合于資源或時(shí)間密集的活動(dòng)(例如,在網(wǎng)絡(luò)和硬盤 驅(qū)動(dòng)器之間下載/上載文件等)。線程的完成被描述為動(dòng)作X完成。來(lái)自 動(dòng)作的嚴(yán)重錯(cuò)誤被示出為導(dǎo)致返回到管理器。返回到管理器優(yōu)選地通過將 消息傳遞給管理器而執(zhí)行。事實(shí)上,根據(jù)一個(gè)實(shí)施例,每個(gè)執(zhí)行中的動(dòng)作都將消息傳遞回管理器(通知消息從框168傳遞到框162)以將成功的完 成或者具體失效通知給管理器。在接收到嚴(yán)重失效消息之后,管理器確定
      程序不能繼續(xù)并且停止處理動(dòng)作樹內(nèi)的進(jìn)一步動(dòng)作。如圖12所示,可以
      針對(duì)錯(cuò)誤消息顯示對(duì)話框,其允許用戶選擇管理器應(yīng)該如所推薦的那樣完 全停止還是不管警告而繼續(xù)。
      由上面的圖可見,多線程是MINDS所利用的另一個(gè)軟件工程概念。 如果動(dòng)作將要執(zhí)行密集型任務(wù),例如下載基礎(chǔ)鏡像,則線程被載入以執(zhí)行 該密集型任務(wù)。通過載入分開的線程,動(dòng)作可以自由地響應(yīng)于其他請(qǐng)求。 在該實(shí)施例中,MINDS不使用動(dòng)作的多線程,而是異步地執(zhí)行動(dòng)作。在 MINDS內(nèi)執(zhí)行"多線程"的原則性目的是用于用戶經(jīng)歷的好處,其中系 統(tǒng)更多地響應(yīng)于用戶。在MINDS執(zhí)行諸如用一個(gè)線程從網(wǎng)絡(luò)復(fù)制文件之 類的動(dòng)作期間,用戶仍然可以查看狀態(tài)信息并且開始或停止該過程,因?yàn)?這使用另一個(gè)線程。相反,如果MINDS僅使用了單個(gè)線程,則當(dāng)從網(wǎng)絡(luò) 復(fù)制文件時(shí),整個(gè)程序和監(jiān)控器顯示將被鎖定并且不允許任何用戶交互或 進(jìn)行顯示。當(dāng)線程完成時(shí),消息被發(fā)送回管理器,向其通知線程已完成。 最終結(jié)果是系統(tǒng)對(duì)條件更具響應(yīng)性。但是應(yīng)該知道,可以利用真正的多線 程、多任務(wù)、中斷或者本領(lǐng)域普通技術(shù)人員已知的其他機(jī)制來(lái)獲得用戶動(dòng)
      動(dòng)作實(shí)例被分組成稱為動(dòng)作樹的邏輯樹。MINDS中的特定操作模式 對(duì)應(yīng)于不同的動(dòng)作樹。這意味著特定的鏡像過程變成分開的動(dòng)作樹或者變 成經(jīng)過動(dòng)作樹的具體路徑。用戶從MINDS的執(zhí)行開始時(shí)所出現(xiàn)的主菜單 中選擇執(zhí)行哪個(gè)操作模式。如果在給定的時(shí)間段(例如三分鐘)內(nèi)未作出 選擇,則執(zhí)行缺省操作模式。缺省的通常是無(wú)人看管模式,其允許重復(fù)地 執(zhí)行共用操作。
      圖8示出了被組織成動(dòng)作樹180的動(dòng)作的示例??捎玫膭?dòng)作由動(dòng)作 Alpha 182至Echo 190表示,然而任何數(shù)目的動(dòng)作是可用的(通常多于五 個(gè)動(dòng)作)。因?yàn)檫@些是動(dòng)作庫(kù)中可用的動(dòng)作,所以在圖的上面部分所示出 的可用動(dòng)作用虛線描述。圖的下面部分描述了根據(jù)本發(fā)明從庫(kù)中已鏈接到 可執(zhí)行的動(dòng)作樹中的動(dòng)作。在該示例中,動(dòng)作樹具有動(dòng)作Charlie 186作為其基礎(chǔ),并且分裂為第一分支和第二分支,第一分支在終止之前具有動(dòng)作
      Bravo 184和動(dòng)作Alpha 182,第二分支具有動(dòng)作Echo 190,接著是動(dòng)作 Charlie 186,然后動(dòng)作Charlie 186被形成分支為動(dòng)作Alpha 182或者動(dòng)作 Delta 188。應(yīng)該知道,因?yàn)閯?dòng)作庫(kù)中的動(dòng)作的代碼是可重新進(jìn)入的(盡管 可以支持諸如用于具體功能的不可重新進(jìn)入的動(dòng)作),所以每個(gè)動(dòng)作都可 以被實(shí)例化任何希望的次數(shù)。
      動(dòng)作樹中的每個(gè)動(dòng)作都指定其在動(dòng)作樹中可以具有的子動(dòng)作的確切數(shù) 目。這些子動(dòng)作被排序并且被分配序號(hào)。當(dāng)動(dòng)作完成時(shí),進(jìn)行詢問以確定 接下來(lái)應(yīng)該進(jìn)行哪個(gè)子動(dòng)作或者兄弟動(dòng)作。用說出接下來(lái)進(jìn)行哪個(gè)動(dòng)作的 響應(yīng)來(lái)答復(fù)該詢問。應(yīng)該注意,在優(yōu)選實(shí)施例中,動(dòng)作不指定接下來(lái)進(jìn)行 的具體動(dòng)作,而是僅指定哪個(gè)號(hào)碼,其中動(dòng)作保持彼此獨(dú)立。
      例如,考慮其中存在消息框的情況,所述消息框是具有是和否這兩個(gè) 按鈕的對(duì)話。點(diǎn)擊這兩個(gè)按鈕中的一個(gè)使得動(dòng)作完成。當(dāng)動(dòng)作樹詢問已完 成關(guān)于接下來(lái)進(jìn)行哪個(gè)子動(dòng)作的消息框時(shí),其在點(diǎn)擊了是的情況下用"進(jìn) 行子動(dòng)作1"來(lái)答復(fù),或者在點(diǎn)擊了否的情況下用"進(jìn)行子動(dòng)作2"來(lái)答 復(fù)。動(dòng)作不用"接下來(lái)進(jìn)行模塊復(fù)制動(dòng)作"來(lái)答復(fù)。結(jié)果,因?yàn)樵趧?dòng)作樹 的特定層次中沒有一組排序或者綁定的某些動(dòng)作在一起,所以任何動(dòng)作都 可以被指定為任何其他動(dòng)作的子動(dòng)作。將會(huì)了解到,動(dòng)作樹本身包含對(duì)具 體動(dòng)作的所有引用,而動(dòng)作中的每個(gè)都以"通配"的方式向后響應(yīng)于管理 器,在上面的示例中,提供被解釋為與動(dòng)作樹和其中所定義的指針有關(guān)的 號(hào)碼。
      雖然每個(gè)動(dòng)作都獨(dú)立于其他動(dòng)作,但是動(dòng)作進(jìn)行通信以在動(dòng)作之間中 繼信息,例如用戶輸入。例如, 一個(gè)動(dòng)作可以詢問用戶他們?cè)敢鈱⒛男┠?塊用于客制化(CTO)鏡像。用戶的響應(yīng)必須稍后傳送給對(duì)模塊進(jìn)行復(fù)制 的動(dòng)作。根據(jù)一個(gè)實(shí)施例,提供這種通信的解決方案是通過MINDS設(shè)置 類。該設(shè)置類是所有可能必須從一個(gè)類中繼到另一個(gè)的信息的容器。動(dòng)作 樹在其運(yùn)行時(shí)將MINDS設(shè)置類傳遞給每個(gè)動(dòng)作。
      圖9示出了動(dòng)作樹200的示例,該示例示出了簡(jiǎn)單的父子樹格式的動(dòng) 作流程???02處的指向根的指針連接到動(dòng)作Alpha 204,動(dòng)作Alpha 204
      23具有四個(gè)子動(dòng)作Bravo 206、 Charlie 208、 Delta 210和Echo 212。子動(dòng)作的 選擇取決于DMI值、用戶輸入等等??梢詮拿總€(gè)父順序地執(zhí)行其他動(dòng)作, 如作為Bravo 206的子動(dòng)作而執(zhí)行的動(dòng)作Foxtrot 214和Golf 216所示。類 似地,動(dòng)作Hotel 218、 India 220、 Juliet 222和Kilo 224耦合到各自的父節(jié) 點(diǎn)。但是應(yīng)該認(rèn)識(shí)到,所示的父子關(guān)系具有缺點(diǎn),例如為每個(gè)動(dòng)作預(yù)留多 少個(gè)指針以及如何可以在樹中執(zhí)行遞歸。在該示例中,每個(gè)動(dòng)作都具有其 可以在動(dòng)作樹中具有的設(shè)定數(shù)目的子動(dòng)作,并且該數(shù)目不可改變。因而存 在能夠定義邏輯上不正確的樹的問題,例如沒有分配給每個(gè)動(dòng)作的子動(dòng)作 的適當(dāng)數(shù)目的問題。如果MINDS使用邏輯上不正確的樹,則動(dòng)作樹的節(jié) 可能永遠(yuǎn)不會(huì)到達(dá),或者更糟,某些節(jié)點(diǎn)可能指定下一個(gè)進(jìn)行的動(dòng)作是不 存在的動(dòng)作,其中可能發(fā)生崩潰。
      圖10示出了動(dòng)作樹的優(yōu)選實(shí)施例,其中動(dòng)作樹被以已知的第一子-下 一兄弟方法內(nèi)部地表示。每個(gè)動(dòng)作樹節(jié)點(diǎn)都配置有指向子動(dòng)作(如果不存 在則為空)和指向兄弟動(dòng)作(如果不存在則為空)的指針。在該實(shí)現(xiàn)方式 中,樹中的每個(gè)節(jié)點(diǎn)都有兩個(gè)指針 一個(gè)指向其第一子,另一個(gè)指向其下 一個(gè)兄弟,其中僅需要少量固定數(shù)目的指針。在優(yōu)選實(shí)施例中,諸如利用 堆棧之類的歷史機(jī)制相對(duì)于使用父指針提供許多好處。子-下一兄弟實(shí)現(xiàn)方 式提供數(shù)個(gè)優(yōu)點(diǎn),包括動(dòng)作樹存儲(chǔ)器的守恒,這是因?yàn)槊總€(gè)節(jié)點(diǎn)僅需要兩 個(gè)指針。另一個(gè)優(yōu)點(diǎn)是通過樹來(lái)導(dǎo)航路徑是簡(jiǎn)單的過程,如同通過遞歸對(duì) 樹進(jìn)行游歷。審視圖10可以看出,相同的通用結(jié)構(gòu)被表示,但是,該程 序可以確定移動(dòng)是縱向的還是橫向的。
      這些動(dòng)作樹被存儲(chǔ)在MINDS在運(yùn)行時(shí)間所讀取的文本文件中。應(yīng)該 認(rèn)識(shí)到,樹包含指向動(dòng)作和其他樹節(jié)點(diǎn)的"指針",而動(dòng)作本身和管理層 本身這兩者都不直接引用動(dòng)作。通過將各種樹存儲(chǔ)在這些文件中,樹的內(nèi) 容和排序可以被改變而不需要重新編譯任何代碼。只要?jiǎng)幼鞯墓δ懿皇潜?須被修改,這就允許對(duì)MINDS作出快速變化。有選擇在執(zhí)行之前對(duì)所組 裝的樹檢查邏輯的正確性,其中邏輯上不正確的樹被優(yōu)選地禁止。
      圖IIA至圖llE示出了子-兄弟樹的游歷230。在圖IIA中,利用開 始于動(dòng)作Alpha 234的執(zhí)行指針236來(lái)游歷樹,棧頂(TOS)包含指向動(dòng)作Alpha的指針238。在圖11B中,執(zhí)行從Alpha進(jìn)行到Charlie,其中執(zhí) 行指針236現(xiàn)在指向動(dòng)作Charlie 246,堆棧包含Alpha指針238和棧頂 (TOS)上的Charlie指針252。在圖11C中,執(zhí)行指針236在動(dòng)作Foxtrot 248處,動(dòng)作Foxtrot 248的指針在TOS上。在該示例中,向用戶提供己執(zhí) 行的動(dòng)作列表和他們可以從其選擇返回任何在前的動(dòng)作步驟的歷史列表。 在圖11D中,用戶選擇了返回到動(dòng)作Alpha 234,其中堆棧Foxtrot指針 254和堆棧Charlie指針252從堆棧中出棧并且執(zhí)行指針236從堆棧中重新 加載,產(chǎn)生圖11E,其中動(dòng)作Alpha的執(zhí)行重新開始。
      將會(huì)認(rèn)識(shí)到,動(dòng)作樹節(jié)點(diǎn)優(yōu)選地不包含沿著樹"向上"至父節(jié)點(diǎn)的指 針。利用如上所述的堆棧機(jī)制來(lái)提供向后沿著樹至先前執(zhí)行的動(dòng)作的移 動(dòng)。堆棧包含動(dòng)作的名稱和指向該特定動(dòng)作的該實(shí)例的指針,將會(huì)記住的 是動(dòng)作可以具有給定動(dòng)作樹內(nèi)的許多實(shí)例。當(dāng)前的動(dòng)作總是在棧頂,并且 這些指針可以從堆棧中出棧以返回到任何在前的動(dòng)作。堆棧機(jī)制的另外好 處在于用戶可以返回到任何在前的動(dòng)作歩驟,而保持當(dāng)?shù)竭_(dá)該步驟時(shí)所存 在的參數(shù)和配置,這是因?yàn)樵摂?shù)據(jù)可以作為歷史的--部分而保持在堆棧 中。
      當(dāng)對(duì)新的動(dòng)作進(jìn)行編碼時(shí),根據(jù)該示例實(shí)施例,許多步驟必須被執(zhí) 行,盡管其他實(shí)施例可能不必執(zhí)行這些歩驟。在該示例實(shí)施例中, Start() 、 SetNumChoices()和Terminate()都應(yīng)該是所得出的類中的虛擬函 數(shù)。在這種方式下,發(fā)生動(dòng)態(tài)綁定并且在運(yùn)行時(shí)間執(zhí)行所希望的代碼。下 面是用于增加新的動(dòng)作到MINDS中的基本過程。
      (1) 檢査以確定Minds2x工作空間開放。
      (2) 使"動(dòng)作"成為活動(dòng)項(xiàng)目(項(xiàng)目l設(shè)定活動(dòng)項(xiàng)目l動(dòng)作)。
      (3) 在字符串表中增加字符串,該字符串是樹文件中所指定的該動(dòng) 作的名稱。也向字符串表增加顯示名稱的字符串,或者作為該動(dòng)作的 描述而向用戶示出的內(nèi)容。優(yōu)選地,提供兩種描述, 一種以現(xiàn)在時(shí)寫 入, 一種以過去時(shí)寫入。確定在構(gòu)建器中條用SetDisplayName()以將 所顯示的名稱設(shè)定為新創(chuàng)建的字符串。
      (4) 如果創(chuàng)建需要用戶接口的動(dòng)作,則進(jìn)行如下過程
      25(A) 創(chuàng)建要使用的對(duì)話并且將ID設(shè)定為所希望的對(duì)話ID (每個(gè)
      所創(chuàng)建的對(duì)話資源都具有唯一ID)。
      (B) 從剛才創(chuàng)建的對(duì)話的ID中創(chuàng)建從CDialog所得出的新的類。
      (C) 為剛才創(chuàng)建的類打開頭文件并且將"AbstractAction.h"增加
      到包括文件中。
      (D) 在頭文件中,添力口 ", public Abstract Action "到聲明類中。 示例類"UIAction : public CDialog"變成"UIAction " public CDialog, public AbstractAction"。
      (E) 在構(gòu)建器中增加"Create(IDD, pParent);"以使得模塊對(duì)話被 創(chuàng)建。
      (F) 實(shí)現(xiàn)Finished()以消滅窗口并調(diào)用AbstractAction::Finished。 如果創(chuàng)建不需要用戶接口的動(dòng)作,則其被從AbstractAction中得出。
      (5) 在新創(chuàng)建的動(dòng)作的頭文件中,將"resource.h"增加到包括文件 中。
      (6) 實(shí)現(xiàn)以下來(lái)自AbstractAction的純虛擬函數(shù)Start(), Terminate() 禾卩SetN畫Choices()。
      (7) 在構(gòu)建器中,向SetNumChoices增加調(diào)用。(與第一號(hào)碼為0 的基于0的情況相比,這是基于l的情況,其中第一號(hào)碼是l)。
      (8) 在構(gòu)建器中,從增加到字符串表中的字符串設(shè)定顯示名稱(歷 史操作和當(dāng)前操作)。
      (9) 檢査以確定在動(dòng)作完成時(shí)設(shè)定iSelectedChoice (這是零基)。這 可以通過為該類實(shí)現(xiàn)Finish()并且將其設(shè)定為在那里或者別的地方而 執(zhí)行。
      (10) 如果動(dòng)作也從CDialog得出,則在窗口被消滅或創(chuàng)建的情況下 需要留意,這是因?yàn)樗械膭?dòng)作都具有被調(diào)用多于一次的可能性。這 可以通過增加布爾類型的專用成員變量并且在窗口被創(chuàng)建或者消滅時(shí) 對(duì)其進(jìn)行設(shè)定。然后,在構(gòu)建器中設(shè)定該變量并且在Start()、 Terminate()和DestroyWindow()中執(zhí)行設(shè)定/檢查。(11)動(dòng)作被增加到動(dòng)作列表中。為此,執(zhí)行以下過程
      (A) 打開"ListOfActions.h"。
      (B) 為新創(chuàng)建的類增加包括。
      (C) 在ListOfActions.cpp中的AllocateAction::Create (LPCTSTR sName)中,增加一節(jié)以使其創(chuàng)建新的動(dòng)作。對(duì)于示例動(dòng)作
      "NewAction",將增加以下代碼
      sCheck丄oadString(IDS—NEWACTION); if(cCheck.CompareNoCase(sName)==0) return new NewAction;
      如果動(dòng)作將要執(zhí)行密集型功能,例如產(chǎn)生CRC或者位塊傳送,則密 集型動(dòng)作應(yīng)該被作為新的線程而載入。在這種情況下,不應(yīng)該利用 WaitForSmgleObject0,這是由于其將因?yàn)閼?yīng)用程序線程在花費(fèi)其吋間等待 并且不能響應(yīng)于其他事件而使得MINDS看起來(lái)是掛起的。相反,該線程 應(yīng)該在動(dòng)作完成時(shí)向其傳遞回消息,以使得在等待線程執(zhí)行的完成期間, 其他消息可以被處理。
      當(dāng)操作模式被選擇時(shí),指定動(dòng)作樹得到相應(yīng)文本文件被傳遞給動(dòng)作 庫(kù)。庫(kù)檢查以確認(rèn)樹邏輯上正確,如果不正確,則MINDS顯示錯(cuò)誤并退 出。如果樹邏輯上正確,則動(dòng)作庫(kù)通過動(dòng)態(tài)地分配動(dòng)作樹的組件而創(chuàng)建動(dòng) 作樹。結(jié)果,動(dòng)作庫(kù)不僅確保樹邏輯上正確,而且還優(yōu)選地負(fù)責(zé)構(gòu)成動(dòng)作 樹的組件的分配和解除分配。因此,在運(yùn)行時(shí)間動(dòng)態(tài)地創(chuàng)建了 MINDS所 使用的許多動(dòng)作樹。
      系統(tǒng)在建立動(dòng)作樹期間以及在執(zhí)行期間提供許多檢查。雖然諸如警告 之類的不嚴(yán)重錯(cuò)誤被傳送給用戶,但是執(zhí)行卻繼續(xù)。嚴(yán)重錯(cuò)誤被定義為在 動(dòng)作進(jìn)行時(shí)發(fā)生的防止動(dòng)作成功完成其任務(wù)的錯(cuò)誤。
      圖12描述了示例嚴(yán)重錯(cuò)誤消息框260,其例如將被在遇到嚴(yán)重錯(cuò)誤時(shí)
      顯示。該動(dòng)作顯示詳述錯(cuò)誤的消息框,然后完成其執(zhí)行并且向動(dòng)作樹發(fā)送 信號(hào)告知發(fā)生了嚴(yán)重錯(cuò)誤。然后,動(dòng)作樹向管理器傳遞回消息,告知?jiǎng)幼?已完成運(yùn)行并且發(fā)生了嚴(yán)重錯(cuò)誤。然后通過消息框告知用戶遇到了嚴(yán)重錯(cuò) 誤。在這點(diǎn)上,用戶可以選擇重試動(dòng)作、忽略錯(cuò)誤或者中止動(dòng)作樹的執(zhí)行。
      為了使用根據(jù)本發(fā)明一實(shí)施例的MINDS系統(tǒng),用戶將系統(tǒng)通電并且 例如從MINDS啟動(dòng)CD將其啟動(dòng)。MINDS啟動(dòng)CD優(yōu)選地啟動(dòng)至包含在 該CD中的WinPE操作系統(tǒng)(或者任何其他希望的OS)。在用戶提供所 有必要的輸入之后,鏡像處理開始。在這點(diǎn)上,由于不需要更多的用戶輸 入,因此在所選擇的鏡像處理被執(zhí)行期間,工程師/技術(shù)員或者其他用戶不 必留在系統(tǒng)處并且可以離開去進(jìn)行其他活動(dòng)。當(dāng)鏡像處理開始時(shí),硬盤驅(qū) 動(dòng)器被配置并且必要的文件被加載到系統(tǒng)上。然后系統(tǒng)重新啟動(dòng)并且啟動(dòng) 至最近加載到硬盤驅(qū)動(dòng)器上的操作系統(tǒng)。然后,MINDS安裝模塊、清理 系統(tǒng)并且關(guān)閉。在關(guān)閉之后,系統(tǒng)被完全鏡像并且準(zhǔn)備使用。
      為了確保用戶被真正地釋放去執(zhí)行其他任務(wù),系統(tǒng)的一個(gè)可選方面提 供用戶用于通過公司網(wǎng)絡(luò)在給定PC上檢查鏡像處理的狀態(tài)的機(jī)制,其中 用戶不必親自返回去確定鏡像處理是否已被成功完成或者確定出現(xiàn)了致命 錯(cuò)誤?;蛘?,MINDS可以響應(yīng)于鏡像錯(cuò)誤或者鏡像完成而自治地向用戶 產(chǎn)生消息,例如電子郵件消息。
      應(yīng)該注意,當(dāng)MINDS在WinPE下操作時(shí),以.NET所^的程序和 Visual Basic 6.0下的程序?qū)⒉粫?huì)運(yùn)行。結(jié)果,MINDS以Microsoft Visual C++ 6.0 Service Pack 6編碼。0++語(yǔ)言的使用也提供了實(shí)現(xiàn)MINDS v2的
      設(shè)計(jì)所必需面向?qū)ο蟮木幊烫卣鳌?br> MINDS的復(fù)雜源代碼被劃分,例如,當(dāng)前所描述的實(shí)施例的實(shí)現(xiàn)方 式涉及超過二百五十(250)個(gè)文件。為了隔離變化并且使源代碼更容易 管理,這些源代碼文件被封裝成六個(gè)項(xiàng)目,每個(gè)項(xiàng)目等于一個(gè)可執(zhí)行文件 或者動(dòng)態(tài)鏈接庫(kù)(DLL)。將代碼分成六個(gè)項(xiàng)目具有允許代碼被更加快速 地編譯的所增加的好處,這是因?yàn)楫?dāng)作出變化時(shí),通常僅必須編譯一個(gè)項(xiàng) 目。
      軟件工程的典型生命期范例在過去被用于MINDS。因此,MINDS的
      整個(gè)設(shè)計(jì)在任何編碼開始之前被形成文檔。這允許在進(jìn)行任何編碼之前識(shí) 別并改正設(shè)計(jì)缺陷。另一個(gè)好處在于因?yàn)樗械脑O(shè)計(jì)問題都己經(jīng)在設(shè)計(jì)階 段解決,所以寫MINDS的代碼是快速的過程。
      28根據(jù)本發(fā)明一實(shí)施例,存在用戶與其交互的數(shù)個(gè)GUI。管理器GUI總
      是存在并且允許用戶控制MINDS。管理器是允許用戶暫停鏡像過程或者 回到先前步驟的GUI,這在更早的MINDS或者其他鏡像系統(tǒng)中是不可能 的。另外,用戶可以打開命令提示窗口、查看MINDS設(shè)置類的內(nèi)容或者 查看用戶指南。還應(yīng)該知道,單獨(dú)的動(dòng)作也可以具有GUI。
      通過示例而不是限制,在當(dāng)前的系統(tǒng)實(shí)現(xiàn)方式中,存在六十九(69) 個(gè)在MINDS中可用的動(dòng)作。動(dòng)作樹從這些動(dòng)作連接在一起。操作模式通 常對(duì)應(yīng)于不同的動(dòng)作樹,并且當(dāng)載入MINDS時(shí),操作模式被從首先出現(xiàn) 的主菜單GUI中選擇。雖然存在無(wú)窮多的可能操作模式,但是實(shí)際上,僅 實(shí)現(xiàn)少數(shù)幾個(gè)操作模式。少數(shù)幾個(gè)操作模式需要用戶名稱和密碼以針對(duì)該 模式而授權(quán)用戶;這些模式被稱為受限操作模式。根據(jù)該當(dāng)前的實(shí)現(xiàn)方式 所實(shí)現(xiàn)的操作模式包含九至四十一之間的節(jié)點(diǎn),并因此包含這么多的動(dòng)作 實(shí)例。鏡像過程包含四十一個(gè)動(dòng)作的事實(shí)說明了鏡像不是簡(jiǎn)單過程的事 實(shí)。
      圖13示出了指示可以由用戶選擇的許多模式的主菜單屏幕270的示 例實(shí)施例。在上述實(shí)施例中,主菜單屏幕是在啟動(dòng)之后MINDS用戶所遇 到的第一個(gè)對(duì)話。屏幕標(biāo)題行272被示出為鄰近提供指令274的屏幕,可 選的超時(shí)指示在該情況中指示,如果在XX秒內(nèi)未作出選擇,則將會(huì)自動(dòng) 選擇無(wú)人看管模式。所示出的菜單選擇列表278允許用戶例如通過對(duì)所希 望的列表元素進(jìn)行雙擊來(lái)選擇任何所列出的模式。
      雖然在這里未示出,但是應(yīng)該知道,取決于用戶的授權(quán)級(jí)別、系統(tǒng)操 作到其上的子網(wǎng)和其他限制標(biāo)準(zhǔn),某些模式可能是不可訪問的或者甚至不 被列出。在該實(shí)施例中,需要用戶用他們的SMS (或者Sony的VSMS) 用戶名稱和密碼來(lái)登入。嘗試執(zhí)行用戶對(duì)其缺少權(quán)限動(dòng)作可能產(chǎn)生錯(cuò)誤。 或者,如果用戶無(wú)權(quán)執(zhí)行給定的動(dòng)作,則該列表項(xiàng)是不可選擇的并且被優(yōu) 選地顯示為指示該事實(shí),例如以模糊的輪廓、陰影顯示或者根本不顯示。
      應(yīng)該知道,MINDS可以支持任何數(shù)目的鏡像操作模式,包括通過示 例而不是限制在圖中所示出的模式。(1)無(wú)人看管模式——這是MINDS v2的缺省操作模式,其在用戶未在開始的三分鐘內(nèi)作出可替換的選擇的情況下運(yùn)行。在該模式中,用由給定系統(tǒng)的DMI在VSMS中所識(shí)別的組件 來(lái)鏡像系統(tǒng)。(2)工廠模式——這除了使用工廠數(shù)據(jù)源而不是VSMS之 外,類似于無(wú)人看管模式。(3) SKU選擇——該模式允許用戶基于所選 擇的項(xiàng)目而挑選組件。(4)高級(jí)模式一一除了用戶被給予更多的選項(xiàng)
      (包括選擇一些組件的更舊版本的能力)之外類似于SKU選擇。該模式 為用戶提供所有操作模式的最多定制。(5)自由式下載一一允許用戶下 載基礎(chǔ)鏡像到系統(tǒng)上而不執(zhí)行整個(gè)鏡像過程的受限操作模式。(6)單體
      (monol他ic)鏡像下載——類似于SKU選擇的受限操作模式,其允許用 戶對(duì)鏡像過程進(jìn)行更多的控制。(7)上載鏡像一一允許基礎(chǔ)鏡像被從系 統(tǒng)中捕獲并且被上載到鏡像存儲(chǔ)服務(wù)器的受限操作模式。在進(jìn)行上載之 前,鏡像被清理并且鏡像標(biāo)識(shí)符被設(shè)定。(8)自由式上載一一這是允許 鏡像被上載到局域網(wǎng)上的任何地方的受限操作模式。這些鏡像與用上載鏡 像模式上載到服務(wù)器的鏡像不同,是不變的。(9)創(chuàng)建Mcode軟盤—— 該模式允許用戶創(chuàng)建Mcode軟盤,這些軟盤寫入系統(tǒng)的DMI。應(yīng)該知 道,可以執(zhí)行其他模式以創(chuàng)建任何與希望的鏡像有關(guān)的功能。
      圖14示出了在本發(fā)明的該示例實(shí)施例中使用的狀態(tài)屏幕290。該狀態(tài) 屏幕優(yōu)選地在一旦MINDS模式被選擇時(shí)就顯示,并且只要MINDS系統(tǒng)在 操作就顯示。標(biāo)題框292被示出為在屏幕的提供一系列用戶命令選擇296-306的狀態(tài)部分之上,所述命令選擇被顯示為虛擬屏幕按鈕。"按鈕"可 以通過任何傳統(tǒng)的方法來(lái)顯示,例如根據(jù)基于窗口的GUI范例和選擇性地 使用指示設(shè)備、觸摸屏等的按鈕和其他選擇器。通常,僅可以在給定時(shí)間 進(jìn)行選擇的用戶狀態(tài)命令被示出為可選擇的,例如以淺色顯示不可選擇的 項(xiàng)或者根本不顯示。
      所示出的"退出MINDS"按鈕296允許用戶退出應(yīng)用程序并重新啟 動(dòng)系統(tǒng)。"主菜單"按鈕298允許用戶優(yōu)選地一旦暫停就丟棄當(dāng)前的活 動(dòng),并且返回主菜單以選擇另一個(gè)操作模式(或者重新開始當(dāng)前所選擇的 模式)。在該實(shí)施例中選擇主菜單會(huì)丟棄當(dāng)前在使用的數(shù)據(jù)或者將其存儲(chǔ) 起來(lái)以使得其不干擾新的模式和配置。主菜單的選擇允許MINDS系統(tǒng)從 頭開始而不需要重新啟動(dòng)。"歩驟"按鈕300允許用戶單步調(diào)試該過程的步驟,例如動(dòng)作樹內(nèi)的動(dòng)作。步驟可以僅在系統(tǒng)暫停時(shí)例如響應(yīng)于"中 斷"命令或者先前的"步驟"命令而執(zhí)行。"幫助"按鈕302可以引入用 戶可得到的關(guān)于模式和其他選擇的信息。
      "細(xì)節(jié)"按鈕304提供利用由MINDS所使用的當(dāng)前數(shù)據(jù)來(lái)打開或關(guān) 閉(即,"細(xì)節(jié)>>"用于打開并且"細(xì)節(jié)<<"用于關(guān)閉)窗口。該數(shù)據(jù)組 包括軟件組件、當(dāng)前的操作模式等等。"中斷"/ "繼續(xù)"按鈕306允許用 戶在當(dāng)前操作完成之后暫停執(zhí)行。當(dāng)系統(tǒng)執(zhí)行中斷和暫停時(shí),該按鈕顯示 "繼續(xù)"以允許用戶繼續(xù)執(zhí)行。在該實(shí)施例中,除非執(zhí)行已經(jīng)暫停,例如 通過按下"中斷"按鈕,否"主菜單"、"退出MINDS"和"歩驟"按 鈕被禁止。另外,在暫停期間,用戶可以通過選擇列表中的先前歩驟而在 過程中選擇回到任何先前步驟。
      狀態(tài)行308顯示當(dāng)前的操作模式。歷史狀態(tài)區(qū)域310顯示動(dòng)作執(zhí)行了 什么的日志,例如在假設(shè)極小的動(dòng)作的情況下為每個(gè)動(dòng)作顯示一行。極據(jù) 本發(fā)明的該實(shí)施例,列表中的最后項(xiàng)是最近所執(zhí)行的動(dòng)作。當(dāng)過程暫停 時(shí),用戶可以例如通過雙擊所希望的列表元素來(lái)選擇這些歩驟屮的任何歩 驟,以跳回到該先前歩驟。所示出的另一個(gè)狀態(tài)行312顯示動(dòng)作樹內(nèi)在被 執(zhí)行的當(dāng)前操作。
      所示出的調(diào)試屏幕314允許用戶對(duì)鏡像過程進(jìn)行另外的控制。在該示 例中,用戶可以從Ini文件中加載設(shè)置316、保存來(lái)自Ini的設(shè)置信息 318、從Pacific Ini中獲得設(shè)置信息320、清除設(shè)置322并且引入命令提示 窗口 324。
      所示出的時(shí)間狀態(tài)顯示區(qū)域326顯示當(dāng)前系統(tǒng)時(shí)間、自從MINDS開 始執(zhí)行時(shí)所過去的時(shí)間,以及可選地顯示其他時(shí)間相關(guān)的方面,例如過程 的給定步驟的時(shí)間等等。
      圖15A和圖15B示出了基本單元選擇屏幕330,其用于確定那些鏡像 將被放在一起以供當(dāng)前的鏡像下載情形使用。標(biāo)題行332被示出為在顯示 執(zhí)行的狀態(tài)顯示框334和一些列的選擇336之上。可以在選擇窗口 336中 輸入許多參數(shù)以建立基本單元,所述參數(shù)例如由組合框338-350所描述。
      當(dāng)以某些操作模式操作時(shí)必須選擇基本單元,這些操作模式例如是
      31SKU選擇、高級(jí)模式、鏡像上載和創(chuàng)建Mcode軟盤。通過示例而不是限 制,基本單元選擇取決于操作模式,這將被簡(jiǎn)要地描述。在SKU模式 中,如果當(dāng)前分配的鏡像存在于網(wǎng)絡(luò)上,則僅允許用戶為基本單元選擇 它。如果用戶嘗試選擇沒有為其找到鏡像的項(xiàng)目,則他們被給予鏡像不可 用的警告并且被指引選擇另一個(gè)鏡像。在高級(jí)模式中,用戶可以選擇任何 分配給基本單元的鏡像,只要其在網(wǎng)絡(luò)上可用。在鏡像上載模式中,允許 用戶挑選任何曾經(jīng)分配給項(xiàng)目的鏡像。由于用戶在從目標(biāo)系統(tǒng)中上載鏡 像,因此將會(huì)知道,基本單元的鏡像不必在上載之前存在于網(wǎng)絡(luò)上。在創(chuàng) 建Mcode軟盤模式中,允許用戶挑選任何曾經(jīng)分配給項(xiàng)目的鏡像。
      選擇基本單元包括在許多字段中作出選擇或者接受缺省值,對(duì)于該實(shí) 施例來(lái)說,這些字段被例示為項(xiàng)目338、基本單元型號(hào)340、 Pcode 342、 銷售類型344、組件346、 BLID 348和軟件版本350。下拉菜單被設(shè)計(jì)為 讓用戶下拉以選擇具體鏡像以供下載。因此,選擇用戶接口 (UI)開始于 具有型號(hào)/名稱(基本單元)340 (即,PCG-S260)的最高級(jí)別,并且向下 工作直到單元被充分地指定。應(yīng)該知道,這些字段的大小和組成是為本發(fā) 明的實(shí)施例描述的,其中本領(lǐng)域普通技術(shù)人員無(wú)需發(fā)明性努力就可以容易 地修改這些字段;所產(chǎn)生的實(shí)施例仍然保持在本發(fā)明的教導(dǎo)內(nèi)。
      Pcode 342是PC的子種類(即,VAIO機(jī)型),并且在該實(shí)施例中包 括四位字母數(shù)字的說明符。通過示例,對(duì)于型號(hào)PCG-S260可以存在兩個(gè) 不同的Pcode,例如用于沒有無(wú)線LAN模塊的PCG-S260的S001和用于 具有無(wú)線LAN模塊的PCG-S260的第二 Pcode S002。型號(hào)和Pcode字段都 優(yōu)選地在鏡像期間寫入BIOS的DMI區(qū)域以供使用。
      銷售類型344是可以在SMS數(shù)據(jù)庫(kù)中分配以指定每個(gè)銷售渠道的不 同軟件模塊。例如,具有零售客制化("CTO")銷售類型的PC機(jī)型相 對(duì)于具有為企業(yè)對(duì)企業(yè)("B2B")所設(shè)定的銷售類型的PC機(jī)型,可以 具有鏡像到其的完全不同的可選軟件列表。在這種情況下,銷售類型CTO 可以通過一般包含游戲和音樂軟件的電子解決方案提供給家庭用戶,而 B2B類型將為大宗商業(yè)銷售渠道提供并且可以包含生產(chǎn)率軟件。在這種方 式下,制造商可以面向具體的市場(chǎng)分段(例如家庭、企業(yè)、游戲者、多媒
      32體、CAD、服務(wù)器等等)而提供各種應(yīng)用程序。因此,不同的銷售類型可
      以進(jìn)一步精煉PC的特性,而不改變型號(hào)或者Pcode。
      組件346是內(nèi)部測(cè)試選項(xiàng)。該選項(xiàng)可以提供用于選擇為系統(tǒng)遞送什么 的信息,例如是否在軟件模塊已經(jīng)被組裝到一個(gè)完整鏡像中的情況下遞送 "整體"鏡像。"組件"的選擇一般允許諸如測(cè)試之類的部門來(lái)選擇使用
      BLID 348代表"BIOS LOCK ID",并且是識(shí)別一組用于PC機(jī)型的 具體鏡像的字符串。例如,Windows XP HE (家用版)鏡像將與Windows XP Pro (專業(yè)版)鏡像具有不同的BLID。在一些情況中,裝有XP HE的 PC可能與具有相同硬件但卻裝有MS XP Pro的PC具有不同的機(jī)型名稱或 Pcode。但是,由于在一些情況中,機(jī)型名稱和Pcode是相同的,因此該選 項(xiàng)允許制造商控制該第二種情況,尤其當(dāng)型號(hào)和分配在制造商的跨學(xué)科領(lǐng) 域上執(zhí)行時(shí)。
      BLID還優(yōu)選地用于保護(hù)所裝的鏡像以防盜版。如果用戶載入系統(tǒng)恢 復(fù)過程,并且恢復(fù)鏡像中的BLID與制造商放在BIOS的DMI節(jié)中的 BLID不匹配,則恢復(fù)過程停止并且向用戶顯示警告消息。這種安全措施 例如防止購(gòu)買了具有XP HE的PC的用戶將恢復(fù)介質(zhì)用于裝有XP Pro的相 同機(jī)型PC。
      軟件版本350允許選擇同一鏡像的不同標(biāo)準(zhǔn)。在制造商或者制造商的 部門的現(xiàn)今開發(fā)周期中,由于缺陷被改正并且更新的版本被發(fā)布,因此具 有同一鏡像的兩個(gè)或多個(gè)不同標(biāo)準(zhǔn)是罕見的。該字段優(yōu)選的缺省選擇是分 配給基本單元的最新測(cè)試版本,但是,下拉菜單允許缺省值在測(cè)試期間被 覆蓋以選擇不同的鏡像版本。
      因此,應(yīng)該認(rèn)識(shí)到,可以響應(yīng)于允許用戶設(shè)定一個(gè)或多個(gè)參數(shù)或者接 受缺省選擇而確定哪個(gè)系統(tǒng)將被MINDS系統(tǒng)下載。
      一旦條目已被選擇并且/或者被文本地輸入,基本單元屏幕就可以表現(xiàn) 為像圖15B—樣,其中提示用戶點(diǎn)擊OK按鈕以接受選擇。應(yīng)該知道,基 本單元屏幕可適應(yīng)于缺省元素選擇的任何希望的形式,而不脫離本發(fā)明的 該方面。例如,可以根據(jù)最近的活動(dòng)、使用的圖案等等而在新的屏幕中填充字段。 一旦滿足選擇,用戶就可以按下OK按鈕352以執(zhí)行基本單元的 選擇。
      圖16通過示例示出了根據(jù)本發(fā)明該實(shí)施例的模塊和開關(guān)選擇屏幕370 的示例。標(biāo)題行372被示出為在一組選擇374之上,這些選擇被描述為組 合框以及OK (提交選擇)按鈕。模塊和開關(guān)選擇僅在MINDS操作的某些 模式中必需或者允許,具體而言,這些模式是SKU模式、高級(jí)模式和創(chuàng) 建Mcode軟盤模式。如果該元素應(yīng)該包括在鏡像組中,則選擇框被選擇。 取決于基本單元的類型,因?yàn)橐恍┻x擇框是所需要的,所以它們是不可選 擇的。出現(xiàn)在一個(gè)基本單元中的項(xiàng)可能不會(huì)出現(xiàn)在其他基本單元選擇屏幕 上,這將是所期望的,因?yàn)榛締卧x擇確定可以與基礎(chǔ)一起使用的模塊 和開關(guān)的范圍。通常,在創(chuàng)建零售單元的情況下,所有的組合框都是不可 選擇的,而在高級(jí)模式和創(chuàng)建Mcode軟盤模式中,在前的版本和配置對(duì)于 用戶來(lái)說是可用的。因此,MINDS配置有將完整的材料清單(BOM)復(fù) 制到目標(biāo)系統(tǒng)的能力。
      應(yīng)該認(rèn)識(shí)到,鏡像過程是不斷地進(jìn)行的,結(jié)果,MINDS將被頻繁地 更新以與那些變化保持同歩。MINDS有吋候也被更新以容納目標(biāo)計(jì)算機(jī) 系統(tǒng)上的新特征,RAID是一個(gè)示例。在進(jìn)行這些更新時(shí)的關(guān)鍵優(yōu)先級(jí)之 一也是保持設(shè)計(jì)文檔為最新。這是現(xiàn)代化軟件工程的基本維護(hù)原則之一。
      在多數(shù)基于計(jì)算機(jī)的系統(tǒng)的開發(fā)和測(cè)試期間頻繁地執(zhí)行重新鏡像系統(tǒng) 的任務(wù)。MINDS系統(tǒng)具有數(shù)個(gè)創(chuàng)新的方面,這些方面結(jié)合起來(lái)可以從降 低支持開銷(工時(shí))、減小鏡像時(shí)的時(shí)間延遲、降低軟件開發(fā)成本以及提 供容易地支持寬范圍的鏡像組的能力而提供對(duì)投資的實(shí)際回報(bào)。所描述的 一個(gè)重要?jiǎng)?chuàng)新在于MINDS內(nèi)類似于可交換的構(gòu)建塊的動(dòng)作的使用,所述 動(dòng)作被組裝以形成定義所希望的過程的動(dòng)作樹。本發(fā)明的該方面改變?nèi)绾?創(chuàng)建新的鏡像過程。將會(huì)知道,以前是軟件開發(fā)練習(xí)的過程在MINDS下 被轉(zhuǎn)換為構(gòu)建塊組裝過程——就像一個(gè)人可以用一批足夠的LEGO⑧塊來(lái) 建立任何希望的小結(jié)構(gòu)。除了軟件鏡像之外,MINDS的靈活框架還可以 用在許多其他類型的過程中,而不脫離本發(fā)明的教導(dǎo)。
      雖然上述描述包含許多細(xì)節(jié),但是這些不應(yīng)該被解釋為限制本發(fā)明的范圍,而僅僅是提供本發(fā)明的一些當(dāng)前優(yōu)選的實(shí)施例的說明。因此,將會(huì) 知道,本發(fā)明的范圍全面包括對(duì)本領(lǐng)域技術(shù)人員來(lái)說可以變得顯而易見的 其他實(shí)施例,并且本發(fā)明的范圍因此只由所附的權(quán)利要求來(lái)限制,其中對(duì) 單數(shù)形式的元素的引用不是意味著"一個(gè)和僅僅一個(gè)",除非明確地這樣 聲明,否則意味著"一個(gè)或多個(gè)"。上述優(yōu)選實(shí)施例的元素的所有對(duì)本領(lǐng) 域普通技術(shù)人員來(lái)說已知的結(jié)構(gòu)和功能等同物被通過引用而明示地包含在 這里,并且希望被當(dāng)前的權(quán)利要求所包括。此外,設(shè)備或方法不必解決本 發(fā)明想要解決的每個(gè)問題,因?yàn)槠鋵⒈划?dāng)前的權(quán)利要求所包括。此外,本 說明書中的元素、組件或者方法步驟都不希望專用于公用,而不管該元 素、組件或者方法步驟是否在權(quán)利要求中明確地?cái)⑹?。這里的權(quán)利要求元 素都不要解釋為符合35 U.S.C. 112的第六款的規(guī)定,除非用短語(yǔ)"用于… 的裝置"來(lái)明示地?cái)⑹鲈撛亍?br> 權(quán)利要求
      1. 一種用于計(jì)算機(jī)上的軟件程序鏡像的自動(dòng)配置的裝置,包括模塊化網(wǎng)絡(luò)下載程序,被配置為訪問來(lái)自網(wǎng)絡(luò)的鏡像文件以配置計(jì)算機(jī)上的程序鏡像;多個(gè)動(dòng)作例程,所述動(dòng)作例程中的每一個(gè)都被配置為執(zhí)行所述模塊化網(wǎng)絡(luò)下載程序內(nèi)的具體操作;以及用于定義將由所述模塊化網(wǎng)絡(luò)下載程序執(zhí)行的所述動(dòng)作例程的樹的裝置。
      2. 如權(quán)利要求1所述的裝置,其中,所述動(dòng)作例程被動(dòng)態(tài)地鏈接到所 述模塊化網(wǎng)絡(luò)下載程序。
      3. 如權(quán)利要求1所述的裝置,其中,所述動(dòng)作例程的所述樹由不需要 被編譯的配置文件內(nèi)的文本來(lái)定義。
      4. 如權(quán)利要求l所述的裝置,其中,所述模塊化網(wǎng)絡(luò)下載程序包括 管理層,被配置用于在所述動(dòng)作樹的游歷期間執(zhí)行動(dòng)作;以及 用戶接口,被配置用于針對(duì)正在執(zhí)行的希望的自動(dòng)安裝,控制所述管理層的操作。
      5. —種用于計(jì)算機(jī)上的軟件程序鏡像的自動(dòng)配置的裝置,包括 具有多個(gè)動(dòng)作的動(dòng)作樹層,所述動(dòng)作可以在自動(dòng)軟件安裝期間被動(dòng)態(tài)鏈接執(zhí)行;至少一個(gè)具有多個(gè)節(jié)點(diǎn)的動(dòng)作樹,所述節(jié)點(diǎn)中的每一個(gè)包含至少一個(gè)指向來(lái)自所述動(dòng)作樹層的動(dòng)作的指針;管理層,被配置用于在所述動(dòng)作樹的游歷期間執(zhí)行動(dòng)作;以及 用戶接口,被配置用于針對(duì)正在執(zhí)行的希望的自動(dòng)安裝,控制所述管理層的操作。
      6. 如權(quán)利要求5所述的裝置,其中,所述動(dòng)作例程的所述樹由不需要被編譯的配置文件內(nèi)的文本來(lái)定義。
      7. 如權(quán)利要求5所述的裝置,其中,所述動(dòng)作是可以在給定的動(dòng)作樹 內(nèi)和不同的動(dòng)作樹之間重用的功能上獨(dú)立的動(dòng)作。
      8. 如權(quán)利要求5所述的裝置,其中,所述動(dòng)作中的任何一個(gè)可以作為 分別的執(zhí)行線程而被載入,從而允許所述動(dòng)作對(duì)其他請(qǐng)求進(jìn)行響應(yīng)。
      9. 如權(quán)利要求5所述的裝置,其中,不同的動(dòng)作樹可通過所述用戶接 口作為操作模式來(lái)選擇。
      10. 如權(quán)利要求5所述的裝置,其中,用戶可以通過所述用戶接口或 者使用由動(dòng)作本身所產(chǎn)生的用戶接口或這兩種用戶接口的組合,與所述動(dòng) 作交互。
      11. 如權(quán)利要求5所述的裝置,其中,所述軟件程序鏡像包括單個(gè)基 礎(chǔ)鏡像或者單個(gè)基礎(chǔ)鏡像與至少一個(gè)應(yīng)用程序模塊的組合。
      12. 如權(quán)利要求5所述的裝置,其中,所述管理層不必響應(yīng)于所述動(dòng) 作樹中的變化和來(lái)自所述動(dòng)作樹層內(nèi)的不同動(dòng)作的鏈接或釋放而被重新編 譯。
      13. 如權(quán)利要求5所述的裝置,其中,所述動(dòng)作樹的每個(gè)所述節(jié)點(diǎn)包 含指向動(dòng)作的指針、指向所述動(dòng)作樹的子節(jié)點(diǎn)的指針和指向所述動(dòng)作樹的 兄弟節(jié)點(diǎn)的指針。
      14. 如權(quán)利要求5所述的裝置,其中,所述用戶接口被配置為允許用 戶為所述裝置選擇操作模式。
      15. 如權(quán)利要求14所述的裝置,其中,所述操作模式可以從一組操作 模式中被選擇,所述一組操作模式基本上包括無(wú)人看管模式、工廠車 間、組件選擇模式、擴(kuò)展組件選擇模式、基礎(chǔ)鏡像上載以及自由式鏡像上 載和下載。
      16. 如權(quán)利要求5所述的裝置其中,所述指向動(dòng)作的指針不指定具體的動(dòng)作,而是指定所述動(dòng)作樹 中與該動(dòng)作相關(guān)聯(lián)的位置;并且其中,所述動(dòng)作本身保持彼此獨(dú)立。
      17. 如權(quán)利要求5所述的裝置,其中,可以在動(dòng)作樹內(nèi)從一組處理的 動(dòng)作中選擇所述動(dòng)作的一個(gè)或多個(gè)以供執(zhí)行,這組處理的動(dòng)作基本上包 括創(chuàng)建Mcode介質(zhì)、從系統(tǒng)的桌面管理接口 (DMI)上載Mcode、下載基礎(chǔ)鏡像到系統(tǒng)硬盤驅(qū)動(dòng)器、下載應(yīng)用模塊鏡像到系統(tǒng)硬盤驅(qū)動(dòng)器、從系統(tǒng)硬盤驅(qū)動(dòng)器上載基礎(chǔ)鏡像、從系統(tǒng)硬盤驅(qū)動(dòng)器上載應(yīng)用模塊鏡像、從恢 復(fù)分區(qū)恢復(fù)基礎(chǔ)鏡像、介質(zhì)版本驗(yàn)證、位塊傳送、分配目標(biāo)驅(qū)動(dòng)器、選擇 基本單元、清理鏡像移除不必要的文件、將鏡像復(fù)制到恢復(fù)分區(qū)、將模塊復(fù)制到分區(qū)、創(chuàng)建鏡像CRC、創(chuàng)建Mcode軟盤、顯示飛濺屏幕、顯示桌面管理接口比較、彈出介質(zhì)、找到正確的目標(biāo)驅(qū)動(dòng)器、獲得硬盤驅(qū)動(dòng)器信 息、驗(yàn)證是否在網(wǎng)絡(luò)子網(wǎng)上、結(jié)束日志會(huì)話、映射網(wǎng)絡(luò)驅(qū)動(dòng)器、分區(qū)査 詢、分區(qū)硬盤驅(qū)動(dòng)器、重新啟動(dòng)、受限登入、返回主菜單、驗(yàn)證鏡像組件 存在以及創(chuàng)建線程。
      18. —種利用軟件程序鏡像配置計(jì)算機(jī)的方法,該方法包括創(chuàng)建和編譯用于執(zhí)行計(jì)算機(jī)上的鏡像配置動(dòng)作的一組可分別執(zhí)行的動(dòng)作;創(chuàng)建和編譯管理層,所述管理層執(zhí)行在所選擇的動(dòng)作樹內(nèi)所定義的動(dòng)作;創(chuàng)建和編譯用戶接口層,所述用戶接口層控制動(dòng)作樹選擇和穿過所述 動(dòng)作樹的行進(jìn);創(chuàng)建具有多個(gè)節(jié)點(diǎn)的動(dòng)作樹結(jié)構(gòu),所述節(jié)點(diǎn)包括指向動(dòng)作和指向所述 動(dòng)作樹中的其他節(jié)點(diǎn)的指針;以及將所述動(dòng)作、管理層、用戶接口和動(dòng)作樹鏈接到程序,所述程序根據(jù) 用戶輸入而執(zhí)行在所述動(dòng)作樹中所定義的動(dòng)作。
      19. 如權(quán)利要求18所述的方法其中,所述動(dòng)作樹結(jié)構(gòu)包括根據(jù)子指針關(guān)系、兄弟指針關(guān)系或者子指 針關(guān)系和兄弟指針關(guān)系彼此的組合而連接的節(jié)點(diǎn);并且其中,所述指針關(guān)系包括指向動(dòng)作所位于的動(dòng)作樹中的節(jié)點(diǎn)位置的指針。
      20. 如權(quán)利要求18所述的方法,其中,所述軟件程序鏡像包括單個(gè)基 礎(chǔ)鏡像與至少一個(gè)應(yīng)用程序模塊的組合。
      全文摘要
      一種用于配置計(jì)算機(jī)或基于計(jì)算機(jī)的設(shè)備的從網(wǎng)絡(luò)的模塊化鏡像下載(MINDS)的系統(tǒng)和方法。程序鏡像通常包括基礎(chǔ)鏡像(操作系統(tǒng))和嵌入在MINDS程序的可執(zhí)行文件內(nèi)的應(yīng)用模塊。動(dòng)作樹可以由用戶接口控制,開始、暫停、終止、前進(jìn)或后退等等??蓤?zhí)行文件對(duì)動(dòng)作樹進(jìn)行操作并且不必針對(duì)每個(gè)動(dòng)作樹變化都重新編譯,用于動(dòng)作樹的模塊在執(zhí)行之前被動(dòng)態(tài)鏈接。動(dòng)作樹方法允許用戶容易地從系統(tǒng)中改變、增加或者刪除動(dòng)作或整個(gè)動(dòng)作樹,而不需要記錄或者另外的程序測(cè)試。
      文檔編號(hào)G06F9/44GK101501637SQ200680009729
      公開日2009年8月5日 申請(qǐng)日期2006年3月23日 優(yōu)先權(quán)日2005年3月25日
      發(fā)明者斯蒂芬·菲利普斯, 杰弗里·T·蘇勒姆, 維克多·G·里哈, 馬修·D·波黑皮勒 申請(qǐng)人:索尼株式會(huì)社;索尼電子有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1