2.1 基于分布式组件对象模型的车间系统内部集成
各子系统按功能构件的方式实现,功能构件首先封装成具有DCOM接口的组件:对各个子系统进行统一对象建模与结构设计,有关的决策模型和控制算法封装在相应的知识库和数据库中;应用DCOM技术,通过对系统功能模型分析,规范业务构件和构件的边界;设计各功能子组件,然后将各功能子组件相关的生产业务活动封装起来,构成了一个功能构件,以便具体实现车间活动的某一项业务,如设备管理构件将设备添加、设备维修和设备报废,以及设备查询、设备状态发布等过程封装起来,同时用接口描述语言(Interface Definition Language,IDL)描述该功能组件,得到IDL接口文件。各功能组件采用一种动态客户端/服务器(Client/Server,C/S)结构,即每个功能组件既可以作为客户端应用程序来调用DOOM对象提供的服务,亦可作为服务器来为其他成员提供透明服务。对现有的应用系统,如CAPP等也设计了接口文件,按DCOM组件的设计要求进行封装,从而实现系统的集成。
各功能模块设置信息访问器(信息访问组件)和信息发布器(信息发布组件)。利用信息访问器查询和获取其他模块所发布的信息,如API-FiudXXX实现信息的查询,API-GetXXX实现信息的获取;而信息发布器将本模块管辖部分所产生的车间公开信息对系统内发布,供系统内其他功能模块使用,如API-PutXXX实现信息的发布。需要发布消息的格式按事先定义好的方式进行,格式包括消息名称、消息说明、消息获取方式和注意事项等,而信息的内容则如图2所示。
本文提出的信息发布器和信息访问器的工作原理类似于发布:订阅中间件,当木组件内有某类事件发生时(如设备故障的发生),该组件的信息发布器向订阅这类事件的组件发布通知(触发一个事件),接受方组件的信息访问器在收到通知后决定是否对通知做出回应。而信息发布器同时将信息保存在集成平台的信息队列(临时数据库)中,等待信息接受方的信息访间器将信息取出。信息发布器和信息访问器的通信是异步的,事件的订阅方在订阅了事件后,可以着手去做别的事情,而发布方在发布了通知后,也不必等到订阅方给出回应信息。
具体实现时,功能构件的IDL文件经IDL编译器进行编译后,产生了给客户端应用程序使用的Stub原始程序(信息访问器),以及给服务器端使用的Skeleton原始程序(信息发布器);然后,编写客户端程序来激发和处理对已定义对象上操作的请求,为服务器编写能响应并实现客户端请求的代码;最后,分别把Stub原始程序包含在客户端应用程序的项目中,联编生成可执行的客户端程序,把Skeleton原始程序包含在DCOM服务器的项目中,联编生成可执行的服务器程序。通过对象适配器将Server对象类注册进现实库。这样,当客户使用Server对象时,服务器能自动运行。采用DCOM规范建立了功能构件的模型后,各成员构件、系统管理构件和其他构件分别被封装成具有IDL接口的DCOM应用对象,利用DCOM规范提供的“软总线”结构和系统管理构件提供的网络注册功能,各成员构件以即插即用的方式连接到整个系统集成框架中,从而实现各类功能构件的快速集成。当运行环境发生变化时,根据环境的要求对成员构件进行增加和删除,从而实现系统的重构。