travelbroker.java
来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 693 行 · 第 1/2 页
JAVA
693 行
System.exit(-1); } } else { System.err.println("setInsertY() :Error Result isn't available"); System.exit(-1); } } /** * TravelBroker advertise/broker-all/ask-all * scenario (15) * */ private void setAdvertiseBrokerallAskallT() { KQML kqml = new KQML(); String rw = new String(kManager.getInitialID()); String rw2 = new String(kManager.getInitialID()); kqml.setPerformative("advertise"); kqml.setParameter(":name", agentName); kqml.setParameter(":sender", localHost); kqml.setParameter(":receiver", facilitator); kqml.setParameter(":reply-with", rw); kqml.setParameter(":language", "KQML"); kqml.setParameter(":ontology", "kqml-ontology"); KQML kqml_i = new KQML(); kqml_i.setPerformative("broker-all"); kqml_i.setParameter(":sender", facilitator); kqml_i.setParameter(":receiver", localHost); kqml_i.setParameter(":in-reply-to", rw); kqml_i.setParameter(":language", "KQML"); kqml_i.setParameter(":ontology", "kqml-ontology"); KQML kqml_ii = new KQML(); kqml_ii.setPerformative("ask-all"); kqml_ii.setParameter(":sender", facilitator); kqml_ii.setParameter(":receiver", localHost); kqml_ii.setParameter(":reply-with", rw2); kqml_ii.setParameter(":language", "anACL"); kqml_ii.setParameter(":ontology", "travel"); String content = new String( "(:carrier" +" \n"+ " :flight" +" \n"+ " :departure" +" \n"+ " :arrival" +" \n"+ " :deptTime)" ); kqml_ii.setContent(content); kqml_i.setContent(kqml_ii); kqml.setContent(kqml_i); Conversation conv = null; try { conv = (Conversation) kManager.sendMessage(kqml); } catch (SendFailedException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (InvalidMessageSequenceException ex) { ex.printStackTrace(); } catch (JKQMLException ex) { ex.printStackTrace(); } conv.getResult().waitFor(0); } /** * TravelBroker advertise/rec-all/sub/ask-all * scenario (16) * */ private void setAdvertiseRecruitoneSubAskallT() { KQML kqml = new KQML(); String rw = new String(kManager.getInitialID()); String rw2 = new String(kManager.getInitialID()); String rw3 = new String(kManager.getInitialID()); kqml.setPerformative("advertise"); kqml.setParameter(":name", agentName); kqml.setParameter(":sender", localHost); kqml.setParameter(":receiver", facilitator); kqml.setParameter(":reply-with", rw); kqml.setParameter(":language", "KQML"); kqml.setParameter(":ontology", "kqml-ontology"); KQML kqml_i = new KQML(); kqml_i.setPerformative("recruit-one"); kqml_i.setParameter(":sender", facilitator); kqml_i.setParameter(":receiver", localHost); kqml_i.setParameter(":in-reply-to", rw); kqml_i.setParameter(":language", "KQML"); kqml_i.setParameter(":ontology", "kqml-ontology"); KQML kqml_ii = new KQML(); kqml_ii.setPerformative("subscribe"); kqml_ii.setParameter(":sender", facilitator); kqml_ii.setParameter(":receiver", localHost); kqml_ii.setParameter(":reply-with", rw2); kqml_ii.setParameter(":in-reply-to", rw); kqml_ii.setParameter(":language", "KQML"); kqml_ii.setParameter(":ontology", "kqml-ontology"); KQML kqml_iii = new KQML(); kqml_iii.setPerformative("ask-all"); kqml_iii.setParameter(":sender", facilitator); kqml_iii.setParameter(":receiver", localHost); kqml_iii.setParameter(":reply-with", rw3); kqml_iii.setParameter(":in-reply-to", rw); kqml_iii.setParameter(":language", "anACL"); kqml_iii.setParameter(":ontology", "travel"); String content = new String( "(:carrier" +"\n"+ " :flight" +"\n"+ " :departure" +"\n"+ " :arrival" +"\n"+ " :deptTime)" ); kqml_iii.setContent(content); kqml_ii.setContent(kqml_iii); kqml_i.setContent(kqml_ii); kqml.setContent(kqml_i); Conversation conv = null; try { conv = (Conversation) kManager.sendMessage(kqml); } catch (SendFailedException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (InvalidMessageSequenceException ex) { ex.printStackTrace(); } catch (JKQMLException ex) { ex.printStackTrace(); } conv.getResult().waitFor(0); } /** * TravelBroker recommend-one (insert) * scenario (17) * */ private void setRecommendoneSubAskallY() { KQML kqml = new KQML(); String rw = new String(kManager.getInitialID()); String rw2 = new String(kManager.getInitialID()); kqml.setPerformative("recommend-one"); kqml.setParameter(":name", agentName); kqml.setParameter(":sender", localHost); kqml.setParameter(":receiver", facilitator); kqml.setParameter(":reply-with", rw); kqml.setParameter(":language", "KQML"); kqml.setParameter(":ontology", "kqml-ontology"); KQML kqml_i = new KQML(); kqml_i.setPerformative("subscribe"); kqml_i.setParameter(":sender", localHost); kqml_i.setParameter(":reply-with", rw2); kqml_i.setParameter(":language", "KQML"); kqml_i.setParameter(":ontology", "kqml-ontology"); KQML kqml_ii = new KQML(); kqml_ii.setPerformative("ask-all"); kqml_ii.setParameter(":sender", localHost); kqml_ii.setParameter(":reply-with", rw2); kqml_ii.setParameter(":language", "anACL"); kqml_ii.setParameter(":ontology", "yellowpages"); String content = new String( "(:category travel " +"\n"+ " :subCategory airline" +"\n"+ " :class anacl_travel )" ); kqml_ii.setContent(content); kqml_i.setContent(kqml_ii); kqml.setContent(kqml_i); Conversation conv = null; try { conv = (Conversation) kManager.sendMessage(kqml); } catch (SendFailedException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (InvalidMessageSequenceException ex) { ex.printStackTrace(); } catch (JKQMLException ex) { ex.printStackTrace(); } conv.getResult().waitFor(45000); Result res = conv.getResult(); if (res.isAvailable()) { ReturnValue rtn = (ReturnValue)res.getResult(); if ( rtn.isOK() ) { print("result value : " + rtn.getReturnValue().toString()); KQML kqml_result = null; try { kqml_result = new KQML(rtn.getReturnValue().toString()); } catch (NotListException ex) { ex.printStackTrace(); System.exit(1); } catch (MalformedSExpressionException ex) { ex.printStackTrace(); System.exit(1); } // reserve address of agent that can be inserted receiverAddr = new String(kqml_result.getParameter(":receiver")); subscribeID = new String(kqml_result.getParameter(":in-reply-to")); print("subscribeID :" + subscribeID); } else { System.err.println("setRecommendoneSubAskallY() : recommend-one"); System.err.println("setRecommendoneSubAskallY() : " + (String)rtn.getReturnValue()); System.exit(-1); } } else { System.err.println("setRecommendoneSubAskallY() :Error Result isn't available"); System.exit(-1); } } /** * TravelBroker subscribe/ask-all(yellowpages) * scenario (19) */ void setSubAskallY(String category, String subCategory) { KQML kqml = new KQML(); String rw = new String(kManager.getInitialID()); String rw2 = new String(kManager.getInitialID()); kqml.setPerformative("subscribe"); kqml.setParameter(":name", agentName); kqml.setParameter(":sender", localHost); kqml.setParameter(":receiver", receiverAddr); kqml.setParameter(":in-reply-to", subscribeID); kqml.setParameter(":reply-with", rw); kqml.setParameter(":language", "KQML"); kqml.setParameter(":ontology", "kqml-ontology"); KQML kqml_i = new KQML(); kqml_i.setPerformative("ask-all"); kqml_i.setParameter(":sender", localHost); kqml_i.setParameter(":receiver", facilitator); //kqml_i.setParameter(":in-reply-to", subscribeID); kqml_i.setParameter(":reply-with", rw2); kqml_i.setParameter(":language", "anACL"); kqml_i.setParameter(":ontology", "yellowpages"); String content = new String( "(:category " + category +"\n"+ " :subCategory " + subCategory + ")" ); kqml_i.setContent(content); kqml.setContent(kqml_i); Conversation conv = null; try { conv = (Conversation) kManager.sendMessage(kqml); } catch (SendFailedException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (InvalidMessageSequenceException ex) { ex.printStackTrace(); } catch (JKQMLException ex) { ex.printStackTrace(); } //AgentInfoSubscriber subscriber = new AgentInfoSubscriber(conv, this); AgentInfoSubscriber subscriber = new AgentInfoSubscriber(conv, this, tFrame); subscriber.start(); } /** * print for debug. * * @param msg print message */ private void print(String msg) { if (KQMLManager.debug) { System.err.println("TravelBroker." + msg); } } /** * main routine * * @param args[] port number. The default number is 8100. */ public static void main(String args[]) { int port = 8100; String usage = new String("Usage: TravelBroker [-trace] [-port <port#>] [-help]"); int argc = args.length; for (int i = 0; i < argc; i++) { try { if (args[i].equals("-trace")) { KQMLManager.debug = true; } else if (args[i].equals("-port")) { port = Integer.parseInt(args[++i]); } else if (args[i].equals("-help")) { System.err.println(usage); System.exit(0); } else { System.err.println(usage); System.exit(1); } } catch (ArrayIndexOutOfBoundsException e) { System.err.println(usage); System.exit(1); } catch (NumberFormatException nfe) { System.err.println(usage); System.exit(1); } } TravelBroker app = new TravelBroker(port); app.run(); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?