所选用的插件工具都集成到Eclipse中(如图4)同时需要,安装1.6版本以上的JDK。其中,Tomcat7.0为Web服务提供运行环境,它是Apache-Jarkartr的一个免费、开源的子项目,而Ant/Maven工具起到辅助作用。安装所选定的插件时,往往需要先安装其依赖性插件,此时可由Eclipse的Help菜单上的“Install New Software…”自动安装完成。另外,可进一步结合免费的Google Eclipse插件开发云应用程序,并可上传到Google App Engine(GAE)云应用平台上运行。但GAE主要面向云计算应用,当前还不完善,用于云制造还存在许多局限。
如前所述,SOA4CM 继承了SOA 和云计算的特性。SOA于1996年最先提出,已经形成Web服务和WS-BEPL系列的标准和协议,相对成熟,目前有Tuscany SCA和Synapse ESB等开源产品;而云计算于10年后的2006年才被正式提出来,虽然也有Apache Hadoop开源产品,但版本很低,还未成熟,只是云计算的初级实现,更没有形成标准规范。云制造发展有赖于云计算等相关技术的发展,反过来又促进云计算技术的发展。图4中的各层次与图2的各层次有一定对应关系,通过CloudSim虚拟化和Tuscany SCA服务化,解决松耦合、可重用的、可互操作的服务开发问题,并通过Apache ODE解决不同业务问题的Web服务联合起来执行的难题,以Synapse企业服务总线为中心实现不同服务之间的通信与整合。当业务需求变化时,流程中不符合要求的服务组件很容易被其他符合要求的服务组件替代,也可由已有服务通过SCA生成所需的新服务而不必从头开发,同时这种修改或调整限定于最小的范围,不会因某一层次变化引起其他层次的变化,从而实现业务服务的灵活装配、业务流程的定制和业务服务的快速集成,而Drools和Esper进一步增强了业务的敏捷性,Hadoop为资源集约化管理和服务交付提供支持。
下面以多工序生产问题为例,从简单到复杂展示集成开发环境(包括插件工具)的具体应用。
3 开发应用示例用
Eclipse开发Web应用程序(工程),生成一个部署描述设置文档web.xml,而在安装了云插件(如Hadoop插件或Google的GAE 插件)的Eclipse环境中开发云制造(云计算)应用程序,与Web应用程序开发类似,同样需要web.xml,此外,还需要额外的设置文档。如开发Hadoop应用程序,就需要额外的core-site.xml,hdfs-site.xml,mapred-site.xml设置文档,又如开发Google的GAE应用程序,还需要额外的appengine-web.xml设置文档,以便让系统清楚如何部署和运行云应用程序。云制造以服务(“一切皆为服务”)的方式提供资源,并为这种服务方式提供按需即取手段,因此如何实现制造资源服务化(含虚拟化)和服务按需即取(包含服务发现、调度和部署等)就成为关键问题。如前所述,SOA 是SOA4CM 的技术基础,Web服务是目前实现SOA/SOA4CM 最适宜的技术,因此SOA4CM 的服务开发可基于已有SOA 规范和Web服务技术进行,不同的是将所开发的服务放置于云端而形成云服务,然后通过云设置文档(如appengine-web.xml等)来管理云服务。
如前所述,生产加工即服务(FaaS),如何按需选择服务来组织生产是云制造面临的一个重要问题。现用前述的云制造服务开发工具,以一个零件的简单加工为例探讨FaaS的应用。在这个加工流程中,该零件(J1)有O11,O12和O13三个工序,按工艺先后顺序要求分别在机器1、机器2和机器3上加工2min,3min和5min,如图5所示。
图5 零件加工工序
要实现该流程加工,需要将3台机器服务化,而要实现服务化又首先需要将加工设备(Machine)虚拟化。这里利用CloudSim创建各个机器的虚拟机,并以Java 类表示(如对Machine1 机器,建立Machine1Service.Java),此时只要在该Java类上手工添加“@WebService”标注就可将其变成Web服务。更为方便的是,通过JAX-WS的创建,Web服务向导自动将其变为Web服务,包括可生成相应的Web服务程序和客户端程序,以及发布和监控Web服务,如图6所示。图6所示的情景是已生成了Machine1和Machine2的Web服务,正在选项生成Machine3的Web服务中,选择好后点击“Finish”按键就会生成Java类对应的wsdl和配置文件,并可发布到Tomcat中,同时会生成调用服务的客户端。这里生成的Web服务是为BPEL流程调用服务做准备。
通过Eclipse BPEL 设计器将经服务化后的Machine1,Machine2和Machine3(采用WSDL 定义服务,三者分别用Machine1Service.wsdl,Machine2Service.wsdl和Machine3Service.wsdl表示)按预定加工顺序连接起来,形成所需的业务流程,如图7所示。其中,receive(图中为receiveInput)表示接收请求输入,是整个BPEL流程的起点;Assign表示赋值,如AssignMachine1表示对Machine1赋值;Invoke表示调用服务,如InvokeMachine1表示调用Machine1服务;reply(图中为replyOutput)表示整个BPEL流程终点,把响应结果返回给服务请求者。类似地,BPEL流程本身也可生成一个Web服务,然后部署到Apache ODE服务器,此时请求者可调用该流程来实现预定功能。
图6 由Web服务想到创建Web服务
图5给出的简单加工例子旨在展示,只用到其中的CloudSim,Java EE 的JAX-WS 和ApacheODE等插件或工具。对于更为复杂的情形,例如图5所示的零件加工完成后,还需要运到另一热处理车间进行热处理,或者需要用不同于Java的其他语言编程,或者集成历史遗留应用系统,此时采用Tuscany SCA 就显得更方便并具有优势。图8所示为用Tuscany SCA 将图5所示的工序组合成一个称为Machining服务的子流程,并封装成Web服务方式,再与热处理服务(Heattreating)结合。
图7 BPEL表示的实例业务流程
图8 用Tuscany SCA开发图5所示的加工服务程序
图5只是单个零件的加工情形,该流程以串行的方式调用3台加工机器,而实际流程还可能有并行处理的机器和循环调用的机器。一个由4个工件(J1,J2,J3和J4)和6台机器(M1,M2,…,M6)组成的称为FT46的柔性作业问题,如表2所示,其中J1有下划线的数据对应图5所示的加工情形。
表2 FT46问题的时间表
对于表2所示的柔性作业加工调度问题,每个工件的每道工序可以由一台或者多台机器为其加工,因此每个工件可能有多条加工路径。在相同的工序中,由于其所对应的可加工机器的加工性能不同,同一道工序在不同机器上的加工时间也不同,不同的加工路径对应着不同的加工时间,需要引入智能技术来求解作业调度问题。使用Drools规则引擎,可以按先来先服务(First Come First Served,FCFS)或称先入先出(First In First Out,FIFO)的规则进行调度,但是因为车间作业调度问题属于NP-hard问题,基于规则的专家系统并不能保证系统全局优化,所以复杂车间作业调度问题往往采用遗传算法和粒子群优化算法等智能优化算法求解。
目前,生产调度研究主要针对静态生产环境中的调度优化,多数集中在以Job-Shop问题为代表的基于最小化完工时间的静态车间调度问题上。静态调度要求生产中的所有零件信息和车间状态是明确的,一旦生产计划确定,车间就按计划生产,但加工的不确定性(如故障、延误)使得这种既定生产作业难以实施,因此需要根据系统中工件的状况不断进行重新调度,即进行动态调度,此时可用Esper监控和管理服务或流程中的活动情况。但是因为云制造环境的高度动态性、分布性和自治性,而且不像传统生产调度那样以某一性能指标为目标,而是以包括完工时间、成本和可靠性等在内的QoS为目标来选择和调度制造资源,所以云制造资源调度机制与传统车间作业调度问题有很大不同,其复杂性更高。
在云计算产品中,虽然各个软件供应商都有自己的资源分配与任务调度模式,但是并没有形成统一的标准和规范,当前流行的云计算调度模型是Google于2004年提出的MapReduce,其模拟开源实现包括在Apache Hadoop项目中,Amazon,IBM,Facebook和Yahoo等许多著名IT公司都采用Hadoop构建自己系统。Hadoop MapReduce默认使用FIFO调度算法,它根据优先级高低和到达时间的先后选择被执行的作业,但存在资源利用率不高等问题。FIFO这样的作业调度算法已在传统制造车间获得了应用。虽然Hadoop还可提供公平调度算法(fair scheduler)和容量调度算法(capacityscheduler)以改善FIFO 的不足,但仍存在一定的缺陷,如未能很好地考虑不同作业需求差异和节点资源实际使用情况,资源利用率有待进一步提高,资源配置仍是云计算面临的一大挑战。资源配置(资源调度)无疑也是云制造面临的一大挑战和关键问题,但是因为包括MapReduce在内的云计算调度模型是针对云计算资源提出来的,所以需要根据云制造资源的特点,结合云计算调度算法和物联网感知技术,研究适用云制造的作业调度策略和资源映射方式,尤其要关注那些可为制造资源动态配置(动态调度)提供新思路的云计算容错机制和负载均衡等理念,这些内容将另文深入探讨。需要说明的是,真正实现云制造将任重而道远。
当使用SOA4MC 来开发实际企业应用程序时,除了考虑服务功能需求外,还需要考虑整个系统的性能问题、可用性、安全性、可靠性、容错性和可扩展性等非功能性需求问题(即QoS问题)。采用ESB集成模式是满足这些非功能性需求的有效手段,所选用的Synapse ESB 支持HTTP,SOAP,SMTP,JMS,FTP,POP3,SMTP,MTOM 等传输协议、许多Web服务规范(WS-*)和QoS,如WS-Addressing,WS-ReliableMessaging,WS-Security 和WS-Policy等,几乎覆盖了全部的基础特性。与图7和图9a所示的基于服务编制的流程集成模式将各个服务直接集成有所不同,图9b(该图省略了底层的制造资源及其虚拟化层)所示的ESB集成模式将企业所执行的业务活动、流程或规则视为服务,采用总线来管理和简化应用之间的集成拓扑结构,ESB起连通性和服务中介的作用,同时具有服务注册等功能,从而实现不同形式的协议请求(如SOAP,SMTP,JMS,FTP等)和不同形式的服务或程序(包括Web服务、流程服务和规则服务,以及遗留应用程序和数据库等)的集成。
图9 服务集成的两种模式
4 结束语
本文在抽象分析了SOA、云计算和云制造的基础上,提出SOA4MC,并以Eclipse为集成开发平台,选择CloudSim,Tuscany SCA/STP,ApacheODE,Apache Synapse,Drools,Esper,Hadoop等开源插件,搭建了面向SOA4MC的开发环境,并通过从简单的串行实例到复杂的柔性加工实例,展示了不同应用场景需要用到不同插件的情形。
SOA4MC为集成开发环境提供了蓝图,而集成开发环境是实现SOA4CM 的工具和途径,这种工具和途径不是唯一的,这里采用广泛使用的Web服务技术和常用开源软件工具来实现。SOA4MC通过物联网实现物理设备的智能接入,并通过虚拟化和服务化将计算资源延伸和拓展到制造资源,同时兼有SOA和云计算的特性来满足云制造按需应用的要求:一方面按面向服务原则通过松耦合、可重用、可互操作的服务构建云制造应用;另一方面按云计算理念对制造资源进行集约化经营管理,以更高质量、更低成本的服务交付模式为用户提供按需即取的服务。
在集成环境或应用程序的开发中,采用开源软件不但节省了软件费用并加快了开发进度,而且研究这些开源代码有益于启发研究思路和博采众家之长。在具体应用中,并非一定要用到集成环境中的所有开发工具,也可能因应用程序的需求,还要加入其他插件工具,由于所搭建的集成开发环境具有开放性和可伸缩性,可根据应用需求和问题的复杂性按需选用或拓展。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:面向云制造服务架构及集成开发环境(下)