本發(fā)明涉及用于通過(guò)在兩種模型間自動(dòng)轉(zhuǎn)換來(lái)組合工作流和腳本的特性的工作流腳本處理系統(tǒng)。
背景技術(shù):計(jì)算環(huán)境的用戶常常碰到想要使各種任務(wù)自動(dòng)化的需求。終端用戶可能希望使頻繁被執(zhí)行的各個(gè)任務(wù)自動(dòng)化,而信息技術(shù)(IT)人員可被派以將跨許多計(jì)算機(jī)系統(tǒng)的大型任務(wù)自動(dòng)化的任務(wù)。任務(wù)可包括諸如應(yīng)用安裝和維護(hù)、計(jì)算機(jī)設(shè)置、安全校驗(yàn)、更新系統(tǒng)和應(yīng)用的目錄等等之類的動(dòng)作。工作流提供了一種用于使計(jì)算環(huán)境中的任務(wù)自動(dòng)化的方法。隨著時(shí)間流逝,軟件編程已從以諸如匯編之類的低級(jí)語(yǔ)言來(lái)編寫(xiě)應(yīng)用演變?yōu)橛孟馛++、C#以及VisualBasic之類的高級(jí)語(yǔ)言來(lái)編寫(xiě)。較高級(jí)的語(yǔ)言通常去除了對(duì)存儲(chǔ)器的低級(jí)管理以及其它基于機(jī)器的限制,這有利于允許編程者更多地站在代表將要解決的問(wèn)題的對(duì)象的角度來(lái)思考。然而,在應(yīng)用邏輯中還是存在許多復(fù)雜之處,尤其是當(dāng)管理異步處理時(shí)。諸如由MICROSOFTTMWINDOWSTMWorkflowFoundation(WF,工作流基礎(chǔ))所提供的那些工作流之類的工作流提供了用于以高級(jí)方式將應(yīng)用和服務(wù)邏輯系統(tǒng)地表示為一個(gè)或多個(gè)工作流的聲明性框架。工作流由對(duì)應(yīng)用的處理中的特定階段進(jìn)行處理的各個(gè)活動(dòng)所組成。一組活動(dòng)形成一個(gè)工作流。當(dāng)應(yīng)用等待來(lái)自其它組件的響應(yīng)時(shí),工作流可被暫停和繼續(xù),并且工作流特別好地適合異步編程以提高開(kāi)發(fā)者的生產(chǎn)力。WF提供了用于聲明工作流、有助于限定邏輯和控制流的活動(dòng)、以及用于執(zhí)行所得到的應(yīng)用定義的運(yùn)行時(shí)的工具集。腳本處理提供了另一種用于使計(jì)算環(huán)境中的任務(wù)自動(dòng)化的方法。腳本處理一般包括腳本處理語(yǔ)言和主機(jī),該主機(jī)讀取以腳本處理語(yǔ)言提供用來(lái)實(shí)現(xiàn)各種動(dòng)作的指令的文本文件或控制臺(tái)輸入。與工作流不同,腳本一般不太正式,并且不要求與對(duì)于傳統(tǒng)軟件編程而言所公知的編程知識(shí)相同的知識(shí)。腳本可通過(guò)并不比文本編輯器和腳本主機(jī)更多的工具被快速地構(gòu)建和測(cè)試。不幸的是,這些現(xiàn)有方法完全站在了使任務(wù)自動(dòng)化的對(duì)立面,并且每個(gè)方法都包含了使其應(yīng)用于特定任務(wù)變得困難的限制。例如,構(gòu)建工作流一般牽涉到設(shè)置編程環(huán)境(諸如MICROSOFTTMVisualStudio)以及獲取開(kāi)發(fā)和調(diào)試工作流的編程技巧。這限制了工作流的可訪問(wèn)性并且增加了使任務(wù)自動(dòng)化的花費(fèi)。受限制的編程者資源會(huì)變成完成這些事情的瓶頸。盡管對(duì)于小的、單機(jī)的任務(wù)來(lái)說(shuō)很好,但腳本處理對(duì)于用于具有跨潛在的許多計(jì)算機(jī)系統(tǒng)的潛在的許多從屬步驟的較長(zhǎng)的任務(wù)來(lái)說(shuō)困難得多。具體來(lái)說(shuō),腳本處理缺乏較高級(jí)編程語(yǔ)言中提供的那種差錯(cuò)檢測(cè)和差錯(cuò)處理,并且在差錯(cuò)或意料之外的事件發(fā)生之后的停止、恢復(fù)、以及重啟方面并不擅長(zhǎng)。難以用腳本處理來(lái)執(zhí)行的一組步驟的一個(gè)示例是任何牽涉到重新引導(dǎo)計(jì)算機(jī)系統(tǒng)的任務(wù)。一旦系統(tǒng)被重新引導(dǎo),腳本就不再運(yùn)行并且當(dāng)計(jì)算機(jī)系統(tǒng)重啟時(shí)無(wú)法在某個(gè)正確的點(diǎn)繼續(xù)。
技術(shù)實(shí)現(xiàn)要素:此處描述了用于通過(guò)在兩種模型間自動(dòng)轉(zhuǎn)換來(lái)組合工作流和腳本的特性的工作流腳本處理系統(tǒng)。使用該系統(tǒng),腳本作者可使用熟悉的腳本處理語(yǔ)言動(dòng)態(tài)地創(chuàng)建工作流,而工作流作者能夠使用腳本處理步驟來(lái)執(zhí)行動(dòng)作。以此方式創(chuàng)建的工作流可以像傳統(tǒng)工作流一樣被停止和重啟,但這一能力可通過(guò)腳本處理環(huán)境或命令窗口(commandshell)來(lái)訪問(wèn)。另外,以此方式運(yùn)行的工作流可被設(shè)置成在其自身的過(guò)程中執(zhí)行以增強(qiáng)穩(wěn)健性或效率。企業(yè)環(huán)境中的操作經(jīng)常需要長(zhǎng)時(shí)間并且容易遭受打斷。傳統(tǒng)的窗口腳本處理語(yǔ)言不被設(shè)計(jì)成在這些環(huán)境下高效運(yùn)行或者大規(guī)模地運(yùn)行操作。通過(guò)為窗口環(huán)境添加工作流的可靠性概念,系統(tǒng)的用戶能夠編寫(xiě)腳本以解決大規(guī)模計(jì)算環(huán)境的共同需求。因此,工作流腳本處理系統(tǒng)混合了由工作流提供的可用資源以及腳本處理環(huán)境,以為IT人員提供多種強(qiáng)大的、先進(jìn)的能力。提供本發(fā)明內(nèi)容以便以簡(jiǎn)化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識(shí)所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。附圖說(shuō)明圖1是示出一個(gè)實(shí)施例中的工作流腳本處理系統(tǒng)的組件的框圖。圖2是示出一個(gè)實(shí)施例中的用于處理在腳本處理環(huán)境中接收到的與工作流有關(guān)的命令的工作流腳本處理系統(tǒng)的過(guò)程的流程圖。圖3是示出一個(gè)實(shí)施例中的用于展示腳本處理環(huán)境中的工作流對(duì)象的工作流腳本處理系統(tǒng)的過(guò)程的流程圖。圖4是示出一個(gè)實(shí)施例中的用于將現(xiàn)有工作流導(dǎo)入到腳本處理環(huán)境中的工作流腳本處理系統(tǒng)的過(guò)程的流程圖。圖5是示出一個(gè)實(shí)施例中的工作流腳本處理系統(tǒng)的操作環(huán)境的框圖。圖6是在一個(gè)實(shí)施例中的用于可視地示出使用腳本處理命令和使用腳本處理環(huán)境中的這些以及其它的工作流來(lái)創(chuàng)建新的工作流的過(guò)程的數(shù)據(jù)流程圖。具體實(shí)施方式此處描述了通過(guò)在兩種模型之間自動(dòng)轉(zhuǎn)換來(lái)組合工作流和腳本的特性的工作流腳本處理系統(tǒng),使得腳本能夠使用工作流且工作流能夠使用腳本。使用該系統(tǒng),腳本作者可使用熟悉的腳本處理語(yǔ)言動(dòng)態(tài)地創(chuàng)建工作流,而工作流作者能夠使用腳本處理步驟來(lái)執(zhí)行動(dòng)作。以此方式創(chuàng)建的工作流可以像傳統(tǒng)工作流一樣被停止和重啟,但這一能力可通過(guò)腳本處理環(huán)境或命令窗口來(lái)訪問(wèn)(此處所使用的腳本處理環(huán)境可包括窗口或其它環(huán)境而無(wú)需傳統(tǒng)的要通過(guò)其來(lái)提供命令的腳本處理語(yǔ)言)。另外,以此方式運(yùn)行的工作流可被設(shè)置成在其自身的進(jìn)程中執(zhí)行以增強(qiáng)穩(wěn)健性或效率(例如,通過(guò)并行化)。企業(yè)環(huán)境中的操作經(jīng)常需要長(zhǎng)時(shí)間并且容易遭受打斷。傳統(tǒng)的窗口腳本處理語(yǔ)言不被設(shè)計(jì)成在這些環(huán)境下高效運(yùn)行或者大規(guī)模地運(yùn)行操作。通過(guò)為窗口環(huán)境添加工作流的可靠性概念,系統(tǒng)的用戶能夠編寫(xiě)腳本以解決大規(guī)模計(jì)算環(huán)境的共同需求。在相關(guān)工作中,已描述了使用諸如MICROSOFTTMWINDOWSTMPOWERSHELLTM之類的窗口環(huán)境的命令作為工作流活動(dòng)的能力(參見(jiàn)例如美國(guó)專利申請(qǐng)?zhí)?2/372,746,題為“將命令單元轉(zhuǎn)換成工作流活動(dòng)(CONVERTINGCOMMANDUNITSINTOWORKFLOWACTIVITIES)”的專利申請(qǐng))。工作流腳本處理系統(tǒng)通過(guò)利用窗口腳本處理環(huán)境中的工作流概念和本地對(duì)象、第一類的操作在這一工作上來(lái)構(gòu)建(例如,它們可以在任何腳本中直接、容易地使用)。該系統(tǒng)通過(guò)工作流概念的應(yīng)用增強(qiáng)了腳本處理環(huán)境和語(yǔ)言以支持規(guī)模可擴(kuò)展的、高度可靠的、多機(jī)器的操作。該系統(tǒng)是窗口腳本處理語(yǔ)言和工作流服務(wù)的現(xiàn)有組件的合成和擴(kuò)展,其有助于實(shí)現(xiàn)高度可靠并且規(guī)模可擴(kuò)展的多機(jī)器管理,改進(jìn)了工作流創(chuàng)作流程及其功能,并且提供了在企業(yè)環(huán)境中的故障和中斷下存活的能力。在一些實(shí)施例中,工作流腳本處理系統(tǒng)將與工作流有關(guān)的操作添加到現(xiàn)有的腳本處理環(huán)境中。例如,系統(tǒng)可添加提供用于并行地運(yùn)行其它操作的關(guān)鍵詞的“并行”操作、能夠截取快照并存儲(chǔ)工作流運(yùn)行時(shí)狀態(tài)的“持久存儲(chǔ)”操作、能夠從之前的錯(cuò)誤或暫停狀態(tài)恢復(fù)的“恢復(fù)”操作、以及適合在腳本處理環(huán)境中提供工作流行為的任何其它操作。當(dāng)在腳本處理環(huán)境中接收到與工作流有關(guān)的命令時(shí),系統(tǒng)將命令映射成適當(dāng)?shù)墓ぷ髁鲗?duì)象(例如經(jīng)編譯的工作流或工作流主機(jī)本身),并且調(diào)用工作流對(duì)象以執(zhí)行該命令。執(zhí)行該命令可包括自動(dòng)生成可擴(kuò)展標(biāo)記語(yǔ)言(XML)或用于構(gòu)建工作流的其它中間數(shù)據(jù)(例如,可擴(kuò)展應(yīng)用標(biāo)記語(yǔ)言(XAML)文件)、向工作流主機(jī)查詢狀態(tài)信息、調(diào)用工作流主機(jī)命令以開(kāi)始/暫停/恢復(fù)工作流、等等。在該命令期間或之后,系統(tǒng)可接收穩(wěn)健性差錯(cuò)或狀態(tài)信息。經(jīng)修改的腳本處理環(huán)境允許腳本作者對(duì)這些差錯(cuò)作出反應(yīng)并且以傳統(tǒng)工作流方式直接根據(jù)腳本來(lái)處理這些差錯(cuò)。例如,作者可選擇重啟失敗的命令序列、延遲執(zhí)行命令直到另一時(shí)間、記錄關(guān)于故障的信息、等等。另一方面,由此創(chuàng)建或分開(kāi)創(chuàng)作的工作流還可調(diào)用由腳本處理環(huán)境所提供的命令。在一些實(shí)施例中,系統(tǒng)還包括調(diào)用手動(dòng)創(chuàng)建的工作流元素的自動(dòng)化的能力,諸如通過(guò)自動(dòng)創(chuàng)建腳本處理命令以及用于查看和選擇工作流動(dòng)作參數(shù)的幫助信息。因此,工作流腳本處理系統(tǒng)混合了由工作流提供的可用資源以及腳本處理環(huán)境,以為IT人員提供多種強(qiáng)大的、先進(jìn)的能力。工作流腳本處理系統(tǒng)為IT人員提供了幾種用于更有效率地通過(guò)腳本來(lái)利用工作流的有用的能力。首先,系統(tǒng)提供了將現(xiàn)有的腳本處理語(yǔ)言轉(zhuǎn)碼成工作流的能力。例如,系統(tǒng)可將WINDOWSTMPOWERSHELLTM語(yǔ)義映射成工作流語(yǔ)義。這包括將腳本處理語(yǔ)法映射成工作流活動(dòng)以及標(biāo)記差錯(cuò)、將活動(dòng)打包在幫助功能中以提供一致的行為(例如,記錄進(jìn)度報(bào)告、設(shè)置狀態(tài)檢查點(diǎn)、遙控)的能力、等等。系統(tǒng)還提供將工作流參數(shù)和語(yǔ)義添加到現(xiàn)有命令行抽象中的能力。這些附加語(yǔ)義包括使用AsJob參數(shù)來(lái)執(zhí)行作為后臺(tái)作業(yè)或者使用PSComputerName參數(shù)來(lái)定標(biāo)多個(gè)計(jì)算機(jī)的能力。系統(tǒng)還提供了分析工作流并且將多個(gè)執(zhí)行單元分隔到不同環(huán)境(例如,各進(jìn)程)中以管理安全性、容錯(cuò)性、性能以及并發(fā)性等等(除了處理工作流活動(dòng)的執(zhí)行以外)的能力。對(duì)此,系統(tǒng)通過(guò)將命令行語(yǔ)法映射成工作流運(yùn)行時(shí)能力來(lái)實(shí)現(xiàn)。另外,系統(tǒng)提供工作流與幫助功能的自動(dòng)打包,以提供豐富的、一致的命令行語(yǔ)義,例如調(diào)試、冗長(zhǎng)、作為后臺(tái)作業(yè)運(yùn)行等等。相反地,系統(tǒng)擴(kuò)展了工作流運(yùn)行時(shí)以支持豐富的、一致的諸如多輸出流(輸出、差錯(cuò)、調(diào)試等等)之類的命令行語(yǔ)義、一致的命令行選項(xiàng)處理、等等。工作流腳本處理系統(tǒng)包括工作流引擎與窗口腳本語(yǔ)言的完整集成,其通過(guò)允許工作流語(yǔ)義并將完整的集成保留在交互式窗口體驗(yàn)(交互式命令發(fā)現(xiàn)、在線幫助、等等)中的諸如“工作流”、“序列”以及“并行”之類的新語(yǔ)義元素的引入提供了以窗口腳本(例如,WINDOWSTMPOWERSHELLTM或其它的)的格式定義工作流活動(dòng)以及在工作流環(huán)境中使用這些活動(dòng)的能力、以窗口腳本的格式定義工作流自身的能力。所使用的工作流引擎可以是系統(tǒng)內(nèi)本地的或者由諸如WINDOWSTMWorkflowFoundation之類的現(xiàn)有工作流引擎所提供。系統(tǒng)還提供內(nèi)建的管理任務(wù)庫(kù)、用于將腳本處理語(yǔ)言轉(zhuǎn)換成內(nèi)建的工作流活動(dòng)的編程方法、工作流公共參數(shù)(當(dāng)現(xiàn)有語(yǔ)言命令被轉(zhuǎn)換成工作流活動(dòng)時(shí),一組新的用于現(xiàn)有窗口腳本語(yǔ)言命令的參數(shù)變得可用),非處理中的活動(dòng)的主控與執(zhí)行(擴(kuò)充窗口腳本處理語(yǔ)言運(yùn)行時(shí)以應(yīng)用工作流概念,該工作流概念允許用戶運(yùn)行處理中或非處理中的腳本的一部分而用戶不必額外做任何事)、使用標(biāo)準(zhǔn)通知和事件倉(cāng)庫(kù)來(lái)記錄、追蹤工作流和工作流活動(dòng)并將它們與其它語(yǔ)言命令和管理?xiàng)V械钠渌蝿?wù)相關(guān)的能力(包括組件內(nèi)的變量級(jí)上的跨全部易管理性組件的掛鉤追蹤能力)、將流處理集成到工作流環(huán)境以啟用活動(dòng)級(jí)進(jìn)展報(bào)告以及將數(shù)據(jù)集插入各個(gè)位置的能力、以及工作流活動(dòng)的耦合。命令行會(huì)話示例以下是使用WINDOWSTMPOWERSHELLTM內(nèi)的工作流腳本處理系統(tǒng)的帶注釋的示例命令行會(huì)話。第一示例示出根據(jù)命令行定義工作流的能力。以下文本表示用于在腳本處理環(huán)境內(nèi)創(chuàng)建工作流的腳本。這一示例工作流有幾個(gè)有意思的方面。首先,“parallel(并行)”關(guān)鍵詞的引入允許定義在工作流由工作流主機(jī)運(yùn)行時(shí)將被同時(shí)執(zhí)行的工作流中的動(dòng)作。每個(gè)并行塊包括一系列命令。為了說(shuō)明的方便,每個(gè)塊包含描述該塊將在真實(shí)的工作流中被用來(lái)干什么的文本(例如,“Step1(步驟1)”將用為該工作流實(shí)現(xiàn)作者的目的的任意步驟來(lái)替代)。如這一示例中所示,系統(tǒng)還為所生成的工作流提供了調(diào)用腳本和cmdlets(提供附加命令的WINDOWSTMPOWERSHELLTM擴(kuò)展模塊)的能力。腳本處理和工作流之間的轉(zhuǎn)換是雙向的。腳本可使用工作流概念,而工作流可使用腳本處理概念。“script(腳本)”關(guān)鍵詞的使用展示了工作流中的內(nèi)聯(lián)腳本?!皃ersist(持久存儲(chǔ))”關(guān)鍵詞的使用展示了工作流的檢查點(diǎn)。下一示例示出從腳本內(nèi)使用工作流以及與工作流交互的能力。會(huì)話結(jié)合以下工作流定義來(lái)運(yùn)行,與前一示例很像,該工作流定義可使用WINDOWSTMPOWERSHELLTM來(lái)提供在命令行中。這一定義創(chuàng)建了稱為“Test-Workflow”的工作流,其具有三個(gè)動(dòng)作:1)顯示任何WINDOWSTMPOWERSHELLTM進(jìn)程的狀態(tài);2)休眠20秒鐘;以及3)顯示關(guān)于(處理網(wǎng)絡(luò)上接收到的WSMan請(qǐng)求的)WinRM服務(wù)的信息。定義這一工作流使得系統(tǒng)自動(dòng)創(chuàng)建能夠由工作流運(yùn)行時(shí)所執(zhí)行的XML(XAML)定義。定義可被顯示如下。注意的是,盡管這是一個(gè)相當(dāng)簡(jiǎn)單的工作流,但創(chuàng)建該工作流將通常需要打開(kāi)一個(gè)工作流編輯應(yīng)用、充分地理解工作流以創(chuàng)建和使用正確的命令、以及隨后構(gòu)建該工作流。而使用工作流腳本處理系統(tǒng),只需命令行中的幾個(gè)簡(jiǎn)單的行就能完成以上工作。以下命令行運(yùn)行該工作流作為新的作業(yè)。PSC:\Windows\system32>$j=Test-Workflow-AsJobPSC:\Windows\system32>$jIdNameStateHasMoreDataLocationCommand1Job1RunningTruelocalhostTest-Workflow如以下的行中所示,該作業(yè)可被掛起并且隨后在另一工作站被拾起及控制,這些對(duì)于此前僅僅采用腳本處理來(lái)說(shuō)是不可能的。另外,該作業(yè)可在系統(tǒng)重新引導(dǎo)和重啟或恢復(fù)之后被拾起。PSC:\Windows\system32>Suspend-Job$jPSC:\Windows\system32>get-jobIdNameStateHasMoreDataLocationCommand1Job1SuspendedTruelocalhostTest-Workflow5Job49SuspendedTruelocalhostJoin-DomainPSC:\Windows\system32>Receive-Job1-KeepHandlesNPM(K)PM(K)WS(K)VM(M)CPU(s)IdProcessName6343880996940726439.583428powershell2862054768586965900.615860powershellPSC:\Windows\system32>$jIdNameStateHasMoreDataLocationCommand1Job1SuspendedTruelocalhostTest-WorkflowPSC:\Windows\system32>get-jobIdNameStateHasMoreDataLocationCommand1Job1SuspendedTruelocalhostTest-Workflow5Job49SuspendedTruelocalhostJoin-DomainPSC:\Windows\system32>ipmoPSWorkflowPSC:\Windows\system32>get-jobIdNameStateHasMoreDataLocationCommand3Job49SuspendedTruelocalhostJoin-Domain4Job1SuspendedTruelocalhostTest-WorkflowPSC:\Windows\system32>Receive-Job-Namejob1-KeepHandlesNPM(K)PM(K)WS(K)VM(M)CPU(s)IdProcessName6343880996940726439.583428powershell2862054768586965900.615860powershellPSC:\Windows\system32>Receive-Job-Namejob1HandlesNPM(K)PM(K)WS(K)VM(M)CPU(s)IdProcessName6343880996940726439.583428powershell2862054768586965900.615860powershellStatus:RunningName:winrmDisplayName:WindowsRemoteManagement(WS-Management)PSC:\Windows\system32>get-jobIdNameStateHasMoreDataLocationCommand3Job49SuspendedTruelocalhostJoin-Domain4Job1CompletedFalselocalhostTest-WorkflowPSC:\Windows\system32>get-job|remove-job-forcePSC:\Windows\system32>get-job最后的示例顯示了為未明確定義用于腳本處理環(huán)境的公共參數(shù)的工作流自動(dòng)創(chuàng)建該公共參數(shù)。PSC:\Windows\system32>import-ModuleGet-Inventory.xamlPSC:\Windows\system32>Get-Inventory-PSComputerNameMachine1,Machine2,Machine3-PSCredentialfoo@contoso.com-AsJob-JobNameMyJob這一示例顯示了像WINDOWSTMPOWERSHELLTM中公共的PSComputerName以及PSCredentials之類的參數(shù),這些參數(shù)由用于XML定義的工作流的系統(tǒng)自動(dòng)創(chuàng)建。該示例還示出了使用“Import-Module(導(dǎo)入模塊)”命令來(lái)根據(jù)XAML定義直接將工作流導(dǎo)入到WINDOWSTMPOWERSHELLTM中以供后續(xù)執(zhí)行。系統(tǒng)組件圖1是示出一個(gè)實(shí)施例中的工作流腳本處理系統(tǒng)的組件的框圖。系統(tǒng)100包括腳本處理主機(jī)組件110、命令接收組件120、工作流命令組件130、工作流轉(zhuǎn)換組件140、工作流主機(jī)組件150、主機(jī)間通信組件160、工作流執(zhí)行組件170以及腳本動(dòng)作組件180。這些組件中的每一個(gè)都在此處進(jìn)一步詳細(xì)討論。腳本處理主機(jī)組件110包括能夠接收用于執(zhí)行任務(wù)的腳本命令的腳本處理環(huán)境。腳本處理主機(jī)組件110可包括經(jīng)修改以實(shí)現(xiàn)此處所描述的系統(tǒng)100的現(xiàn)有腳本處理環(huán)境,諸如WINDOWSTMPOWERSHELLTM。腳本處理環(huán)境可提供命令提示符、翻譯用一種或多種腳本語(yǔ)言(例如,JavaScript、VBScript、Perl等等)編寫(xiě)的命令、以及執(zhí)行命令所指定的任務(wù)。腳本處理主機(jī)組件110可包括可執(zhí)行文件(例如,powershell.exe、cscript.exe等等),用戶運(yùn)行該可執(zhí)行文件來(lái)調(diào)用為腳本處理環(huán)境提供接口的進(jìn)程。腳本處理環(huán)境可包括用于接收文本文件或其它命令列表的接口、用于動(dòng)態(tài)輸入命令的接口(例如,命令提示符)、用于編程地接收來(lái)自其它源(例如數(shù)據(jù)庫(kù)或遠(yuǎn)程控制臺(tái))的命令的接口、等等。為了執(zhí)行所接收的命令,腳本處理主機(jī)組件110可調(diào)用提供計(jì)算機(jī)系統(tǒng)所展示的各種功能的一個(gè)或多個(gè)外部組件或應(yīng)用編程接口(API)。命令接收組件120接收并解釋提供給腳本處理主機(jī)組件110的用戶界面的命令。命令接收組件120可被設(shè)計(jì)成識(shí)別執(zhí)行腳本處理環(huán)境的公知核心任務(wù)(諸如加載腳本文件、導(dǎo)入定義附加命令的模塊(例如,cmdlets)、顯示狀態(tài)信息等等)的一個(gè)或多個(gè)關(guān)鍵詞。命令接收組件120還識(shí)別由對(duì)此處所描述的系統(tǒng)100的一種實(shí)現(xiàn)添加到腳本處理環(huán)境中的一個(gè)或多個(gè)與工作流有關(guān)的命令。工作流命令可包括用于定義工作流、定義工作流動(dòng)作、定義工作流動(dòng)作如何執(zhí)行(例如,并行或串行)、監(jiān)視工作流的狀態(tài)、檢索工作流差錯(cuò)或其它信息等的關(guān)鍵詞、參數(shù)以及其它定義。當(dāng)檢測(cè)到與工作流有關(guān)的命令時(shí),命令接收組件120將命令傳遞給工作流命令組件130以供處理。工作流命令組件130接收并處理與工作流有關(guān)的腳本命令。這些命令可屬于各種類別,組件130可不同地處理這些類別中的每一個(gè)。例如,被設(shè)計(jì)用來(lái)創(chuàng)建工作流的命令可使組件130存儲(chǔ)用于持久存儲(chǔ)與使用命令來(lái)創(chuàng)建的任何工作流有關(guān)的信息的工作流定義。在一些實(shí)施例中,組件130可調(diào)用工作流轉(zhuǎn)換組件140來(lái)在用于定義工作流的腳本處理關(guān)鍵詞與工作流框架所使用的標(biāo)準(zhǔn)工作流格式之間進(jìn)行轉(zhuǎn)換。例如,XAML被用于通過(guò)WINDOWSTMWorkflowFoundation來(lái)定義工作流,而工作流轉(zhuǎn)換組件140可基于定義工作流的任何工作流腳本命令來(lái)輸出XAML。諸如那些詢問(wèn)工作流狀態(tài)的其它工作流命令可使工作流命令組件130調(diào)用工作流主機(jī)組件150來(lái)確定關(guān)于工作流的更多信息。例如,諸如WINDOWSTMWorkflowFoundation之類的工作流框架提供用于訪問(wèn)工作流主機(jī)以及詢問(wèn)工作流狀態(tài)的API。因此,工作流命令組件130可對(duì)基于腳本的與工作流相關(guān)的命令的語(yǔ)義進(jìn)行轉(zhuǎn)碼或適配以調(diào)用工作流框架的適當(dāng)?shù)腁PI來(lái)實(shí)現(xiàn)腳本的目的。工作流轉(zhuǎn)換組件140將定義工作流的與工作流有關(guān)的腳本命令轉(zhuǎn)換成工作流主機(jī)組件150所識(shí)別的標(biāo)準(zhǔn)工作流定義格式。傳統(tǒng)地,工作流通過(guò)使用諸如MICROSOFTTMVisualStudio或其它開(kāi)發(fā)環(huán)境之類的工作流編輯用戶界面來(lái)創(chuàng)建,并且隨后以諸如WINDOWSTMWorkflowFoundation所使用的XAML之類的標(biāo)準(zhǔn)工作流格式來(lái)存儲(chǔ)。工作流轉(zhuǎn)換組件140可直接將腳本命令轉(zhuǎn)換成與所存儲(chǔ)的諸如XAML元素之類的對(duì)象的一個(gè)或多個(gè)交互,以直接根據(jù)腳本或命令提示符來(lái)定義工作流。以此方式創(chuàng)建的工作流對(duì)于即使沒(méi)有開(kāi)發(fā)或相關(guān)經(jīng)驗(yàn)的IT人員來(lái)說(shuō)更容易訪問(wèn),并且可由即時(shí)可用的組件快速地創(chuàng)建而無(wú)需安裝專用的工作流創(chuàng)作環(huán)境。例如,MICROSOFTTMWINDOWSTM7及其后版本包括即用型的WINDOWSTMPOWERSHELLTM,其可被修改以實(shí)現(xiàn)此處所描述的系統(tǒng)100。其它操作系統(tǒng)提供可以類似方式使用的其它腳本處理環(huán)境。工作流主機(jī)組件150主控用于提供編程模型和引擎的工作流以將商業(yè)過(guò)程實(shí)現(xiàn)為工作流。WINDOWSTMWorkflowFoundation是提供工作流主機(jī)的框架的一個(gè)示例。工作流腳本處理系統(tǒng)100可利用這些現(xiàn)有主機(jī)或提供其自己的主機(jī)用于主控托管工作流。工作流主機(jī)組件150可提供工作流的處理中執(zhí)行、工作流的非處理中執(zhí)行、工作流的遠(yuǎn)程主控托管、或由系統(tǒng)100的用戶所選取的以上的任何選擇。非處理中執(zhí)行對(duì)于增強(qiáng)穩(wěn)健性和避免使腳本處理主機(jī)進(jìn)程中斷的差錯(cuò)來(lái)說(shuō)會(huì)是有用的。遠(yuǎn)程執(zhí)行對(duì)于執(zhí)行影響遠(yuǎn)程計(jì)算機(jī)系統(tǒng)的工作流動(dòng)作來(lái)說(shuō)會(huì)是有用的。工作流主機(jī)組件150執(zhí)行傳遞給它的特定工作流的動(dòng)作,并且提供一組穩(wěn)健的用于調(diào)用工作流、定義如何執(zhí)行工作流、檢查工作流狀態(tài)、管理處理中的工作流作業(yè)、接收差錯(cuò)并記錄關(guān)于之前嘗試過(guò)或者已完成的工作流動(dòng)作的信息等等的服務(wù)和API。主機(jī)間通信組件160在腳本處理主機(jī)組件110和工作流主機(jī)組件150之間通信。在不同時(shí)間,工作流主機(jī)組件150可以在與腳本處理主機(jī)相同的進(jìn)程中、與腳本處理主機(jī)相同的機(jī)器上的進(jìn)程外、遠(yuǎn)程機(jī)器上、以及以上的任意組合中運(yùn)行工作流動(dòng)作。主機(jī)間通信組件160提供了腳本處理主機(jī)和工作流主機(jī)之間的鏈接,使得腳本能夠獲取狀態(tài)信息、開(kāi)始和停止工作流作業(yè)、以及執(zhí)行與工作流有關(guān)的其它動(dòng)作。主機(jī)間通信組件160可包括使用各種通信協(xié)議(諸如WS管理協(xié)議或其他)中的任意一種的傳輸服務(wù)以及傳輸服務(wù)客戶機(jī)。組件160可利用各種公知的通信標(biāo)準(zhǔn),以供進(jìn)程間通信、網(wǎng)絡(luò)通信等等。工作流執(zhí)行組件170執(zhí)行來(lái)自腳本處理環(huán)境內(nèi)的工作流動(dòng)作。腳本處理環(huán)境可導(dǎo)入之前創(chuàng)建的、存儲(chǔ)為XAML文件或另一種持久的數(shù)據(jù)格式的工作流,并且可通過(guò)執(zhí)行工作流來(lái)執(zhí)行工作流所指定的動(dòng)作。組件170可調(diào)用分開(kāi)提供的工作流主機(jī)或者可直接執(zhí)行工作流。組件170可基于該工作流被設(shè)計(jì)為影響哪些計(jì)算機(jī)系統(tǒng)(例如,該工作流是運(yùn)行在遠(yuǎn)程計(jì)算機(jī)系統(tǒng)還是本地計(jì)算機(jī)系統(tǒng)上)、將運(yùn)行工作流多長(zhǎng)時(shí)間、需要什么類型的穩(wěn)健性等等來(lái)確定如何運(yùn)行工作流。腳本動(dòng)作組件180提供了用于調(diào)用來(lái)自工作流動(dòng)作內(nèi)的腳本命令的打包器。工作流由稱為活動(dòng)的功能塊組成,并且通常受限于由工作流設(shè)計(jì)環(huán)境提供的任何塊。在此處所描述的系統(tǒng)100的例子中,這些環(huán)境被擴(kuò)展以提供對(duì)于大量的可用腳本命令集的訪問(wèn),包括那些隨時(shí)間由第三方通過(guò)像WINDOWSTMPOWERSHELLTMcmdlets一樣的可擴(kuò)展框架添加的腳本命令。這允許此處所描述的這種雙向益處,其中腳本處理環(huán)境可利用工作流,而工作流可利用腳本處理環(huán)境。在其上實(shí)現(xiàn)該工作流腳本處理系統(tǒng)的計(jì)算設(shè)備可包括中央處理單元、存儲(chǔ)器、輸入設(shè)備(例如,鍵盤(pán)和定點(diǎn)設(shè)備)、輸出設(shè)備(例如,顯示設(shè)備)和存儲(chǔ)設(shè)備(例如,盤(pán)驅(qū)動(dòng)器或其他非易失性存儲(chǔ)介質(zhì))。存儲(chǔ)器和存儲(chǔ)設(shè)備是可以用實(shí)現(xiàn)或啟用該系統(tǒng)的計(jì)算機(jī)可執(zhí)行指令(如軟件)來(lái)編碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。此外,數(shù)據(jù)結(jié)構(gòu)和消息結(jié)構(gòu)可被存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上。本文所要求的任何計(jì)算機(jī)可讀介質(zhì)包括僅那些落在法定可受專利保護(hù)的類別中的介質(zhì)。該系統(tǒng)還可包括一個(gè)或多個(gè)通信鏈路,通過(guò)通信鏈路可傳送數(shù)據(jù)??梢允褂酶鞣N通信鏈路,諸如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)、點(diǎn)對(duì)點(diǎn)撥號(hào)連接、蜂窩電話網(wǎng)絡(luò)等。該系統(tǒng)的實(shí)施例可以在各種操作環(huán)境中實(shí)現(xiàn),這些操作環(huán)境包括個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費(fèi)電子產(chǎn)品、數(shù)碼相機(jī)、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括上述系統(tǒng)或設(shè)備等中任一種的分布式計(jì)算環(huán)境、機(jī)頂盒、片上系統(tǒng)(SOC)等。計(jì)算機(jī)系統(tǒng)可以是蜂窩電話、個(gè)人數(shù)字助理、智能電話、個(gè)人計(jì)算機(jī)、可編程消費(fèi)電子設(shè)備、數(shù)碼相機(jī)等。該系統(tǒng)可以在由一個(gè)或多個(gè)計(jì)算機(jī)或其他設(shè)備執(zhí)行的諸如程序模塊等計(jì)算機(jī)可執(zhí)行指令的通用上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。通常,程序模塊的功能可在各個(gè)實(shí)施例中按需進(jìn)行組合或分布。功能操作圖2是示出一個(gè)實(shí)施例中的用于處理在腳本處理環(huán)境中接收到的與工作流有關(guān)的命令的工作流腳本處理系統(tǒng)的過(guò)程的流程圖。在塊210開(kāi)始,系統(tǒng)在腳本處理環(huán)境內(nèi)接收命令??山?jīng)由顯示在命令控制臺(tái)中的命令提示符、經(jīng)由之前加載的包含腳本命令的文本文件、或者通過(guò)提供腳本命令的任何其它源來(lái)接收命令。命令可包括標(biāo)識(shí)命令的關(guān)鍵詞、與命令相關(guān)聯(lián)的一個(gè)或多個(gè)參數(shù)、或與命令有關(guān)的任何其它的補(bǔ)充信息。在塊220中繼續(xù),系統(tǒng)確定所接收的命令是否與工作流有關(guān),并且如果是的話在塊230中繼續(xù),否則系統(tǒng)完成并以傳統(tǒng)方式處理命令。該系統(tǒng)可識(shí)別一個(gè)預(yù)定義的工作流命令列表,并且可提供可擴(kuò)展模型,該可擴(kuò)展模型允許通過(guò)擴(kuò)展腳本處理環(huán)境來(lái)添加和識(shí)別新的工作流命令。與工作流有關(guān)的命令可創(chuàng)建新的工作流、定義工作流動(dòng)作、請(qǐng)求工作流狀態(tài)、執(zhí)行或恢復(fù)工作流等等。在塊230中繼續(xù),系統(tǒng)標(biāo)識(shí)與所接收的命令相關(guān)聯(lián)的工作流。該命令可根據(jù)名稱或其它標(biāo)識(shí)符來(lái)標(biāo)識(shí)工作流。該命令可創(chuàng)建新的工作流或請(qǐng)求執(zhí)行或接收關(guān)于之前創(chuàng)建的工作流的狀態(tài)信息。之前創(chuàng)建的工作流可能已通過(guò)此處進(jìn)一步描述的腳本處理環(huán)境創(chuàng)建,或者可能已使用工作流設(shè)計(jì)/編輯環(huán)境以更傳統(tǒng)方式創(chuàng)建。在一些例子中,標(biāo)識(shí)工作流可以是隱式的而非顯式的。例如,一個(gè)可替換實(shí)施方式可僅僅假設(shè)所有都是工作流模式中的工作流。在塊240中繼續(xù),如果所接收的命令定義了新的工作流,則系統(tǒng)在塊250中繼續(xù),否則系統(tǒng)跳轉(zhuǎn)到塊260。命令可與用來(lái)創(chuàng)建工作流的一系列命令相關(guān)聯(lián)。例如,“工作流”命令關(guān)鍵詞可在腳本中標(biāo)記工作流創(chuàng)建塊的開(kāi)始,并且圓括號(hào)或其它分割符內(nèi)的其它命令可指定關(guān)于腳本將創(chuàng)建的工作流的動(dòng)作和其它信息。在塊250中繼續(xù),系統(tǒng)創(chuàng)建由接收到的一個(gè)或多個(gè)命令所描述的新的工作流。系統(tǒng)可在存儲(chǔ)器中創(chuàng)建工作流以及將工作流持久存儲(chǔ)在諸如XAML文件之類的公知的工作流存儲(chǔ)格式中。持久存儲(chǔ)的格式可以是能夠使用工作流設(shè)計(jì)工具來(lái)讀取和編輯的格式,并且是能夠被可執(zhí)行工作流的動(dòng)作的工作流主控軟件所識(shí)別的格式。系統(tǒng)允許用戶使用腳本處理環(huán)境來(lái)執(zhí)行非常強(qiáng)大的任務(wù),但是用戶不受限于腳本處理環(huán)境,并且可以在使用腳本命令以及使用其它工具來(lái)處理工作流之間自由地切換(例如,以便定義可從工作流設(shè)計(jì)者環(huán)境中受益的高級(jí)動(dòng)作)。在塊260中繼續(xù),系統(tǒng)將所接收到的與工作流有關(guān)的腳本處理命令轉(zhuǎn)換成工作流主機(jī)所識(shí)別的一個(gè)或多個(gè)工作流操作。轉(zhuǎn)換可包括訪問(wèn)和調(diào)用與工作流相關(guān)聯(lián)的對(duì)象模型、調(diào)用工作流主機(jī)的API、加載或持久保存所存儲(chǔ)的工作流、等等。轉(zhuǎn)換可將在腳本處理命令提示符處以一種格式接收的參數(shù)轉(zhuǎn)換成被傳遞給API的對(duì)象調(diào)用參數(shù)。系統(tǒng)執(zhí)行適合于腳本處理環(huán)境正使用的工作流引擎的轉(zhuǎn)換。在塊270中繼續(xù),系統(tǒng)將經(jīng)轉(zhuǎn)換的工作流操作提供給工作流主機(jī),以執(zhí)行所接收的與工作流有關(guān)的命令。例如,如果命令請(qǐng)求處理中的工作流的狀態(tài),則系統(tǒng)可將該狀態(tài)請(qǐng)求轉(zhuǎn)換成對(duì)于工作流主機(jī)的API調(diào)用,調(diào)用該API,接收API結(jié)果,并將結(jié)果轉(zhuǎn)換成腳本處理環(huán)境中的命令行狀態(tài)顯示。在塊280中繼續(xù),系統(tǒng)從工作流主機(jī)接收響應(yīng)于所提供的操作的操作結(jié)果。結(jié)果可包括文本信息、編程對(duì)象(例如,日期、差錯(cuò)對(duì)象、或其它對(duì)象)、對(duì)于內(nèi)存中的工作流對(duì)象的引用、等等。系統(tǒng)將結(jié)果轉(zhuǎn)換成能夠被用于腳本處理環(huán)境內(nèi)的格式。例如,系統(tǒng)可提供用于在后續(xù)腳本處理命令中引用相同工作流的數(shù)字標(biāo)識(shí)符、向命令控制臺(tái)顯示文本、檢索附加的差錯(cuò)信息以及顯示描述性文本、等等。在一些例子中,結(jié)果可簡(jiǎn)單地指示操作成功完成,并且系統(tǒng)可顯示“OK”或其它指示。在塊290中繼續(xù),系統(tǒng)響應(yīng)于所接收的操作結(jié)果在腳本處理環(huán)境中顯示狀態(tài)信息。在框290之后,這些步驟結(jié)束。圖3是示出一個(gè)實(shí)施例中的用于展示腳本處理環(huán)境中的工作流對(duì)象的工作流腳本處理系統(tǒng)的過(guò)程的流程圖。在塊310中開(kāi)始,系統(tǒng)接收標(biāo)識(shí)包括在腳本中的工作流命令的腳本創(chuàng)作請(qǐng)求。許多腳本處理環(huán)境提供具有諸如自動(dòng)完成之類的特性的命令提示符,環(huán)境為該特性在命令提示符處提供了可能的參數(shù)列表或者與腳本命令有關(guān)的其它信息。在工作流的例子中,系統(tǒng)通過(guò)以下步驟生成待響應(yīng)于該請(qǐng)求而顯示的信息:加載工作流、導(dǎo)入其補(bǔ)充信息(例如,動(dòng)作、參數(shù)等等)、將該信息轉(zhuǎn)換成能夠從腳本中使用的形式、以及將經(jīng)轉(zhuǎn)換的信息顯示給用戶。在塊320中繼續(xù),系統(tǒng)響應(yīng)于該創(chuàng)作請(qǐng)求標(biāo)識(shí)一個(gè)或多個(gè)工作流對(duì)象。例如,用戶可能已經(jīng)開(kāi)始鍵入之前創(chuàng)建的或?qū)氲墓ぷ髁鞯拿Q、或者可能正在鍵入與預(yù)定義的與工作流有關(guān)的命令相關(guān)聯(lián)的關(guān)鍵詞。系統(tǒng)標(biāo)識(shí)命令可能正引用以為其提供有幫助的信息的對(duì)象。例如,對(duì)象可包括一動(dòng)作(該動(dòng)作是工作流的子集)、工作流作業(yè)標(biāo)識(shí)符、或任何其它與工作流有關(guān)的對(duì)象。在塊330中繼續(xù),系統(tǒng)標(biāo)識(shí)與所標(biāo)識(shí)的工作流對(duì)象相關(guān)聯(lián)的一個(gè)或多個(gè)參數(shù)。參數(shù)可包括對(duì)象能夠在其上執(zhí)行的計(jì)算機(jī)名稱、將在其下執(zhí)行對(duì)象的用戶帳戶的憑證信息、文件名、或應(yīng)用于特定標(biāo)識(shí)的工作流對(duì)象的任何其它參數(shù)信息。在塊340中繼續(xù),系統(tǒng)將所標(biāo)識(shí)的工作流對(duì)象參數(shù)轉(zhuǎn)換成允許在腳本中提供參數(shù)的格式。這可包括創(chuàng)建一個(gè)或多個(gè)參數(shù)標(biāo)志或關(guān)鍵詞(例如,用于“名稱”參數(shù)的“-名稱”)、創(chuàng)建可用參數(shù)的列表、將具體類型的參數(shù)轉(zhuǎn)換成意思等同的文本(例如,允許日期對(duì)象被指定為文本日期,諸如“1/1/2011”)、等等。在塊350中繼續(xù),系統(tǒng)在腳本處理環(huán)境中向用戶顯示關(guān)于經(jīng)轉(zhuǎn)換的工作流對(duì)象參數(shù)的信息。系統(tǒng)可在命令提示符處顯示幫助信息、在懸浮的窗口或列表中彈出命令完成信息、或以有助于腳本作者使用來(lái)自腳本內(nèi)的工作流對(duì)象的任何其它方式提供關(guān)于工作流對(duì)象的信息。在框350之后,這些步驟結(jié)束。圖4是示出一個(gè)實(shí)施例中的用于將現(xiàn)有工作流導(dǎo)入到腳本處理環(huán)境中的工作流腳本處理系統(tǒng)的過(guò)程的流程圖。導(dǎo)入現(xiàn)有工作流的能力允許腳本處理環(huán)境與工作流一起使用而無(wú)論它們是如何或何時(shí)被創(chuàng)建的。工作流不需要為了在腳本處理環(huán)境中使用而已經(jīng)在腳本處理環(huán)境中被創(chuàng)建。在塊410中開(kāi)始,系統(tǒng)接收導(dǎo)入現(xiàn)有工作流以在腳本處理環(huán)境中使用的請(qǐng)求。請(qǐng)求可包括用于訪問(wèn)現(xiàn)有工作流的信息,諸如訪問(wèn)存儲(chǔ)工作流的文件的文件路徑、對(duì)存儲(chǔ)工作流的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)引用、或由于定位及訪問(wèn)之前定義的工作流的任何其它標(biāo)識(shí)符。請(qǐng)求可包括被添加到腳本處理環(huán)境中的、用于支持使用來(lái)自腳本處理環(huán)境的工作流的預(yù)定義腳本命令。在塊420中繼續(xù),系統(tǒng)訪問(wèn)現(xiàn)有工作流并加載用于在腳本處理環(huán)境中使用工作流的信息。例如,系統(tǒng)可訪問(wèn)存儲(chǔ)工作流的XAML文件,枚舉XAML文件的XML元素以讀取工作流說(shuō)明,以及準(zhǔn)備用于執(zhí)行工作流上的進(jìn)一步操作的存儲(chǔ)器內(nèi)的對(duì)象。在塊430中繼續(xù),系統(tǒng)分析指定了由現(xiàn)有工作流執(zhí)行的任務(wù)的一個(gè)或多個(gè)工作流動(dòng)作。使用之前的示例,系統(tǒng)可從XML文件加載工作流并且讀取指定了工作流的動(dòng)作的XML元素、與各個(gè)動(dòng)作相關(guān)聯(lián)的任何步驟、各個(gè)動(dòng)作的參數(shù)、等等。在塊440中繼續(xù),系統(tǒng)創(chuàng)建用于與工作流動(dòng)作一起工作并且指定與工作流有關(guān)的輸入信息的一個(gè)或多個(gè)與腳本有關(guān)的參數(shù)。例如,用于設(shè)置計(jì)算機(jī)系統(tǒng)的工作流可接收指定了設(shè)置哪個(gè)計(jì)算機(jī)系統(tǒng)、安裝哪些應(yīng)用等等的輸入。腳本參數(shù)允許腳本作者在調(diào)用工作流或調(diào)度工作流用于以后執(zhí)行時(shí),直接在腳本處理環(huán)境內(nèi)指定工作流輸入信息。在塊450中繼續(xù),系統(tǒng)等待與工作流有關(guān)的附加命令。例如,腳本作者可與來(lái)自腳本處理命令提示符的工作流一起工作以提供參數(shù)、調(diào)用工作流、檢查工作流的狀態(tài)、重啟或暫停工作流、接收差錯(cuò)和/或進(jìn)度信息等等。在框450之后,這些步驟結(jié)束。圖5是示出一個(gè)實(shí)施例中的工作流腳本處理系統(tǒng)的操作環(huán)境的框圖。環(huán)境包括三個(gè)分開(kāi)的、其上運(yùn)行著系統(tǒng)的各部件的計(jì)算機(jī)系統(tǒng)。第一計(jì)算機(jī)系統(tǒng)是客戶機(jī)510,用戶可從客戶機(jī)510訪問(wèn)腳本處理環(huán)境。腳本處理環(huán)境包括工作流命令組件515和傳輸服務(wù)客戶機(jī)520。如此處將進(jìn)一步描述的,工作流命令組件515在腳本處理環(huán)境中接收并處理與工作流有關(guān)的命令。傳輸服務(wù)客戶機(jī)520與其它計(jì)算機(jī)系統(tǒng)通信以執(zhí)行工作流命令。第二計(jì)算機(jī)系統(tǒng)提供工作流服務(wù)530。工作流服務(wù)530包括傳輸服務(wù)535、活動(dòng)主機(jī)進(jìn)程540、以及工作流引擎545。傳輸服務(wù)535接收從客戶機(jī)410發(fā)送的命令并將其提供給工作流引擎545。工作流引擎545管理工作流的執(zhí)行,無(wú)論是本地的還是在遠(yuǎn)程計(jì)算機(jī)系統(tǒng)上?;顒?dòng)主機(jī)進(jìn)程540主控一個(gè)或多個(gè)工作流活動(dòng)以在本地機(jī)器上執(zhí)行其步驟。第三或附加計(jì)算機(jī)系統(tǒng)包括一個(gè)或多個(gè)受管理的節(jié)點(diǎn)550,節(jié)點(diǎn)550執(zhí)行工作流活動(dòng)或者是工作流活動(dòng)的主體。例如,如果工作流活動(dòng)包括格式化遠(yuǎn)程計(jì)算機(jī)系統(tǒng)的硬盤(pán),則受管理的節(jié)點(diǎn)550會(huì)讓將被格式化的硬盤(pán)所位于的節(jié)點(diǎn)存在。受管理的節(jié)點(diǎn)可還被用于將密集處理分離到分開(kāi)的計(jì)算資源上。受管理的節(jié)點(diǎn)550可包括用于與活動(dòng)主機(jī)進(jìn)程540和/或工作流引擎545通信的一個(gè)或多個(gè)遠(yuǎn)程處理協(xié)議555。圖6是在一個(gè)實(shí)施例中的用于可視地示出使用腳本處理命令和使用腳本處理環(huán)境中的這些以及其它工作流來(lái)創(chuàng)建新的工作流的過(guò)程的數(shù)據(jù)流程圖。腳本610包括用于創(chuàng)建工作流的一個(gè)或多個(gè)命令。分析將腳本610轉(zhuǎn)換成抽象語(yǔ)法樹(shù)(AST)620,其可被轉(zhuǎn)碼成工作流概念并使用工作流引擎或其它校驗(yàn)來(lái)驗(yàn)證。轉(zhuǎn)碼創(chuàng)建包括一個(gè)或多個(gè)活動(dòng)的工作流630。系統(tǒng)還可創(chuàng)建一個(gè)或多個(gè)活動(dòng)適配器640,其允許在腳本處理環(huán)境內(nèi)與工作流的活動(dòng)交互。活動(dòng)適配器640可將活動(dòng)的參數(shù)、輸出、或與活動(dòng)相關(guān)聯(lián)的其它信息打包以將該信息轉(zhuǎn)碼為適合腳本處理的形式。工作流命令適配器650識(shí)別并響應(yīng)與新創(chuàng)建的工作流630有關(guān)的命令。工作流命令適配器650還可與以諸如通過(guò)工作流編輯器或設(shè)計(jì)者等其它方式創(chuàng)建的工作流660交互。在一些實(shí)施例中,工作流腳本處理系統(tǒng)提供自動(dòng)扇出以在多個(gè)計(jì)算機(jī)系統(tǒng)上執(zhí)行工作流而無(wú)需腳本作者介入。系統(tǒng)自動(dòng)提供參數(shù),諸如用于指定工作流或工作流活動(dòng)將在哪里運(yùn)行的WINDOWSTMPOWERSHELLTMPSComputerName參數(shù)。另外,系統(tǒng)可基于可用資源、對(duì)資源的調(diào)度、對(duì)相關(guān)的其它資源(例如,數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)等)的訪問(wèn)等等來(lái)提供對(duì)于在哪里運(yùn)行各種工作流的自動(dòng)選擇。系統(tǒng)還可提供在其上執(zhí)行工作流的可用計(jì)算機(jī)的自動(dòng)生成的列表,以解放腳本作者,使其不必分開(kāi)地枚舉計(jì)算機(jī)并選擇一個(gè)。在一些實(shí)施例中,工作流腳本處理系統(tǒng)輸出各個(gè)已創(chuàng)建工作流的持久的版本(例如,使用XAML)。這允許用腳本處理環(huán)境之外的其它基于工作流的工具來(lái)編輯或使用工作流。系統(tǒng)可創(chuàng)建持久存儲(chǔ)的格式而無(wú)需腳本作者具有關(guān)于XAML、WorkflowFoundation、或其它工作流框架的任何知識(shí)。在一些實(shí)施例中,工作流腳本處理系統(tǒng)允許腳本用戶管理來(lái)自多個(gè)腳本處理環(huán)境的工作流,并且從一個(gè)腳本處理環(huán)境移動(dòng)到另一個(gè)并且管理相同的工作流。例如,使用WINDOWSTMPOWERSHELLTM或類似腳本處理環(huán)境的管理員能夠從一個(gè)計(jì)算機(jī)系統(tǒng)中啟動(dòng)工作流,并且之后從位于另一計(jì)算機(jī)系統(tǒng)上的WINDOWSTMPOWERSHELTM實(shí)例中檢查工作流的狀態(tài)。在一些實(shí)施例中,工作流腳本處理系統(tǒng)使用WINDOWSTMWorkflowFoundation來(lái)提供用于工作流的可擴(kuò)展持久存儲(chǔ)。例如,盡管系統(tǒng)可默認(rèn)在文件系統(tǒng)中存儲(chǔ)工作流,但特定的安裝可將文件存儲(chǔ)替換為SQL數(shù)據(jù)庫(kù)以存儲(chǔ)工作流。這允許工作流可在整個(gè)公司或其它組織中被共享并且可從組織內(nèi)的任何計(jì)算機(jī)系統(tǒng)訪問(wèn)。在一些實(shí)施例中,工作流腳本處理系統(tǒng)將工作流的執(zhí)行期間的差錯(cuò)捕捉到腳本處理環(huán)境差錯(cuò)流中。通常,來(lái)自工作流的差錯(cuò)信息不會(huì)在腳本中可用,直到腳本完成(例如,完成之后的“作業(yè)失敗”差錯(cuò)),因此正在運(yùn)行的工作流不會(huì)提供任何信息直到完成。然而,通過(guò)工作流腳本處理系統(tǒng),工作流進(jìn)展被更新到WINDOWSTMPOWERSHELLTM差錯(cuò)流中或其它腳本處理環(huán)境狀態(tài)流。這允許在工作流仍然在運(yùn)行時(shí)檢查工作流的狀態(tài)并且實(shí)時(shí)提供工作流狀態(tài)。工作流可隨后被暫停并且隨后基于組織的要求按需恢復(fù)。工作流輸出是工作流在其被生成時(shí)很少提供的重要的流,但是在工作流腳本處理系統(tǒng)內(nèi)很容易提供。在一些實(shí)施例中,工作流腳本處理系統(tǒng)允許工作流被作為特定用戶運(yùn)行。由于狀態(tài)被持久保存在工作流中(即使經(jīng)過(guò)多次重新引導(dǎo)),這意味著工作流可作為特定用戶運(yùn)行(即使經(jīng)過(guò)計(jì)算機(jī)系統(tǒng)的多次重新引導(dǎo)),這在目前是困難的。在一些實(shí)施例中,工作流腳本處理系統(tǒng)包括允許工作流請(qǐng)求管理性干預(yù)的“掛起工作流”操作。如果工作流檢測(cè)到其在缺少管理員干預(yù)的情況下不能繼續(xù),則工作流可請(qǐng)求工作流的掛起。這將給管理員克服問(wèn)題并且恢復(fù)工作流的機(jī)會(huì)。從上文將會(huì)認(rèn)識(shí)到,雖然在此已出于說(shuō)明目的描述了工作流腳本處理系統(tǒng)的特定實(shí)施例,但是可以做出各種修改而不背離本發(fā)明的精神和范圍。因此,本發(fā)明只受所附權(quán)利要求限制。