Zarządzanie agentami

Wraz z pracami projekt przyjął nową strukturę:

struk

W celu zarządzania tworzeniem agentów stworzyłem interface: IAgentManager:

package karol_bocian.solution.agentModule.agentManagement;

public interface IAgentManager {
    void RunAgents();
}

oraz klasę AgentManager implementującą powyższy interfejs:

package karol_bocian.solution.agentModule.agentManagement;

import java.util.Map;

public class AgentManager implements IAgentManager {

    private final String packageName = "karol_bocian.solution.agentModule.agents.";
    private String agentsList = "";

    public AgentManager(Map<String, String> agentsMap) {
        BuildAgentsList(agentsMap);
    }

    private void BuildAgentsList(Map<String, String> agentsMap) {
        StringBuilder stringBuilder = new StringBuilder();
        for (Map.Entry<String, String> entry : agentsMap.entrySet()) {
            stringBuilder.append(entry.getKey());
            stringBuilder.append(":");
            stringBuilder.append(packageName);
            stringBuilder.append(entry.getValue());
            stringBuilder.append(";");
        }
        agentsList = stringBuilder.toString();
    }


    @Override
    public void RunAgents() {
        JadeBootThread jadeBootThread = null;
        try {
            jadeBootThread = new JadeBootThread(agentsList);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        jadeBootThread.run();
    }
}

Służy ona do tworzenia agentów. Należy w konstruktorze tej klasy przekazać listę agentów w postaci krotek: <„imięAgenta”,”klasaImplementującaAgenta”> zapisanych w obiekcie Map. Klasa AgentManager przetwarza Mapę tworząc odpowiednie polecenie z listą agentów i używając go woła w metodzie RunAgents opisywany już JadeBootThread.

Zmianie uległa również klasa Main. Zawiera ona metodę, w której precyzujemy listę tworzonych agentów (PrepareAgentList).

package karol_bocian.solution;

import karol_bocian.solution.agentModule.agentManagement.AgentManager;
import karol_bocian.solution.agentModule.agentManagement.IAgentManager;

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        IAgentManager agentManager = new AgentManager(PrepareAgentList());
        agentManager.RunAgents();
    }

    private static Map<String, String> PrepareAgentList() {
        Map<String, String> agentsMap = new HashMap<>();
        agentsMap.put("AgentTomek", "HelloAgent");
        return agentsMap;
    }
}

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google

Komentujesz korzystając z konta Google. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s