APP下载

基于JADE的移动端个人服务系统设计与实现

2020-03-18姜庆彬涂志莹

智能计算机与应用 2020年9期
关键词:发布者使用者框架

姜庆彬, 涂志莹

(哈尔滨工业大学 计算机科学与技术学院, 哈尔滨 150001)

0 引 言

随着科技的迅速发展和生活水平的不断提高,人与人之间的交互更加密切和频繁,在各种社交场合中经常出现需要迅速的了解其他人的个人信息的情况,尤其是在现实场景中经常会出现“机会式社交”,即某几个人仅存在短暂交集的需要,在很短的时间中需要互相传递信息,过了这段时间之后,就不需要再了解彼此,甚至可能再也不见。例如:在一个国际会议的场景中,大家彼此不认识,也没有任何的社交联系,会议结束后很可能不会再联系了,但是在会议上需要知晓其他人的研究领域、研究内容等重要信息;再例如:在医院这个场景中,医生与每一个病人只有很短的交集,病人需要快速的将过去的病例信息传递给医生,帮助医生迅速了解病人的情况并对症诊断,诊断结束后病人和医生很可能不会有任何交集。因此,研究新型的个人信息交互方式具有重要的应用及市场价值。

移动端个人服务系统是将机会式社交中短时间传递信息的行为作为个人服务,主动分享信息的一方作为服务发布者,接收分享信息的一方作为服务使用者,使用JADE框架运行个人服务以及在服务发布者和服务使用者之间实现服务内容传递[1]。系统分为两个部分:Android客户端和服务器后端,服务使用者和服务发布者要在Android客户端进行服务下载、编辑服务内容、服务注册、服务查询、获取服务内容、查看分享者等操作,相关的数据层支持由服务器后端来完成。

1 移动端个人服务消息传递方式设计

1.1 基于JADE的个人服务发布与使用结构设计

移动端个人服务发布者与使用者之间的消息传递使用JADE框架来实现。JADE是基于对等通信体系结构的分布式多agent应用程序开发的中间件框架[2]。 JADE框架是基于agent实现的,允许每个agent程序动态发现其他agent程序,并通过混合型p2p的方式与之通信。由于agent具有独立性,即每个agent程序独立运行,所以可以在个人服务用户登录Android客户端的同时根据该用户的信息运行一个唯一的agent程序,向其他个人服务用户发送服务请求或服务内容[3];考虑到个人服务用户并不像企业级服务那样稳定,个人服务的发布者和使用者在发布服务和使用服务时可能受到时间、地点等影响,无法按时进行服务内容的传递[4],而JADE框架下agent之间的异步消息通讯方法可以很好地解决这个问题,每个agent接收到其他agent传来的信息时不会立刻响应,而是根据自身的逻辑判断动态地响应。在Android客户端中,使用JADE框架可以为每一个移动端服务用户建立一个agent节点,服务发布者和服务使用者登录时会加入p2p网络,系统在服务器端也建立一个manager-agent节点作为各个agent的管理中心和混合型p2p网络的中心节点,专门用于记录移动端用户的服务节点信息和服务发布情况,相关结构图和操作步骤如图1所示。

图1 系统agent结构与用户操作步骤图

使用JADE框架实现agent之间传递消息时需要设计自定义Behaviour类,发送消息时构建DataSend类型的ACLMessage,满足JADE的发送条件时调用agent.send方法将消息发送给指定接受者agent,如果不指定接受者将会发送到manager-agent,由其进一步广播给所有agent;指定接受者agent在Behaviour类中使用agent.receive方法接收Serializable类型的ACLMessage,根据个人服务消息格式对ACLMessage进行解析。

1.2 个人服务消息格式设计

JADE中agent之间的通信使用ACLMessage类作为载体,通信时记录了发送者agent信息、接受者agent信息和通信内容,本系统中需要对通信内容的数据结构进行设计。个人服务消息传输的内容可以是服务请求消息、服务反馈消息、服务注册消息以及服务解除消息,其中服务请求消息和服务反馈消息均需要记录服务发布者信息和服务使用者信息,服务请求信息还需要记录服务请求参数,服务反馈消息还需要记录服务结果,服务注册消息和服务解除消息是发送给manager-agent的,所以均只需要记录服务发布者信息。除此之外,这四类消息还要记录服务标识信息,包括服务名、服务id、服务简介等。发送者agent使用MessageContent类表示服务信息,通信时将服务信息注入MessageContent类,使用GSON框架的toJson方法将其转换成JSON对象,赋值给ACLMessage的通信内容参数。接受者agent接收到ACLMessage后,读取其中通信内容参数,将其使用fromJson方法反序列化成MessageContent对象,读取其中信息,判断其属于哪一种个人服务消息,然后进行不同的操作。

2 系统设计

系统整体技术架构如图2所示,其中左侧是服务器后端框架,后端使用SpringMVC框架作为应用层框架,Controller通过DispactcherServlet与Android客户端前端界面进行交互,同时又通过数据操作处理组件与底层的mysql持久化数据库以及redis缓存数据库进行文件和数据库的交互[5]。Android客户端实现移动端个人服务平台的基础界面和服务界面,服务加载组件使用文件操作工具FileUtils和Dalvik类加载机制加载服务镜像,并与个人服务逻辑组件密切交互。JADE框架同时存在与这两个子系统,用来服务间的消息传输; manager-agent包含已发布服务的管理组件,与redis中的服务缓存交互数据,个人服务平台的user-agent作为移动端用户的agent启动,包含用户缓存加载组件,对移动端用户信息和服务缓存操作;Agent之间通过JADE框架提供的Behavior类和ACLMessage类传输服务信息。

2.1 Android客户端设计

系统Android客户端使用Android SDK 27作为开发版本,兼容了Android6.0以上的系统,使用AndroidStudio作为开发工具。移动端个人服务系统客户端需要实现的功能模块划分如下:

(1)账号管理模块:系统用户需要使用账号管理模块提供的功能登录和注册,并且允许用户修改自己的个人信息,在服务的发布与使用过程中使用;

(2)服务发布模块:服务发布者通过此模块发布服务,将服务发布信息发送给manager-agent供给服务使用者查询;

(3)服务运行模块:服务发布者发布个人服务后,个人服务需要运行在发布者agent中,等待服务使用者获取服务结果;

(4)服务查询模块:服务使用者使用此模块在manager-agent查询已发布的服务;

(5)服务使用模块:获取到服务发布者信息后,服务使用者使用此模块使用p2p方式从服务发布者处直接获取服务结果。

图2 系统整体技术架构图

对移动端agent服务交互的类模型设计如下,UserAgent类会在用户登录成功时启动,在JADE框架生成的container中,自动调用setup方法初始化agent。UserAgent依赖于4个类ParticipantsManager、ServiceListener、ServiceSpeaker和MessageContent,其中前3个类都间接继承自Behavior类,为agent之间消息传输提供支持,ParticipantsManager类用于实时更新移动端服务使用者列表,ServiceListener类用于实时监听移动端服务使用者发来的服务请求,ServiceSpeaker类用于移动端服务发布者向服务使用者返回服务结果;MessageContent是一个服务消息的实体类,标注了服务消息的类型、发布者和使用者的信息、服务内容、服务参数、服务结果等信息,agent之间会传输MessageContent的json格式。详细类图如图3所示。

图3 移动端agent服务交互类模型设计

2.2 服务器后端设计

服务器后端起到两个作用:一个是manager-agent作为管理中心,agent需要运行在服务器端,保证其可以稳定运行并作为混合型p2p的中心节点,使得只要服务器正在运行,移动端服务用户就可以接入p2p网络进行服务的发布和使用;另一个作用是移动端服务用户的用户信息、服务发布与使用情况需要记录,所以需要后端提供数据层持久化支持,本系统使用Springmvc+mysql作为web service技术框架。SpringMVC是常用的服务器端框架,具有稳定性和易维护性。

服务器后端的功能模块:

(1)服务注册模块:manager-agent接收到服务发布者的服务发布消息后,使用服务注册模块记录服务发布信息;

(2)服务查询模块:manager-agent向服务使用者返回已发布服务信息;

(3)服务数据统计模块:服务器后端对移动端服务发布者和服务使用者的服务发布和使用情况进行统计;

(4)服务权限控制模块:允许服务发布者指定只有某些用户才能使用其发布的服务。

3 系统中几种个人服务的实现

个人服务必须至少拥有一个发布者和一个使用者,并且在实际的应用场景中,还会经常出现一个发布者发布的服务供多个使用者使用,甚至在一个服务场景中,每一个用户既是服务发布者也是服务使用者,在使用其他用户提供的服务时也在向其他用户提供服务[6]。前者可以简称为一对多场景服务,后者可以简称为多对多场景服务。系统实现了分享通讯录服务和快捷讨论组服务。分享通讯录是一个一对多场景服务,移动端获取Android读写通讯录的权限,服务发布者预先设置分享的通讯录内容,不指定服务使用者,以便所有满足权限的用户均可以使用服务,获取到其分享的通讯录内容,选择性的添加到自己的手机上。快捷讨论组服务是一个多对多场景服务,每个人都可以看到其他人的发言,并且自己可以发言给别人看。为了避免混乱,多对多场景服务的实现让一个服务发布者作为总发布者,其他服务参与者都作为服务使用者,只有当其发言时才作为服务发布者,调用服务发布模块操作。

4 结束语

通过对JADE框架技术在移动端服务消息传递的研究,使用软件设计方法,设计并实现了移动端个人服务系统,该系统运行在Android设备上,允许用户在其中发布和使用个人服务。整体系统操作简单,功能清晰,为用户提供了一种新型的个人服务使用方式,并且易于维护和扩展。

猜你喜欢

发布者使用者框架
设计让您在喜爱的虚拟世界中自由奔跑
有机框架材料的后合成交换
框架
新加坡新法规引争议
浅谈框架网页的学习
新型拼插休闲椅,让人与人的距离更近
在微信朋友圈买到假货,该如何维权?
抓拍神器
网络大V转发违法广告须担责
寓言