FIPA-OS Packages

FIPA-OS has been packaged to ensure that the structure is understandable, logical, and effective. Each package has a specific purpose. Correct use of the packages will result in more understandable code, and a more logical distribution of classes and source code. The intended use of each package is as follows:

fipaos.agent

The agent package is used exclusively for any mandatory components of an agent. For example, the Conversation Factory, State Manager etc. Classes that form a large component should be grouped into a sub-package as seems most logical and appropriate (e.g. The State Manager is placed in fipaos.agent.state). Classes in this package are required to run the platform.

fipaos.comm

This package is for the communications and transport classes of the platform. Classes exclusively of this type should be put into this package as appropriate (see existing package structure for guidance). Developers not working on comms layer classes should not need to use this package. Classes in this package are required to run the platform.

fipaos.fipa

The fipa package is for FIPA specific classes. Any classes that define or handle FIPA specific data or objects should be placed in this package. Classes in this package are required to run the platform.

fipaos.ont

The ont package is for ontology specific classes. If a class belongs to an ontology component then it should be placed in a sub-package named after the ontology that it applies to. For example, the fipa-agent-management ontology classes are in fipaos.ont.fipaman. Classes in these sub-packages are required to run any components of the platform that use the specific ontology in the sub-package. Classes in the ont package (but not in a sub-package) and the ont.fipaman package are required to run the platform.

 

fipaos.parser

The parser package is for classes that form language specific parsers. Parser components should be in sub-packages named by the language that they apply to. Classes in this package are required to run the platform.

fipaos.platform

The platform package is for platform specific classes that are not agent components. This includes platform agent classes. Classes in this package are required to run the platform.

fipaos.skill

The skill package is used for optional agent components that can be ‘plugged-in’ to the agent to provide it with a specific skill. For example, database access is a sub-package of the skill package. Classes in this package are not required to run the platform in general, although any platform agents that use specific skills will introduce a requirement for those specific skill classes.

fipaos.tool

The tools package is for platform and agent level tools that are not required for the use of the platform. This includes such tools as testing harnesses, information tools etc.

fipaos.util

The util package is used for agent classes that are not mandatory for use in an agent, but are provided as helper classes that are not application specific, and are not part of a skill component. Classes in the util package are required for correct operation of the platform. Examples of util classes are UTC time handlers and diagnostics output handlers.

How do I know which package to use?

If you have a class that does not appear to belong to any of these packages then follow this checklist:

  1. Is the class specific to one of the package types (e.g. is it a mandatory agent component etc)? If yes, then package the class in the appropriate specific package.
  2. Is the class related to any existing classes? If yes, then package it with those classes.
  3. Is the class a non-mandatory helper class that does not form part of a larger package? If yes, then package it in fipaos.util.
  4. Is the class part of a new optional component? If yes, then package it with the other classes that make up the new component in fipaos.skill.component-name.
  5. Is the class really necessary? If yes, then make a judgement as to its best package location.