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