【问题标题】:How do intelligent Agents work with data base?智能代理如何与数据库一起工作?
【发布时间】:2018-11-02 10:23:22
【问题描述】:

我正在使用 JADE 框架,我想知道智能代理有什么方法可以使用某种数据库,他们可以在其中读取并写入一些信息?..

我尝试在excel(使用jxl)和我的项目之间建立连接,但是有一个问题:下面是写入excel文件的代码:

public static void write(String[] args) throws Exception {
    // TODO code application logic here
    File f = new File("C:\\Users\\Mastisa\\Desktop\\Master.xls");
    WritableWorkbook  Master = Workbook.createWorkbook(f);
    WritableSheet History_Table = Master.createSheet("History_Table", 0);

    Label L00 = new Label (0,0,"RUN#");

    History_Table.addCell(L00);


    Master.write();

    System.out.println("finished...");

    Master.close();
}

}

但我希望代理做这样的事情:

Database D;
D.add(myAgent.getLocalName);

但这是不可能的,因为 jxl 不提供与代理一起工作的功能。并且看起来所有内容都必须手动写入该 excel 文件中......但这不是我想要的......我希望代理能够轻松地读写......

还有其他方法吗?

【问题讨论】:

    标签: java database javaagents agents-jade multi-agent


    【解决方案1】:

    是的,基本上当您创建 JADE 代理时,您可以向这些代理添加行为, 有几种类型的行为,您应该根据自己的要求选择它们。你可以找到行为列表here

    举个例子,

    public class MyAgent extends Agent
    {
        @Override
        protected void setup()
        {
             addBehaviour( new InformBehaviour() );
        }
        private class InformBehaviour extends CyclicBehaviour
        {
            //dostuff
        }
    }
    

    所以基本的想法是你需要在一个代理的行为中完成所有这些。

    确保选择适合您要求的正确行为。

    【讨论】:

    • 谢谢,所以我们得出这样的结论,即 JADE 本身并没有为使用某种专门数据库的代理提供工具?
    • 正确。 JADE 中没有内置设施来满足数据库和/或其他传出请求。 JADE 专门处理代理之间的请求,基本上是代理平台。但是您可以将您的应用程序与 spring 框架集成,然后您就可以拥有那些很酷的数据库连接。它不是 JADE 的职责,但 Spring 具有所有这些功能。但是集成 JADE 和 Spring 并不是一件简单的事情,也不是您可以将 JADE Con​​tainer 的 Bean 添加到 Spring 上下文中。因此,如果您选择该路径,则无论如何您都必须进行自定义集成。
    • 你好,我有一个关于使用行为的问题:据我了解,我们不能为代理定义方法,我们只能覆盖行为的抽象方法,是真的吗?如果是这样,那么我如何使用玉行为处理像 excel 这样的数据库?因为创建一个 excel 文件需要处理异常,而我不能写:public void action() throws Exception 因为我收到一条错误消息:覆盖的方法不会引发异常......你能帮我解决这个问题吗?
    • 嗨,“我们不能为代理定义方法”这不是真的。您可以在我的回答中定义自定义代理类中的任何方法。在那里你可以有例如 public void writeToDB() 或类似的东西。 “我不能写:public void action() throws Exception”这是真的,因为 action 方法已经在行为类中,并且它不会在其抽象定义中抛出异常。
    • 您提出的问题过于广泛,无法在此讨论。无论如何,从非代理类的不同类调用代理实例上的方法是不需要的,它没有意义。所以以“代理方式”来考虑这一点,以便代理有自己的行为并通过消息进行通信。不直接调用代理实例的方法。在这种情况下,行为方法非常有用,它是向代理添加功能的方式。不仅仅是调用代理上的方法。这不是一个好习惯。是的,请随时要求任何澄清。
    猜你喜欢
    • 2022-11-30
    • 2017-01-29
    • 1970-01-01
    • 2012-04-13
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2012-12-13
    相关资源
    最近更新 更多