SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
MINISTÉRIO DA EDUCAÇÃO
SECRETARIA DE EDUCAÇÃO MÉDIA E TECNOLÓGICA
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO AMAZONAS
PRÓ-REITORIA DE PESQUISA, PÓS GRADUAÇÃO E INOVAÇÃO
CAMPUS MANAUS DISTRITO INDUSTRIAL
COORDENAÇÃO DE PESQUISA E INOVAÇÂO TECNOLOGICA
INTELIGÊNCIA COMPUTACIONAL – TUTORIAL AGENTE MÓVEL
EQUIPE: Álvaro de Azevedo Peres, Bartolomeu Hebert de Sá Barbosa, César Augusto
Mota da Silva, Claybiane Cunha, Francisco Ferreira, Jordy Mendes, Leonardo Ferreira,
Tatiane Pinto dos Santos.
Este documento demonstra como configurar ambiente de desenvolvimento Eclipse
Neon para aplicação de agentes móveis utilizando a versão 4.4 do Jade.
Passos executados para o desenvolvimento deste tutorial:
1. Copiar a pasta Jade.bin para o workspace do Eclipse.
2. Criar um novo projeto no jade, com o nome desejado, como mostra a Figura 1.
Figura 1 - Criação do projeto
3. Na janela da Figura 1 clicar em Next → Libraries → Add External JARs, como
mostra a figura 2.
Figura 2 - Adicionando JARs
4. Ao clicar em Add External JARs, adicionar as extensões jade.jar e migration.jar.
Figura 3 - selecionado arquivos JARs
5. Criar novo Package, para que um novo agente possa ser criado a partir do agente no
JADE RMA Gui.
Figura 4 - Criação de Package
6. Criação das classes, herdeira do agente e de interface gráfica, Migration e Migration
Gui, respectivamente.
Figura 5 - Classe Migration
Figura 6 - Classe MigrationGui
7. Na classe MigrationGui é possível personalizar o formato da janela de mensagem
enviada recebida pelos agentes, como mostrado na próxima figura.
Figura 7 - Criando design para as janelas de mensagens
8. Foram realizadas as linhas de comando dos algoritmos para criação de agentes,
configurando os argumentos do agente {"-gui","-
jade_core_migration_IPMS_migration_timeout","10000","-
jade_core_migration_IPMS_migration_timeout_responder","10000","-
services","jade.core.mobility.AgentMobilityService;jade.core.migration.InterPlatformM
obilityService;jade.core.event.NotificationService","-acceptforeign-agents","true"} que
são mostrados em (AMETLLER, J. E. e CUCURULL, J.J. , 2008).
9. Para criar o arquivo executável .jar, necessita ir na guia file>export como mostrado na
Figura 8. Feito isso, selecionar o tipo de aplicação Java, e dentro de Java escolher
Runnable JAR file, mostrado na Figura 9. Logo após, clicando em “Next” deve-se escolher
o diretório e salvar o arquivo. Esses passos estão descritos nas Figuras 10, 11, 12 e 13.
Figura 8 – Exportando o JAR executável
Figura 9 – Aplicação JAVA
Figura 10 – Selecionando o Launch do JAVA
Figura 11 – Seleção do tipo de aplicação Java.
Figura 12 – Confirmação da escolha de diretório.
Figura 13 – Arquivo salvo em pasta.
RESULTADOS
Após a execução do programa .jar gerado, o console Jade RAM é aberto. Em
seguida, é necessário criar um agente que terá a função móvel. Deve-se nomear o agente
e selecionar a classe Migration, como mostrado nas Figuras 14, 15, 16 e 17.
Figura 14 – Console de agentes.
Figura 15 – Criação do agente móvel.
Figura 16 – Seleção da classe Migration.Migration para o agente.
Figura 17 – Propriedades do agente a ser criado.
Após a criação do agente, é gerada a interface gráfica responsável por receber o
endereço da máquina de destino e o comando de mover o agente. Caso o endereço não
exista ou a máquina de destino passe do tempo pré-selecionado, ele retorna o agente para
a segurança do mesmo, representado nas Figuras 18 e 19.
Figura 18 – Agente Testando criado.
Figura 19 – Passando endereço de destino do agente.
Caso o endereço de destino exista, a máquina em que o agente está sendo enviado
exibe uma mensagem com a palavra Ping, como na Figura 20.
Figura 20 – Mensagem de envio do agente.
Após o usuário apertar o botão OK apresentado na Figura 20, o usuário se move
para a máquina identificada com o endereço desejado e a mensagem recebida, neste caso,
é Pong, como na Figura 21.
Figura 21 – Agente Testando recebido, mensagem “pong” enviada.
Quando a mensagem Pong chega para a máquina receptora e é pressionado o botão
OK, há a possibilidade de esta mesma máquina mandar de volta para a outra máquina ou
para uma nova o agente e a mensagem Ping. A outra máquina irá receber o agente e a
mensagem Pong. E assim sucessivamente, movimentando o agente, que podem ser
observados nas Figuras 22 e 23.
Figura 22 – Enviando de volta o agente e a mensagem.
Figura 23 – Agente voltando para a origem.
ANEXO
1 package Migration;
2 import javax.swing.JOptionPane;
3 import jade.core.AID;
4 import jade.core.Agent;
5 import jade.core.PlatformID;
6 import jade.core.behaviours.TickerBehaviour;
7 @SuppressWarnings("serial")
8 public class Migration extends Agent{
9 int liberado = 0;
10 String MeuEnderecoInicial,MeuHAP;
11 MigrationGui mygui,novogui;
12 Agent M = this;
13 protected void setup(){
14 mygui = new MigrationGui(this);
15 mygui.setVisible(true);
16 addBehaviour(new TickerBehaviour(M,100){
17 protected void onTick(){
18 if(mygui.liberado == 1 && liberado == 0){
19 beforeMove();
20 MeuEnderecoInicial = getAID().getAddressesArray()[0];
21 MeuHAP = getAID().getHap();
22 AID remoteAMS = new AID("ams@"+mygui.endereco+":1099/JADE",
AID.ISGUID);
23 remoteAMS.addAddresses("http://"+mygui.endereco+":7778/acc");
24 PlatformID destination = new PlatformID(remoteAMS);
25 myAgent.doMove(destination);
26 mygui.liberado = 0;
27 liberado = 1;
28 System.out.println(MeuEnderecoInicial);
29 mygui.Endereco.setText("");
30 JOptionPane.showMessageDialog(null, "PING");
31 mygui.setVisible(false);
32 }
33 else if(mygui.liberado == 0 && liberado == 1){
34 liberado = 0;
35 JOptionPane.showMessageDialog(null, "PONGn");
36 novogui = new MigrationGui(M);
37 novogui.setVisible(true);
38 mygui = novogui;
39 }
40 afterMove();
41 }});
42 }
43 public static void main(String[] Args){
44 String[] p =
{"-gui","-jade_core_migration_IPMS_migration_timeout","10000","-
jade_core_migration_IPMS_mig
ration_timeout_responder","10000","-services","jade.core.mobility.AgentMobilityService;jade.
core.migration.InterPlatformMobilityService;jade.core.event.NotificationService","-acceptfor
eign-agents","true"};
45 jade.Boot.main(p);
46 }
47 }
Anexo 1 - Código do Agente
1 package Migration;
2 import java.awt.EventQueue;
3 import javax.swing.JFrame;
4 import javax.swing.JPanel;
5 import javax.swing.border.EmptyBorder;
6 import jade.core.Agent;
7 import java.awt.Color;
8 import javax.swing.JLabel;
9 import javax.swing.JTextField;
10 import javax.swing.JButton;
11 import java.awt.event.ActionListener;
12 import java.awt.event.ActionEvent;
13 import java.awt.event.WindowAdapter;
14 import java.awt.event.WindowEvent;
15 public class MigrationGui extends JFrame {
16 private static final long serialVersionUID = 1L;
17 private JPanel contentPane;
18 public JTextField Endereco;
19 public String endereco;
20 public int liberado=0;
21 public JButton btnMandar;
22 /**
23 * Launch the application.
24 */
25 public static void main(String[] args) {
26 EventQueue.invokeLater(new Runnable() {
27 public void run() {
28 try {
29 MigrationGui frame = new MigrationGui(null);
30 frame.setVisible(true);
31 } catch (Exception e) {
32 e.printStackTrace();
33 System.out.println("Fechou");
34 }
35 }
36 });
37 }
38 public MigrationGui(Agent agent) {
39
40 addWindowListener(new WindowAdapter() {
41 @Override
42 public void windowClosed(WindowEvent arg0) {
43 agent.doDelete();
44 }
45 });
46 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
47
48 setTitle(agent.getLocalName());
49 setBounds(100, 100, 209, 148);
50 contentPane = new JPanel();
51 contentPane.setBackground(Color.WHITE);
52 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
53 setContentPane(contentPane);
54 contentPane.setLayout(null);
55
56 JLabel lblEndereo = new JLabel("Endereu00E7o");
57 lblEndereo.setBounds(10, 11, 65, 14);
58 contentPane.add(lblEndereo);
59
60 Endereco = new JTextField();
61 Endereco.setBounds(97, 8, 86, 20);
62 contentPane.add(Endereco);
63 Endereco.setColumns(10);
64
65 JLabel lblOrigem = new JLabel("Origem");
66 lblOrigem.setBounds(10, 72, 46, 14);
67 contentPane.add(lblOrigem);
68
69 JLabel lblNewLabel = new JLabel("");
70 lblNewLabel.setBounds(66, 72, 117, 26);
71 contentPane.add(lblNewLabel);
72
73 btnMandar = new JButton("Mandar");
74 btnMandar.addActionListener(new ActionListener() {
75 public void actionPerformed(ActionEvent arg0) {
76 endereco = Endereco.getText();
77 liberado = 1;
78 lblNewLabel.setText(agent.getHap());
79 }
80 });
81 btnMandar.setBounds(94, 39, 89, 23);
82 contentPane.add(btnMandar);
83 }
84 }
Anexo 2 – Código da Interface Gráfica
REFERÊNCIAS
1. AMETLLER, J. E. e CUCURULL, J.J. , Inter-Platform Mobility Service
Documentation for the JADE Platform: version 1.2, 2008
2. Jade. Encontrado em <http://jade.tilab.com/download/jade/license/?x=25&y=7>
3. Mobility. Encontrado em:
<https://sourceforge.net/projects/jipms/files/jipms/1.2/ipms-1.2-jade-
3.5.zip/download?use_mirror=ufpr&use_mirror=switch>

Contenu connexe

Similaire à Mobile agent

Java Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãOJava Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãO
danielfc
 
Guia rapido total cross studio
Guia rapido total cross studioGuia rapido total cross studio
Guia rapido total cross studio
Rafael Din
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
Denis L Presciliano
 

Similaire à Mobile agent (20)

Desligar pc
Desligar pcDesligar pc
Desligar pc
 
Manual ocs
Manual ocsManual ocs
Manual ocs
 
Manual ocs
Manual ocsManual ocs
Manual ocs
 
Bada
BadaBada
Bada
 
Documentao Projeto Android - Intent
Documentao Projeto Android - IntentDocumentao Projeto Android - Intent
Documentao Projeto Android - Intent
 
Aula 7.0 android 02 - primeiro programa calculadora
Aula 7.0   android 02 - primeiro programa calculadoraAula 7.0   android 02 - primeiro programa calculadora
Aula 7.0 android 02 - primeiro programa calculadora
 
Criando plugins jQuery
Criando plugins jQueryCriando plugins jQuery
Criando plugins jQuery
 
JavaFx - Guia Prático
JavaFx - Guia PráticoJavaFx - Guia Prático
JavaFx - Guia Prático
 
JavaFx - Introdução
JavaFx - IntroduçãoJavaFx - Introdução
JavaFx - Introdução
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)
 
Apostila android
Apostila androidApostila android
Apostila android
 
Java Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãOJava Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãO
 
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
 
Introducao a Linguagem Kotlin
Introducao a Linguagem KotlinIntroducao a Linguagem Kotlin
Introducao a Linguagem Kotlin
 
Android na Prática
Android na PráticaAndroid na Prática
Android na Prática
 
Android Aula 3
Android Aula 3Android Aula 3
Android Aula 3
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
 
Android Wear
Android WearAndroid Wear
Android Wear
 
Guia rapido total cross studio
Guia rapido total cross studioGuia rapido total cross studio
Guia rapido total cross studio
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 

Mobile agent

  • 1. MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO MÉDIA E TECNOLÓGICA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO AMAZONAS PRÓ-REITORIA DE PESQUISA, PÓS GRADUAÇÃO E INOVAÇÃO CAMPUS MANAUS DISTRITO INDUSTRIAL COORDENAÇÃO DE PESQUISA E INOVAÇÂO TECNOLOGICA INTELIGÊNCIA COMPUTACIONAL – TUTORIAL AGENTE MÓVEL EQUIPE: Álvaro de Azevedo Peres, Bartolomeu Hebert de Sá Barbosa, César Augusto Mota da Silva, Claybiane Cunha, Francisco Ferreira, Jordy Mendes, Leonardo Ferreira, Tatiane Pinto dos Santos. Este documento demonstra como configurar ambiente de desenvolvimento Eclipse Neon para aplicação de agentes móveis utilizando a versão 4.4 do Jade. Passos executados para o desenvolvimento deste tutorial: 1. Copiar a pasta Jade.bin para o workspace do Eclipse. 2. Criar um novo projeto no jade, com o nome desejado, como mostra a Figura 1. Figura 1 - Criação do projeto
  • 2. 3. Na janela da Figura 1 clicar em Next → Libraries → Add External JARs, como mostra a figura 2. Figura 2 - Adicionando JARs 4. Ao clicar em Add External JARs, adicionar as extensões jade.jar e migration.jar. Figura 3 - selecionado arquivos JARs
  • 3. 5. Criar novo Package, para que um novo agente possa ser criado a partir do agente no JADE RMA Gui. Figura 4 - Criação de Package 6. Criação das classes, herdeira do agente e de interface gráfica, Migration e Migration Gui, respectivamente. Figura 5 - Classe Migration
  • 4. Figura 6 - Classe MigrationGui 7. Na classe MigrationGui é possível personalizar o formato da janela de mensagem enviada recebida pelos agentes, como mostrado na próxima figura. Figura 7 - Criando design para as janelas de mensagens 8. Foram realizadas as linhas de comando dos algoritmos para criação de agentes, configurando os argumentos do agente {"-gui","- jade_core_migration_IPMS_migration_timeout","10000","- jade_core_migration_IPMS_migration_timeout_responder","10000","- services","jade.core.mobility.AgentMobilityService;jade.core.migration.InterPlatformM obilityService;jade.core.event.NotificationService","-acceptforeign-agents","true"} que são mostrados em (AMETLLER, J. E. e CUCURULL, J.J. , 2008). 9. Para criar o arquivo executável .jar, necessita ir na guia file>export como mostrado na Figura 8. Feito isso, selecionar o tipo de aplicação Java, e dentro de Java escolher Runnable JAR file, mostrado na Figura 9. Logo após, clicando em “Next” deve-se escolher o diretório e salvar o arquivo. Esses passos estão descritos nas Figuras 10, 11, 12 e 13.
  • 5. Figura 8 – Exportando o JAR executável Figura 9 – Aplicação JAVA
  • 6. Figura 10 – Selecionando o Launch do JAVA Figura 11 – Seleção do tipo de aplicação Java.
  • 7. Figura 12 – Confirmação da escolha de diretório. Figura 13 – Arquivo salvo em pasta.
  • 8. RESULTADOS Após a execução do programa .jar gerado, o console Jade RAM é aberto. Em seguida, é necessário criar um agente que terá a função móvel. Deve-se nomear o agente e selecionar a classe Migration, como mostrado nas Figuras 14, 15, 16 e 17. Figura 14 – Console de agentes. Figura 15 – Criação do agente móvel. Figura 16 – Seleção da classe Migration.Migration para o agente.
  • 9. Figura 17 – Propriedades do agente a ser criado. Após a criação do agente, é gerada a interface gráfica responsável por receber o endereço da máquina de destino e o comando de mover o agente. Caso o endereço não exista ou a máquina de destino passe do tempo pré-selecionado, ele retorna o agente para a segurança do mesmo, representado nas Figuras 18 e 19. Figura 18 – Agente Testando criado. Figura 19 – Passando endereço de destino do agente. Caso o endereço de destino exista, a máquina em que o agente está sendo enviado exibe uma mensagem com a palavra Ping, como na Figura 20.
  • 10. Figura 20 – Mensagem de envio do agente. Após o usuário apertar o botão OK apresentado na Figura 20, o usuário se move para a máquina identificada com o endereço desejado e a mensagem recebida, neste caso, é Pong, como na Figura 21. Figura 21 – Agente Testando recebido, mensagem “pong” enviada. Quando a mensagem Pong chega para a máquina receptora e é pressionado o botão OK, há a possibilidade de esta mesma máquina mandar de volta para a outra máquina ou para uma nova o agente e a mensagem Ping. A outra máquina irá receber o agente e a mensagem Pong. E assim sucessivamente, movimentando o agente, que podem ser observados nas Figuras 22 e 23.
  • 11. Figura 22 – Enviando de volta o agente e a mensagem. Figura 23 – Agente voltando para a origem.
  • 12. ANEXO 1 package Migration; 2 import javax.swing.JOptionPane; 3 import jade.core.AID; 4 import jade.core.Agent; 5 import jade.core.PlatformID; 6 import jade.core.behaviours.TickerBehaviour; 7 @SuppressWarnings("serial") 8 public class Migration extends Agent{ 9 int liberado = 0; 10 String MeuEnderecoInicial,MeuHAP; 11 MigrationGui mygui,novogui; 12 Agent M = this; 13 protected void setup(){ 14 mygui = new MigrationGui(this); 15 mygui.setVisible(true); 16 addBehaviour(new TickerBehaviour(M,100){ 17 protected void onTick(){ 18 if(mygui.liberado == 1 && liberado == 0){ 19 beforeMove(); 20 MeuEnderecoInicial = getAID().getAddressesArray()[0]; 21 MeuHAP = getAID().getHap(); 22 AID remoteAMS = new AID("ams@"+mygui.endereco+":1099/JADE", AID.ISGUID); 23 remoteAMS.addAddresses("http://"+mygui.endereco+":7778/acc"); 24 PlatformID destination = new PlatformID(remoteAMS); 25 myAgent.doMove(destination); 26 mygui.liberado = 0; 27 liberado = 1; 28 System.out.println(MeuEnderecoInicial); 29 mygui.Endereco.setText(""); 30 JOptionPane.showMessageDialog(null, "PING"); 31 mygui.setVisible(false); 32 } 33 else if(mygui.liberado == 0 && liberado == 1){ 34 liberado = 0; 35 JOptionPane.showMessageDialog(null, "PONGn"); 36 novogui = new MigrationGui(M); 37 novogui.setVisible(true); 38 mygui = novogui; 39 } 40 afterMove(); 41 }}); 42 } 43 public static void main(String[] Args){ 44 String[] p = {"-gui","-jade_core_migration_IPMS_migration_timeout","10000","- jade_core_migration_IPMS_mig ration_timeout_responder","10000","-services","jade.core.mobility.AgentMobilityService;jade. core.migration.InterPlatformMobilityService;jade.core.event.NotificationService","-acceptfor eign-agents","true"}; 45 jade.Boot.main(p); 46 } 47 } Anexo 1 - Código do Agente
  • 13. 1 package Migration; 2 import java.awt.EventQueue; 3 import javax.swing.JFrame; 4 import javax.swing.JPanel; 5 import javax.swing.border.EmptyBorder; 6 import jade.core.Agent; 7 import java.awt.Color; 8 import javax.swing.JLabel; 9 import javax.swing.JTextField; 10 import javax.swing.JButton; 11 import java.awt.event.ActionListener; 12 import java.awt.event.ActionEvent; 13 import java.awt.event.WindowAdapter; 14 import java.awt.event.WindowEvent; 15 public class MigrationGui extends JFrame { 16 private static final long serialVersionUID = 1L; 17 private JPanel contentPane; 18 public JTextField Endereco; 19 public String endereco; 20 public int liberado=0; 21 public JButton btnMandar; 22 /** 23 * Launch the application. 24 */ 25 public static void main(String[] args) { 26 EventQueue.invokeLater(new Runnable() { 27 public void run() { 28 try { 29 MigrationGui frame = new MigrationGui(null); 30 frame.setVisible(true); 31 } catch (Exception e) { 32 e.printStackTrace(); 33 System.out.println("Fechou"); 34 } 35 } 36 }); 37 } 38 public MigrationGui(Agent agent) { 39 40 addWindowListener(new WindowAdapter() { 41 @Override 42 public void windowClosed(WindowEvent arg0) { 43 agent.doDelete(); 44 } 45 }); 46 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 47 48 setTitle(agent.getLocalName()); 49 setBounds(100, 100, 209, 148); 50 contentPane = new JPanel(); 51 contentPane.setBackground(Color.WHITE); 52 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 53 setContentPane(contentPane); 54 contentPane.setLayout(null); 55 56 JLabel lblEndereo = new JLabel("Endereu00E7o"); 57 lblEndereo.setBounds(10, 11, 65, 14); 58 contentPane.add(lblEndereo); 59 60 Endereco = new JTextField();
  • 14. 61 Endereco.setBounds(97, 8, 86, 20); 62 contentPane.add(Endereco); 63 Endereco.setColumns(10); 64 65 JLabel lblOrigem = new JLabel("Origem"); 66 lblOrigem.setBounds(10, 72, 46, 14); 67 contentPane.add(lblOrigem); 68 69 JLabel lblNewLabel = new JLabel(""); 70 lblNewLabel.setBounds(66, 72, 117, 26); 71 contentPane.add(lblNewLabel); 72 73 btnMandar = new JButton("Mandar"); 74 btnMandar.addActionListener(new ActionListener() { 75 public void actionPerformed(ActionEvent arg0) { 76 endereco = Endereco.getText(); 77 liberado = 1; 78 lblNewLabel.setText(agent.getHap()); 79 } 80 }); 81 btnMandar.setBounds(94, 39, 89, 23); 82 contentPane.add(btnMandar); 83 } 84 } Anexo 2 – Código da Interface Gráfica
  • 15. REFERÊNCIAS 1. AMETLLER, J. E. e CUCURULL, J.J. , Inter-Platform Mobility Service Documentation for the JADE Platform: version 1.2, 2008 2. Jade. Encontrado em <http://jade.tilab.com/download/jade/license/?x=25&y=7> 3. Mobility. Encontrado em: <https://sourceforge.net/projects/jipms/files/jipms/1.2/ipms-1.2-jade- 3.5.zip/download?use_mirror=ufpr&use_mirror=switch>