Appendix A. Changes and Compatibility Issues

Jadex is a rapidly evolving project. If you have used a previous version of Jadex, you should read this section carefully, to learn what has changed since then. This section shortly introduces important features that have been added and changes that have been made to the API, which may cause incompatibilities to applications you may have developed with an older Jadex version. For a detailed description of the many single changes and numerous bug fixes, have a look at the changes document ( changes.txt), where you will find a history of all important changes that have been made since the initial release.

A.1. New Features in 0.95 and 0.96

Protocols Capability.  The protocols capability provides a goal-oriented way to deal with various interaction protocols such as FIPA-Request, Contract-Net, Dutch- or English-Auction. Through predefines goals for initiator and responder sides of each protocol, the message-based communication becomes completely transparent to the developer. The protocols capability is described in the new chapter Chapter 16, Using Predefined Capabilities of the user guide.

Agent Configurations.  As an extension of the initial states known from previous Jadex releases, agents now may have so called configurations including initial elements as well as end elements. End elements (e.g. end goals or end plans) are executed when the agent gets killed. They provide an easy way to perform complex agent-oriented cleanup operations. Agent configurations are described in chapter Chapter 13, Configurations of the user guide.

Agent Listeners.  The new release adds the possibility to add listeners to agents and BDI-elements (e.g. beliefs or goals). These listeners get called when certain events happen on an element (e.g. a fact was added or a goal finished). This callback style of programming is especially useful for developing GUIs. For more details see section Section 15.2, “Agent Listeners”.

Agent Arguments.  To simplify the specification of agent arguments, now all exported beliefs of an agent are considered as arguments, which can be set using the name of the belief. Therefore, e.g., when a new agent is created, a map of arguments (name-value-pairs) can be provided.

Detail Improvements.  The new strong export (which is now the default) allows that instances of referenced elements are created outside a capability, even when the creation was triggered inside the capability (see Section 5.3, “Elements of a Capability”). Recur and recurdelay can now be used in all goal types (previously only in maintain goals). Custom match expressions can now be specified for message event types as well as plan triggers. These allow to define complex expressions, e.g., including more than one parameter. The nuggets codec has been added as a fast replacement for the slow java xml codec. With regard to programming plans, it should be noted that it is now possible to dispatch subgoals, wait for messages etc. also in the passed/failed/aborted methods of plans.

New and Improved Tools.  With the Test Center and the DF Browser, two new tools have been added. The Test Center allows to execute agent-based unit-like tests. The DF Browser allows to inspect the current registrations In addition, Javadoc/Jadexdoc generation is now provided in a separate perspective, which has been completely rewritten. Improvements of existing tools include the ability to specify arguments und to start agents by double-click in the Starter perspective, a new goal/plan-hierarchy view in the Introspector as well as updated icons for Introspector and Tracer views. Moreover, the JCC startup time has been reduced by loading plugins on demand.

New Example "Book Trading".  The booktrading example contains buyer and seller agents, which negotiate prices for goods such as books. The example thereby specifically shows how to use the new protocols capability.

A.2. Incompatibilities to Release 0.941

Jadex is still in beta stage and to facilitate effective further development backwards compatibility is currently not explicitly addressed. As the concepts and the API undergoes continuous changes, applications developed with older versions of Jadex may not directly work with the current release. We hope that design issues will settle down until the release of version 1.0, at least for the common features.

Until then, this section tries to highlight the issues which might cause problems with your old code. Use this section as a hint how to adapt your Jadex applications to the new release.

A.2.1. Changes in the ADF Definition

ADF XML header.  The new schema definition carries version number 0.96, therefore you have to update your XML headers, if you want your IDE (or other validation tools) to recognize the new or changed tags (see Figure A.1, “Header of an agent definition file”).

<agent xmlns="http://jadex.sourceforge.net/jadex"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://jadex.sourceforge.net/jadex
                           http://jadex.sourceforge.net/jadex-0.96.xsd"
       name=".."
       package="..">

Figure A.1. Header of an agent definition file

Initial States.  The initial states have been renamed to configurations as they now also support end elements in addition to initial elements (see Figure A.2, “Example configurations section of an agent”).

<configurations>
	<configuration name="default">
		<plans>
			<initialplan ref="initial_plan"/>
		</plans>
	</configuration>
	<configuration name="abc">
		<plans>
			<initialplan ref="initial_plan"/>
			<endplan ref="initial_plan"/>
		</plans>
	</configuration>
</configurations>

Figure A.2. Example configurations section of an agent

A.2.2. Capability Changes

AMS Capability
The ams_create_agent goal now has a parameter of type Map for holding the agent arguments (instead of the previous parameter set), due to arguments now being specified as name-value pairs.
DF Capability
The FIPA-Request protocol support (goal_request) has been moved to the new protocols capability (see goal rp_initiate in Section 16.3, “The Interaction Protocols Capability ”). Moreover the result parameter of the df_search goal has been changed to a parameter set (containing arbitrary AgentDescription objects).

A.2.3. API Changes

MobilePlan.passed()/failed()/aborted()
These methods now allow e.g. subgoals to be dispatched and therefore may be called several time sfor subsequent events. They introduce a new event parameter indicating which event occurred. The old methods without parameter have been changed to final, such that they can no longer be (accidentally) overwritten.
Plan.xxxAndWait()
Most of the xxxAndWait() methods of the standard plan class have been changed to return void instead of an event, because the programmer should not have to deal with explicit event when using elements such as goals or conditions. Moreover, these methods now always throw exception, when the expected event does not oocur (e.g. TimeoutException or GoalFailureExecption when a subgoal does not succeed).
IExpression.execute(Tuple[] params)
The signature of IExpression for executing queries with more than one parameter value has changed to execute(String[] names, Object[] values) as it is more natural than using a Tuple[].
ICandidateInfo.getPlan()/getEvent()
Removed the caller parameter, of ICandidateInfo.getPlan() and CandidateInfo.getEvent() as it is no longer necessary.