所選用的插件工具都集成到Eclipse中(如圖4)同時需要,安裝1.6版本以上的JDK。其中,Tomcat7.0為Web服務(wù)提供運(yùn)行環(huán)境,它是Apache-Jarkartr的一個免費(fèi)、開源的子項目,而Ant/Maven工具起到輔助作用。安裝所選定的插件時,往往需要先安裝其依賴性插件,此時可由Eclipse的Help菜單上的“Install New Software…”自動安裝完成。另外,可進(jìn)一步結(jié)合免費(fèi)的Google Eclipse插件開發(fā)云應(yīng)用程序,并可上傳到Google App Engine(GAE)云應(yīng)用平臺上運(yùn)行。但GAE主要面向云計算應(yīng)用,當(dāng)前還不完善,用于云制造還存在許多局限。
如前所述,SOA4CM 繼承了SOA 和云計算的特性。SOA于1996年最先提出,已經(jīng)形成Web服務(wù)和WS-BEPL系列的標(biāo)準(zhǔn)和協(xié)議,相對成熟,目前有Tuscany SCA和Synapse ESB等開源產(chǎn)品;而云計算于10年后的2006年才被正式提出來,雖然也有Apache Hadoop開源產(chǎn)品,但版本很低,還未成熟,只是云計算的初級實現(xiàn),更沒有形成標(biāo)準(zhǔn)規(guī)范。云制造發(fā)展有賴于云計算等相關(guān)技術(shù)的發(fā)展,反過來又促進(jìn)云計算技術(shù)的發(fā)展。圖4中的各層次與圖2的各層次有一定對應(yīng)關(guān)系,通過CloudSim虛擬化和Tuscany SCA服務(wù)化,解決松耦合、可重用的、可互操作的服務(wù)開發(fā)問題,并通過Apache ODE解決不同業(yè)務(wù)問題的Web服務(wù)聯(lián)合起來執(zhí)行的難題,以Synapse企業(yè)服務(wù)總線為中心實現(xiàn)不同服務(wù)之間的通信與整合。當(dāng)業(yè)務(wù)需求變化時,流程中不符合要求的服務(wù)組件很容易被其他符合要求的服務(wù)組件替代,也可由已有服務(wù)通過SCA生成所需的新服務(wù)而不必從頭開發(fā),同時這種修改或調(diào)整限定于最小的范圍,不會因某一層次變化引起其他層次的變化,從而實現(xiàn)業(yè)務(wù)服務(wù)的靈活裝配、業(yè)務(wù)流程的定制和業(yè)務(wù)服務(wù)的快速集成,而Drools和Esper進(jìn)一步增強(qiáng)了業(yè)務(wù)的敏捷性,Hadoop為資源集約化管理和服務(wù)交付提供支持。
下面以多工序生產(chǎn)問題為例,從簡單到復(fù)雜展示集成開發(fā)環(huán)境(包括插件工具)的具體應(yīng)用。
3 開發(fā)應(yīng)用示例用
Eclipse開發(fā)Web應(yīng)用程序(工程),生成一個部署描述設(shè)置文檔web.xml,而在安裝了云插件(如Hadoop插件或Google的GAE 插件)的Eclipse環(huán)境中開發(fā)云制造(云計算)應(yīng)用程序,與Web應(yīng)用程序開發(fā)類似,同樣需要web.xml,此外,還需要額外的設(shè)置文檔。如開發(fā)Hadoop應(yīng)用程序,就需要額外的core-site.xml,hdfs-site.xml,mapred-site.xml設(shè)置文檔,又如開發(fā)Google的GAE應(yīng)用程序,還需要額外的appengine-web.xml設(shè)置文檔,以便讓系統(tǒng)清楚如何部署和運(yùn)行云應(yīng)用程序。云制造以服務(wù)(“一切皆為服務(wù)”)的方式提供資源,并為這種服務(wù)方式提供按需即取手段,因此如何實現(xiàn)制造資源服務(wù)化(含虛擬化)和服務(wù)按需即取(包含服務(wù)發(fā)現(xiàn)、調(diào)度和部署等)就成為關(guān)鍵問題。如前所述,SOA 是SOA4CM 的技術(shù)基礎(chǔ),Web服務(wù)是目前實現(xiàn)SOA/SOA4CM 最適宜的技術(shù),因此SOA4CM 的服務(wù)開發(fā)可基于已有SOA 規(guī)范和Web服務(wù)技術(shù)進(jìn)行,不同的是將所開發(fā)的服務(wù)放置于云端而形成云服務(wù),然后通過云設(shè)置文檔(如appengine-web.xml等)來管理云服務(wù)。
如前所述,生產(chǎn)加工即服務(wù)(FaaS),如何按需選擇服務(wù)來組織生產(chǎn)是云制造面臨的一個重要問題,F(xiàn)用前述的云制造服務(wù)開發(fā)工具,以一個零件的簡單加工為例探討FaaS的應(yīng)用。在這個加工流程中,該零件(J1)有O11,O12和O13三個工序,按工藝先后順序要求分別在機(jī)器1、機(jī)器2和機(jī)器3上加工2min,3min和5min,如圖5所示。
圖5 零件加工工序
要實現(xiàn)該流程加工,需要將3臺機(jī)器服務(wù)化,而要實現(xiàn)服務(wù)化又首先需要將加工設(shè)備(Machine)虛擬化。這里利用CloudSim創(chuàng)建各個機(jī)器的虛擬機(jī),并以Java 類表示(如對Machine1 機(jī)器,建立Machine1Service.Java),此時只要在該Java類上手工添加“@WebService”標(biāo)注就可將其變成Web服務(wù)。更為方便的是,通過JAX-WS的創(chuàng)建,Web服務(wù)向?qū)ё詣訉⑵渥優(yōu)閃eb服務(wù),包括可生成相應(yīng)的Web服務(wù)程序和客戶端程序,以及發(fā)布和監(jiān)控Web服務(wù),如圖6所示。圖6所示的情景是已生成了Machine1和Machine2的Web服務(wù),正在選項生成Machine3的Web服務(wù)中,選擇好后點擊“Finish”按鍵就會生成Java類對應(yīng)的wsdl和配置文件,并可發(fā)布到Tomcat中,同時會生成調(diào)用服務(wù)的客戶端。這里生成的Web服務(wù)是為BPEL流程調(diào)用服務(wù)做準(zhǔn)備。
通過Eclipse BPEL 設(shè)計器將經(jīng)服務(wù)化后的Machine1,Machine2和Machine3(采用WSDL 定義服務(wù),三者分別用Machine1Service.wsdl,Machine2Service.wsdl和Machine3Service.wsdl表示)按預(yù)定加工順序連接起來,形成所需的業(yè)務(wù)流程,如圖7所示。其中,receive(圖中為receiveInput)表示接收請求輸入,是整個BPEL流程的起點;Assign表示賦值,如AssignMachine1表示對Machine1賦值;Invoke表示調(diào)用服務(wù),如InvokeMachine1表示調(diào)用Machine1服務(wù);reply(圖中為replyOutput)表示整個BPEL流程終點,把響應(yīng)結(jié)果返回給服務(wù)請求者。類似地,BPEL流程本身也可生成一個Web服務(wù),然后部署到Apache ODE服務(wù)器,此時請求者可調(diào)用該流程來實現(xiàn)預(yù)定功能。
圖6 由Web服務(wù)想到創(chuàng)建Web服務(wù)
圖5給出的簡單加工例子旨在展示,只用到其中的CloudSim,Java EE 的JAX-WS 和ApacheODE等插件或工具。對于更為復(fù)雜的情形,例如圖5所示的零件加工完成后,還需要運(yùn)到另一熱處理車間進(jìn)行熱處理,或者需要用不同于Java的其他語言編程,或者集成歷史遺留應(yīng)用系統(tǒng),此時采用Tuscany SCA 就顯得更方便并具有優(yōu)勢。圖8所示為用Tuscany SCA 將圖5所示的工序組合成一個稱為Machining服務(wù)的子流程,并封裝成Web服務(wù)方式,再與熱處理服務(wù)(Heattreating)結(jié)合。
圖7 BPEL表示的實例業(yè)務(wù)流程
圖8 用Tuscany SCA開發(fā)圖5所示的加工服務(wù)程序
圖5只是單個零件的加工情形,該流程以串行的方式調(diào)用3臺加工機(jī)器,而實際流程還可能有并行處理的機(jī)器和循環(huán)調(diào)用的機(jī)器。一個由4個工件(J1,J2,J3和J4)和6臺機(jī)器(M1,M2,…,M6)組成的稱為FT46的柔性作業(yè)問題,如表2所示,其中J1有下劃線的數(shù)據(jù)對應(yīng)圖5所示的加工情形。
表2 FT46問題的時間表
對于表2所示的柔性作業(yè)加工調(diào)度問題,每個工件的每道工序可以由一臺或者多臺機(jī)器為其加工,因此每個工件可能有多條加工路徑。在相同的工序中,由于其所對應(yīng)的可加工機(jī)器的加工性能不同,同一道工序在不同機(jī)器上的加工時間也不同,不同的加工路徑對應(yīng)著不同的加工時間,需要引入智能技術(shù)來求解作業(yè)調(diào)度問題。使用Drools規(guī)則引擎,可以按先來先服務(wù)(First Come First Served,F(xiàn)CFS)或稱先入先出(First In First Out,F(xiàn)IFO)的規(guī)則進(jìn)行調(diào)度,但是因為車間作業(yè)調(diào)度問題屬于NP-h(huán)ard問題,基于規(guī)則的專家系統(tǒng)并不能保證系統(tǒng)全局優(yōu)化,所以復(fù)雜車間作業(yè)調(diào)度問題往往采用遺傳算法和粒子群優(yōu)化算法等智能優(yōu)化算法求解。
目前,生產(chǎn)調(diào)度研究主要針對靜態(tài)生產(chǎn)環(huán)境中的調(diào)度優(yōu)化,多數(shù)集中在以Job-Shop問題為代表的基于最小化完工時間的靜態(tài)車間調(diào)度問題上。靜態(tài)調(diào)度要求生產(chǎn)中的所有零件信息和車間狀態(tài)是明確的,一旦生產(chǎn)計劃確定,車間就按計劃生產(chǎn),但加工的不確定性(如故障、延誤)使得這種既定生產(chǎn)作業(yè)難以實施,因此需要根據(jù)系統(tǒng)中工件的狀況不斷進(jìn)行重新調(diào)度,即進(jìn)行動態(tài)調(diào)度,此時可用Esper監(jiān)控和管理服務(wù)或流程中的活動情況。但是因為云制造環(huán)境的高度動態(tài)性、分布性和自治性,而且不像傳統(tǒng)生產(chǎn)調(diào)度那樣以某一性能指標(biāo)為目標(biāo),而是以包括完工時間、成本和可靠性等在內(nèi)的QoS為目標(biāo)來選擇和調(diào)度制造資源,所以云制造資源調(diào)度機(jī)制與傳統(tǒng)車間作業(yè)調(diào)度問題有很大不同,其復(fù)雜性更高。
在云計算產(chǎn)品中,雖然各個軟件供應(yīng)商都有自己的資源分配與任務(wù)調(diào)度模式,但是并沒有形成統(tǒng)一的標(biāo)準(zhǔn)和規(guī)范,當(dāng)前流行的云計算調(diào)度模型是Google于2004年提出的MapReduce,其模擬開源實現(xiàn)包括在Apache Hadoop項目中,Amazon,IBM,F(xiàn)acebook和Yahoo等許多著名IT公司都采用Hadoop構(gòu)建自己系統(tǒng)。Hadoop MapReduce默認(rèn)使用FIFO調(diào)度算法,它根據(jù)優(yōu)先級高低和到達(dá)時間的先后選擇被執(zhí)行的作業(yè),但存在資源利用率不高等問題。FIFO這樣的作業(yè)調(diào)度算法已在傳統(tǒng)制造車間獲得了應(yīng)用。雖然Hadoop還可提供公平調(diào)度算法(fair scheduler)和容量調(diào)度算法(capacityscheduler)以改善FIFO 的不足,但仍存在一定的缺陷,如未能很好地考慮不同作業(yè)需求差異和節(jié)點資源實際使用情況,資源利用率有待進(jìn)一步提高,資源配置仍是云計算面臨的一大挑戰(zhàn)。資源配置(資源調(diào)度)無疑也是云制造面臨的一大挑戰(zhàn)和關(guān)鍵問題,但是因為包括MapReduce在內(nèi)的云計算調(diào)度模型是針對云計算資源提出來的,所以需要根據(jù)云制造資源的特點,結(jié)合云計算調(diào)度算法和物聯(lián)網(wǎng)感知技術(shù),研究適用云制造的作業(yè)調(diào)度策略和資源映射方式,尤其要關(guān)注那些可為制造資源動態(tài)配置(動態(tài)調(diào)度)提供新思路的云計算容錯機(jī)制和負(fù)載均衡等理念,這些內(nèi)容將另文深入探討。需要說明的是,真正實現(xiàn)云制造將任重而道遠(yuǎn)。
當(dāng)使用SOA4MC 來開發(fā)實際企業(yè)應(yīng)用程序時,除了考慮服務(wù)功能需求外,還需要考慮整個系統(tǒng)的性能問題、可用性、安全性、可靠性、容錯性和可擴(kuò)展性等非功能性需求問題(即QoS問題)。采用ESB集成模式是滿足這些非功能性需求的有效手段,所選用的Synapse ESB 支持HTTP,SOAP,SMTP,JMS,F(xiàn)TP,POP3,SMTP,MTOM 等傳輸協(xié)議、許多Web服務(wù)規(guī)范(WS-*)和QoS,如WS-Addressing,WS-ReliableMessaging,WS-Security 和WS-Policy等,幾乎覆蓋了全部的基礎(chǔ)特性。與圖7和圖9a所示的基于服務(wù)編制的流程集成模式將各個服務(wù)直接集成有所不同,圖9b(該圖省略了底層的制造資源及其虛擬化層)所示的ESB集成模式將企業(yè)所執(zhí)行的業(yè)務(wù)活動、流程或規(guī)則視為服務(wù),采用總線來管理和簡化應(yīng)用之間的集成拓?fù)浣Y(jié)構(gòu),ESB起連通性和服務(wù)中介的作用,同時具有服務(wù)注冊等功能,從而實現(xiàn)不同形式的協(xié)議請求(如SOAP,SMTP,JMS,F(xiàn)TP等)和不同形式的服務(wù)或程序(包括Web服務(wù)、流程服務(wù)和規(guī)則服務(wù),以及遺留應(yīng)用程序和數(shù)據(jù)庫等)的集成。
圖9 服務(wù)集成的兩種模式
4 結(jié)束語
本文在抽象分析了SOA、云計算和云制造的基礎(chǔ)上,提出SOA4MC,并以Eclipse為集成開發(fā)平臺,選擇CloudSim,Tuscany SCA/STP,ApacheODE,Apache Synapse,Drools,Esper,Hadoop等開源插件,搭建了面向SOA4MC的開發(fā)環(huán)境,并通過從簡單的串行實例到復(fù)雜的柔性加工實例,展示了不同應(yīng)用場景需要用到不同插件的情形。
SOA4MC為集成開發(fā)環(huán)境提供了藍(lán)圖,而集成開發(fā)環(huán)境是實現(xiàn)SOA4CM 的工具和途徑,這種工具和途徑不是唯一的,這里采用廣泛使用的Web服務(wù)技術(shù)和常用開源軟件工具來實現(xiàn)。SOA4MC通過物聯(lián)網(wǎng)實現(xiàn)物理設(shè)備的智能接入,并通過虛擬化和服務(wù)化將計算資源延伸和拓展到制造資源,同時兼有SOA和云計算的特性來滿足云制造按需應(yīng)用的要求:一方面按面向服務(wù)原則通過松耦合、可重用、可互操作的服務(wù)構(gòu)建云制造應(yīng)用;另一方面按云計算理念對制造資源進(jìn)行集約化經(jīng)營管理,以更高質(zhì)量、更低成本的服務(wù)交付模式為用戶提供按需即取的服務(wù)。
在集成環(huán)境或應(yīng)用程序的開發(fā)中,采用開源軟件不但節(jié)省了軟件費(fèi)用并加快了開發(fā)進(jìn)度,而且研究這些開源代碼有益于啟發(fā)研究思路和博采眾家之長。在具體應(yīng)用中,并非一定要用到集成環(huán)境中的所有開發(fā)工具,也可能因應(yīng)用程序的需求,還要加入其他插件工具,由于所搭建的集成開發(fā)環(huán)境具有開放性和可伸縮性,可根據(jù)應(yīng)用需求和問題的復(fù)雜性按需選用或拓展。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:面向云制造服務(wù)架構(gòu)及集成開發(fā)環(huán)境(下)
本文網(wǎng)址:http://www.ezxoed.cn/html/support/1112158000.html