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: