📄 agentreceiver.java
字号:
package examples.receivers;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import jade.core.*;
import jade.core.behaviours.*;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;
import java.util.*;
import java.sql.*;
public class AgentReceiver extends Agent {
class my3StepBehaviour extends SimpleBehaviour {
final int FIRST = 1;
final int SECOND = 2;
final int THIRD = 3;
int begin;
String jyjg,jygs;
String url="jdbc:odbc:gpjy";
private int state = FIRST;
private boolean finished = false;
public my3StepBehaviour(Agent a) {
super(a);
}
public void action() {
while(true)
{
switch (state){
case FIRST: {if (op1()) state = SECOND; else state= FIRST; break;}
case SECOND:{op2(); finished=true; break;}
}
}//end while
}
public boolean done() {
return finished;
}
private boolean op1(){
MessageTemplate m1 = MessageTemplate.MatchPerformative(ACLMessage.INFORM);
MessageTemplate m2 = MessageTemplate.MatchLanguage("PlainText");
MessageTemplate m1andm2 = MessageTemplate.and(m1,m2);
System.out.println( "\nAgent "+getLocalName()+" in state FIRST.op1 is waiting for a message matching the template ");
//The agent waits for a specific message. If it doesn't arrive the behaviour is suspended until a new message arrives.
ACLMessage msg = receive(m1andm2);
if (msg!= null){
System.out.println("\nAgent "+ getLocalName() + " received the following message in state FIRST.op1: ");
System.out.println(msg.toString());
return true;
}
else
{
System.out.println("\nNo message matching the template received in state FIRST.op1. Blocking the behaviour");
block();
return false;
}
}
private void op2(){
System.out.println("\nAgent "+ getLocalName() + " in state SECOND.op2 is waiting for any message in next 5000 msec");
//Using a blocking receive causes the block of all the behaviours
ACLMessage msg = blockingReceive(50000);
if(msg != null) {
System.out.println("\nAgent "+ getLocalName() + " received the following message in state SECOND.op2: ");
String tempStr=(msg.getContent()).toString();
System.out.println(tempStr);
begin=tempStr.indexOf(",");
jyjg=tempStr.substring(0,begin);
jygs=tempStr.substring(begin+1);
//........................................................
try{
System.out.println(jyjg);
System.out.println(jygs);
Thread.sleep(5000);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection(url,"sa","");
DatabaseMetaData dma=con.getMetaData();
System.out.println("\n Connected to " + dma.getURL());
System.out.println("Driver "+dma.getDriverName());
System.out.println("Version "+dma.getDriverVersion());
System.out.println("");
Statement stmt=con.createStatement();
PreparedStatement pstmt=con.prepareStatement("UPDATE shezhi SET jygs='"+jygs+"',jyjg='"+jyjg+"'");
pstmt.executeUpdate();
ResultSet rs=stmt.executeQuery("SELECT * FROM shezhi");
System.out.println("Result after executeUpdate");
rs.close();
stmt.close();
con.close();
}
catch(SQLException ex){
System.out.println("\n****SQLException caught ****\n");
while(ex!=null){
System.out.println("SQLState:"+ ex.getSQLState());
System.out.println("Message:"+ ex.getMessage());
System.out.println("Vendor: "+ ex.getErrorCode());
ex=ex.getNextException();
System.out.println("");
}
}
catch(java.lang.Exception ex){
ex.printStackTrace();
}
//.........................................................
//System.out.println((msg.getContent()).toString());
System.out.println(jyjg);
System.out.println(jygs);
}
else{
System.out.println("\nNo message received in state SECOND.op2");
}
}
} // End of my3StepBehaviour class
protected void setup() {
my3StepBehaviour mybehaviour = new my3StepBehaviour(this);
addBehaviour(mybehaviour);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -