## Uses of Interface
bdi4jade.goal.Goal

- Packages that use Goal
  Package | Description
  --- | ---
  bdi4jade.core | This package contains the key classes of BDI4JADE.
  bdi4jade.event | This package contains interfaces and classes that allows creating listeners of events that occur in an agent, such as updating beliefs or achieving goals, and representing such events.
  bdi4jade.goal | This package contains interfaces and classes that allows representation of goals and softgoals of an agent.
  bdi4jade.message | This package contains interfaces and classes that allows processing messages received by BDI agents and creating goals to process them.
  bdi4jade.plan | This package contains interfaces and classes that allows representation of plans of BDI agents.
  bdi4jade.plan.planbody | This package contains interfaces and classes that allows representation of plan body, which is an executable piece of code that is instantiated and executed to achieve goals.
  bdi4jade.reasoning | This package contains interfaces and classes to specify strategies associated with customization points of the BDI agent reasoning cycle.
  bdi4jade.util | This package contains utility classes.

- - ### Uses of Goal in bdi4jade.core

    Methods in bdi4jade.core that return Goal
    Modifier and Type | Method and Description
    --- | ---
    `Goal` | Intention.`getGoal()` Returns the goal associated with this intention.
    `Goal` | GoalUpdateSet.GoalDescription.`getGoal()` Returns the goal described by this descriptor.

    Methods in bdi4jade.core that return types with arguments of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `java.util.Set<Goal>` | BDIAgent.`getGoals()` Gets all goals of this agent.
    `java.util.Set<Goal>` | AbstractBDIAgent.`getGoals()`

    Methods in bdi4jade.core with parameters of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `void` | Capability.`addCandidatePlans(Goal goal, java.util.Map<Capability,java.util.Set<Plan>> candidatePlansMap)` Adds the set of plans of this capability that can achieve the given goal to a map of candidate plans.
    `boolean` | BDIAgent.`addGoal(Capability dispatcher, Goal goal)` Adds a new goal to this agent to be achieved.
    `boolean` | AbstractBDIAgent.`addGoal(Capability dispatcher, Goal goal)`
    `boolean` | BDIAgent.`addGoal(Capability dispatcher, Goal goal, GoalListener goalListener)` Adds a new goal to this agent to be achieved and adds a listener to observe events related to this goal.
    `boolean` | AbstractBDIAgent.`addGoal(Capability dispatcher, Goal goal, GoalListener goalListener)`
    `boolean` | BDIAgent.`addGoal(Goal goal)` Adds a new goal to this agent to be achieved.
    `boolean` | AbstractBDIAgent.`addGoal(Goal goal)`
    `boolean` | BDIAgent.`addGoal(Goal goal, GoalListener goalListener)` Adds a new goal to this agent to be achieved and adds a listener to observe events related to this goal.
    `boolean` | AbstractBDIAgent.`addGoal(Goal goal, GoalListener goalListener)`
    `boolean` | Capability.`canAchieve(Goal goal)` Checks if this capability has a plan that can achieve the given goal.
    `void` | BDIAgent.`dropGoal(Goal goal)` Drops a given goal of this agent, which means setting it as no longer desired.
    `void` | AbstractBDIAgent.`dropGoal(Goal goal)`
    `void` | GoalUpdateSet.`generateGoal(Goal goal)` Indicates that a goal should be added to the agent.
    `void` | GoalUpdateSet.`generateGoal(Goal goal, Capability dispatcher)` Indicates that a goal should be added to the agent, with the capability that dispatched the goal.
    `void` | GoalUpdateSet.`generateGoal(Goal goal, Capability dispatcher, GoalListener listener)` Indicates that a goal should be added to the agent, with the capability that dispatched the goal and provided listener.
    `void` | GoalUpdateSet.`generateGoal(Goal goal, GoalListener listener)` Indicates that a goal should be added to the agent, with the provided listener.
    `boolean` | BDIAgent.`hasGoal(Goal goal)` Checks if this agent has a given goal.
    `boolean` | AbstractBDIAgent.`hasGoal(Goal goal)`

    Constructors in bdi4jade.core with parameters of type Goal
    Constructor and Description
    `Intention(Goal goal, AbstractBDIAgent bdiAgent)` Creates a new intention.
    `Intention(Goal goal, AbstractBDIAgent bdiAgent, Capability dispatcher)` Creates a new intention.

  - ### Uses of Goal in bdi4jade.event

    Fields in bdi4jade.event declared as Goal
    Modifier and Type | Field and Description
    --- | ---
    `protected Goal` | GoalEvent.`goal`

    Methods in bdi4jade.event that return Goal
    Modifier and Type | Method and Description
    --- | ---
    `Goal` | GoalEvent.`getGoal()` Returns the goal associated with this event.

    Methods in bdi4jade.event with parameters of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `void` | GoalEvent.`setGoal(Goal goal)` Sets the goal associated with this event.

    Constructors in bdi4jade.event with parameters of type Goal
    Constructor and Description
    `GoalEvent(Goal goal)` Creates a new goal event with a goal.
    `GoalEvent(Goal goal, GoalStatus status)` Creates a new goal event with a goal.

  - ### Uses of Goal in bdi4jade.goal

    Subinterfaces of Goal in bdi4jade.goal
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `BeliefGoal<K>` This class represents the goal of an agent to believe in a certain belief, that is, the agent has a belief whose name is specified in this goal.

    Classes in bdi4jade.goal that implement Goal
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AbstractBeliefGoal<K>` This is an abstract implementation of a belief goal.
    `class` | `BeliefNotNullValueGoal<K,V>` This class represents the goal of an agent to believe in a certain belief with a not null value, that is, the agent has a belief whose name is specified in this goal and value can be any but null.
    `class` | `BeliefNotPresentGoal<K>` This class represents the goal of an agent to not believe in a certain belief, that is, the agent has not belief whose name is specified in this goal.
    `class` | `BeliefPresentGoal<K>` This class represents the goal of an agent to believe in a certain belief, that is, the agent has a belief whose name is specified in this goal.
    `class` | `BeliefSetHasValueGoal<K,V>` This class represents the goal of an agent believe in a belief that contains a certain value, that is, the agent has a belief set whose name is specified in this goal and it contains the specified value.
    `class` | `BeliefValueGoal<K,V>` This class represents the goal of an agent to believe in a certain belief with an specific value, that is, the agent has a belief whose name and value are specified in this goal.
    `class` | `CompositeGoal` This class represents a goal that is a composition of other goals (subgoals).
    `class` | `ParallelGoal` This class represents a goal that aims at achieving all goals that compose this goal in a parallel way.
    `class` | `PredicateGoal<K>` This class represents the goal of an agent to believe in a certain belief with an specific boolean value, that is, the agent has a belief whose name and value are specified in this goal.
    `class` | `SequentialGoal` This class represents a goal that aims at achieving all goals that compose this goal in a sequential way.

    Fields in bdi4jade.goal with type parameters of type Goal
    Modifier and Type | Field and Description
    --- | ---
    `protected java.util.List<Goal>` | CompositeGoal.`completedGoals`
    `protected java.util.Collection<Goal>` | CompositeGoal.`goals`

    Methods in bdi4jade.goal that return types with arguments of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `protected java.util.Collection<Goal>` | SequentialGoal.`createGoals(int size)`
    `protected java.util.Collection<Goal>` | ParallelGoal.`createGoals(int size)`
    `protected abstract java.util.Collection<Goal>` | CompositeGoal.`createGoals(int size)` Creates an instance of the collection that holds the goals of this composite goal.
    `java.util.List<Goal>` | CompositeGoal.`getCompletedGoals()` Returns the goals of this composite goal that successfully finished.
    `java.util.Collection<Goal>` | CompositeGoal.`getGoals()` Returns the goals associated with this composite goal.

    Methods in bdi4jade.goal with parameters of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | GoalTemplate.`match(Goal goal)` This methods checks if the given goal matches this template.

    Method parameters in bdi4jade.goal with type arguments of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `static GoalTemplate` | GoalTemplateFactory.`goalOfType(java.lang.Class<? extends Goal> goalClass)` This method creates a goal template that positively matches a goal if it is of the given type.
    `void` | CompositeGoal.`setCompletedGoals(java.util.List<Goal> completedGoals)` Sets the list of completed goals.

    Constructors in bdi4jade.goal with parameters of type Goal
    Constructor and Description
    `CompositeGoal(Goal[] goals)` Instantiates a CompositeGoal with the provided goals array.
    `ParallelGoal(Goal[] goals)` Creates a new ParallelGoal.
    `SequentialGoal(Goal[] goals)` Creates a new SequentialGoal.

    Constructor parameters in bdi4jade.goal with type arguments of type Goal
    Constructor and Description
    `CompositeGoal(java.util.Collection<Goal> goals)` Instantiates a CompositeGoal with the provided goals.
    `ParallelGoal(java.util.Set<Goal> goals)` Creates a new ParallelGoal.
    `SequentialGoal(java.util.List<Goal> goals)` Creates a new SequentialGoal.

  - ### Uses of Goal in bdi4jade.message

    Classes in bdi4jade.message that implement Goal
    Modifier and Type | Class and Description
    --- | ---
    `class` | `MessageGoal` This class represents the goal of processing a message received by the agent.

  - ### Uses of Goal in bdi4jade.plan

    Methods in bdi4jade.plan with parameters of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | PlanLibrary.`canAchieve(Goal goal)` Returns true if there is a plan that can achieve the given goal.
    `boolean` | Plan.`canAchieve(Goal goal)` Verifies if a given goal can be achieved by this plan.
    `boolean` | AbstractPlan.`canAchieve(Goal goal)` Verifies if a given goal can be achieved by this plan.
    `java.util.Set<Plan>` | PlanLibrary.`getCandidatePlans(Goal goal)` Returns the set of plans that can achieve the given goal.
    `boolean` | Plan.`isContextApplicable(Goal goal)` Verifies if the current context is valid for this plan execution.
    `boolean` | AbstractPlan.`isContextApplicable(Goal goal)` Verifies that this plan can be executed in the current context and a given goal.

    Constructor parameters in bdi4jade.plan with type arguments of type Goal
    Constructor and Description
    `DefaultPlan(java.lang.Class<? extends Goal> goalClass, java.lang.Class<? extends PlanBody> planBodyClass)` Creates a new simple plan, which is able to achieve goals of the given goal class, and its body should be instances of the provided plan body class.

  - ### Uses of Goal in bdi4jade.plan.planbody

    Fields in bdi4jade.plan.planbody declared as Goal
    Modifier and Type | Field and Description
    --- | ---
    `protected Goal` | SequentialGoalPlanBody.`currentGoal`

    Fields in bdi4jade.plan.planbody with type parameters of type Goal
    Modifier and Type | Field and Description
    --- | ---
    `protected java.util.List<Goal>` | SequentialGoalPlanBody.`completedGoals`
    `protected java.util.List<Goal>` | ParallelGoalPlanBody.`completedGoals`
    `protected java.util.Iterator<Goal>` | SequentialGoalPlanBody.`it`

    Methods in bdi4jade.plan.planbody that return Goal
    Modifier and Type | Method and Description
    --- | ---
    `Goal` | SequentialActionPlanBody.`getGoal()`
    `Goal` | PlanBody.`getGoal()` Returns the goal to be achieved by this plan body.
    `Goal` | ParallelActionPlanBody.`getGoal()`
    `Goal` | FSMPlanBody.`getGoal()`
    `Goal` | AbstractPlanBody.`getGoal()` Returns the goal to be achieved by this plan instance.

    Methods in bdi4jade.plan.planbody with parameters of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | SequentialActionPlanBody.`dispatchGoal(Goal goal)`
    `boolean` | PlanBody.`dispatchGoal(Goal goal)` Dispatches a goal to be achieved.
    `boolean` | ParallelActionPlanBody.`dispatchGoal(Goal goal)`
    `boolean` | FSMPlanBody.`dispatchGoal(Goal goal)`
    `boolean` | AbstractPlanBody.`dispatchGoal(Goal goal)`
    `boolean` | SequentialActionPlanBody.`dispatchSubgoal(Goal subgoal)`
    `boolean` | PlanBody.`dispatchSubgoal(Goal subgoal)` Dispatches a subgoal to be achieved.
    `boolean` | ParallelActionPlanBody.`dispatchSubgoal(Goal subgoal)`
    `boolean` | FSMPlanBody.`dispatchSubgoal(Goal subgoal)`
    `boolean` | AbstractPlanBody.`dispatchSubgoal(Goal subgoal)`
    `boolean` | SequentialActionPlanBody.`dispatchSubgoalAndListen(Goal subgoal)`
    `boolean` | PlanBody.`dispatchSubgoalAndListen(Goal subgoal)` Dispatches a subgoal to be achieved and registers itself as a listener to receive a notification of the end of execution of the goal.
    `boolean` | ParallelActionPlanBody.`dispatchSubgoalAndListen(Goal subgoal)`
    `boolean` | FSMPlanBody.`dispatchSubgoalAndListen(Goal subgoal)`
    `boolean` | AbstractPlanBody.`dispatchSubgoalAndListen(Goal subgoal)`
    `void` | SequentialGoalPlanBody.`setGoalOutput(Goal goal)` Sets completed goals, and the failed goal, if there is one.
    `void` | ParallelGoalPlanBody.`setGoalOutput(Goal goal)` Sets completed goals, and the failed goal, if there is one.
    `void` | OutputPlanBody.`setGoalOutput(Goal goal)` Sets the output parameters in the goal.
    `protected void` | SequentialGoalPlanBody.`setNextGoal(Goal previousGoal, Goal goal)` Sets the parameters of the next goal to be executed based on the previous goal execution.

  - ### Uses of Goal in bdi4jade.reasoning

    Methods in bdi4jade.reasoning that return types with arguments of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `java.util.Set<Goal>` | DeliberationFunction.`filter(java.util.Set<GoalUpdateSet.GoalDescription> goals)` Selects the goals that must be tried to achieve and the ones.
    `java.util.Set<Goal>` | DefaultDeliberationFunction.`filter(java.util.Set<GoalUpdateSet.GoalDescription> goals)` This method selects all goals to become intentions.
    `java.util.Set<Goal>` | DefaultAgentDeliberationFunction.`filter(java.util.Set<GoalUpdateSet.GoalDescription> agentGoals, java.util.Map<Capability,java.util.Set<GoalUpdateSet.GoalDescription>> capabilityGoals)` This default implementation selects all agent goals (those not dispatched within the scope of a capability) to be achieved, and requests each of its capabilities to filter their goals.
    `java.util.Set<Goal>` | AgentDeliberationFunction.`filter(java.util.Set<GoalUpdateSet.GoalDescription> agentGoals, java.util.Map<Capability,java.util.Set<GoalUpdateSet.GoalDescription>> capabilityGoals)` This method is responsible for selecting a set of goals that must be tried to be achieved (intentions) from the set of goals.

    Methods in bdi4jade.reasoning with parameters of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `Plan` | DefaultAgentPlanSelectionStrategy.`selectPlan(Goal goal, java.util.Map<Capability,java.util.Set<Plan>> capabilityPlans)` This default implementation requests each of its capabilities to select one of its plans, and this method selects one of them, randomly.
    `Plan` | AgentPlanSelectionStrategy.`selectPlan(Goal goal, java.util.Map<Capability,java.util.Set<Plan>> capabilityPlans)` This method is responsible for selecting plans to achieve a goals of this agent.
    `Plan` | PlanSelectionStrategy.`selectPlan(Goal goal, java.util.Set<Plan> candidatePlans)` Selects a plan to be executed to achieve the given goal, given a set of candidate plans.
    `Plan` | DefaultPlanSelectionStrategy.`selectPlan(Goal goal, java.util.Set<Plan> candidatePlans)` Selects the first plan of the set of candidate plans, if any.

  - ### Uses of Goal in bdi4jade.util

    Methods in bdi4jade.util with parameters of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `static void` | ReflectionUtils.`setPlanBodyInput(PlanBody planBody, Goal goal)` Sets the input parameters of a plan body based on the parameters passed in the goal that triggered its execution.
    `static void` | ReflectionUtils.`setPlanBodyOutput(PlanBody planBody, Goal goal)` Sets the output parameters of a goal based on the output generated by the plan body whose execution was triggered by this goal.
    `static void` | ReflectionUtils.`setupParameters(Goal goalOut, Goal goalIn)` Sets the input parameters of goal based on the output parameters of another goal.