当前位置:文档之家› 基于Agent的分布式图书馆管理系统

基于Agent的分布式图书馆管理系统

图5-I系统主界面
管理员成功登录后,为他建立一个作用范围为Application的javaBean,B口管理Agent(manager)。

然后启动JADE,将manager加入到一个新的Container中,并通过manager根据不同的工作人员登录来启动相应的其它六个后台Agent:采购验收Agent(stockcheck),编目Agent(editcatalogue),流通Agent(flow),读者管理Agent(readermanage),Web服务Agent(webservice),系统维护Agent(maintenance)。

这些后台Agent同在一个Container之下,因此它们相互之间可以通过Container来获得其它Agent的接口hgentController。

manager是管理员与系统的通信接口,管理员可以通过manager这个Agent来控制其它Agent的运行。

比如通过suspend所有Agent来关闭系统;通过activat所有Agent来重启系统。

Manager的类圈如图5-2所示,其中stockcheck、editcatalogue、flow、readermanage、webservice、maintenance为系统中其它六个后台Agent的控制接口,类型都是jade.wrapper.AgentController。

管理Agent类就是通过调用这个类里的start0和suspend0两个函数来实现对后台Agent的启动、关闭等控制操作。

msg类型为jade.1ang.acl.ACLMessage。

图5--3JADE平台界面
管理managerAgent首先需要引入一系列JADE系统包。

m。

portjade.core.Agent:
i‘mportjade.core.behaviours.木:
i’mportjade.1ang.acl.hCLMessage:
i’mportjade.1ang.acl.MessageTe呻late:
m‘portjade.domain.DFService:
m‘portjade.domain.FIPAException:
m。

portjade.domain.FIPhhgentManagement.OFhgentDescriptioil:
I。

mportjade.domain.FIP从gentManagement.ServiceDescription:
1’Bportjava.util.木:
该Agent需要查找数据库信息,所以还要引入一些链接数据库的包
importjava.sql.Connection,
importjava.sql.DriverManager:
importjava.sql.Statement:
在重载的setup()方法中,首先调用getContainercontr。

1ler().createNewAgent()方法启动webservAgent,作为后台为接下来的任务做准备。

然后调用addBehaviour()方法增加两个CyclicBehaviour行为(OfferRequestsServer和OrdersServer)。

0fferRequestsserver负责接收接受系统用户的登录信息,一旦接到信息,则将该条信息转给searchAgent到manager数据表中查询管理员信息,以确认该用户登录的有效性。

OrdersServer负责响应searchAgent的确认信息,一旦接收到
当借书还书管理员登录系统并选择借书菜单项后,进入到如图5-5所示的借书页面,如果借书,用条码枪分别扫描读者借阅证和书籍条形码,将数据扫描到该页面的借阅证号和书号框内,点击确定。

图5-5借书页面
flowAgent收到借阅证号和书号后,发给searchAgent,searchAgent接收lend、return和fineAgent发来的要求信息查询的消息,并将查询结果转发给validateAgent进行资格判定。

以消息模板的方式接收各Agent的消息,以接收lendAgent为例:
ACLMessagemsgl=receive(MessageTemplate
.MatchSender(newAID(”lend’.AID.ISL0cALNAME))):接下来将消息中的内容取出与相应数据表中的记录进行匹配,链接数据库的代码如下:
C1ass.forName(”com.mysq].jdbc.Driver’):
Connectioncon=
DriverManager.getConnection(’jdbc:mysql://127.0.0.1:3306/
1ibrary?user=root&password=root’):
接下来设置和执行sql语句,如
finalStatementstmt=con.createStatement0:
Stringsql=’INSERTINTOmanagervaluesr’’
图5-6借书成功
图5_7借书失败
还书(return)Agent,与借书过程相似,首先,returnAgent收到return.jsp发来的确认还书消息,调用searchAgent查找数据库,执行sq]语句,从validateAgent得到是古超期的的信息,如果有超期情况,则向fineAgent发消息,由它来进行罚款业务处理。

如没有超期调用updateAgent更新数据库,将该用户
的借书记录删除,还书成功,发成功消息给return.jsp;否则,则发失败消息给return.jsp。

罚款(fine)Agent,同returnAgent同时启动在后台运行,等待还书过程中的超期罚款,也可由管理员直接启动,当管理员点击罚款菜单项进入fine.jsp页面,如图5-8所示,在该页面中首先显示该读者所借的书,点击相应的罚款链接后可分别对丢书和损坏情况进行处理,fineAgent主要生成罚款金额,并打印罚款信息。

图5-8罚款页面
罚单页面如图5-9所示:
天津大学硕士学位论文第五章分布式图书管理系统的实现
图5-9罚单页面
最后,图5-10是为读者提供的Web界面,读者输入自己的借阅证号和密码,就可以实现图书检索、查看个人借阅信息、图书续借、图书预约及修改个人密码等功能。

图5.10读者登录页面。

相关主题