Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1283134
  • 博文数量: 135
  • 博客积分: 10588
  • 博客等级: 上将
  • 技术积分: 1325
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-18 11:12
文章分类

全部博文(135)

文章存档

2013年(6)

2012年(3)

2011年(11)

2010年(7)

2009年(14)

2008年(6)

2007年(42)

2006年(46)

分类: Java

2007-09-10 15:23:19

    有时候某个单体Agent需要周期性的执行某项动作,比如某个Agent需要定时从互联网上抓取某些公开数据以填充自身知识库,或者对本地数据库进行操作和更新。对JADE来说,用TickerBehaviour很容易实现,下面是一个周期性操作数据库的简单例子。
package jade.capScoreAdopter;

import jade.core.*;
import jade.core.behaviours.*;
import java.sql.*;
import common.DataBaseConnection;

public class IndustryScoreAdopt extends Agent {

    protected void adoptScore(){
        Connection conn=null;
        CallableStatement proc=null;
        try{
            conn=DataBaseConnection.getConnection();
            proc=conn.prepareCall("{call P_WriteIndustryScore}");
            proc.close();
            conn.close();
        }
        catch (SQLException e)
        {
            System.out.println("调用存储过程出错!");
        }
        
       
    }

    protected void setup() {
        System.out.println("Agent " + getLocalName() + " started.");
       
        addBehaviour(new TickerBehaviour(this, 1000000) {// 1000秒执行一次
            protected void onTick() {
                adoptScore();
                System.out.println("Agent " + myAgent.getLocalName()
                        + "执行一次知识调整: tick=" + getTickCount());
            }
        });

    }
}
附:创建数据库连接类
package common;

import java.sql.*;

public class DataBaseConnection {

    public static Connection getConnection(){
        Connection conn=null;
//        连接数据库,sqlserver连接串
        String CLASSFORNAME="com.microsoft.jdbc.sqlserver.SQLServerDriver";
        String SERVANDDB="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=enterprisediagnose";
        String USER="sa";//用户和密码
        String PWD="sa";
        try{
            Class.forName(CLASSFORNAME);
            conn = java.sql.DriverManager.getConnection(SERVANDDB,USER,PWD);

        }catch(Exception e){
            e.printStackTrace();
            System.out.println("Error Trace in getConnection() : " + e.getMessage());
        }
        return conn;
       
    }
}

 
阅读(2989) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~