## Uses of Interface
bdi4jade.goal.Goal

- Packages that use Goal
  Package | Description
  --- | ---
  bdi4jade.core |
  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.extension.planselection.utilitybased |
  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()`
    `Goal` | GoalUpdateSet.GoalDescription.`getGoal()`

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

    Methods in bdi4jade.core with parameters of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `void` | BDIAgent.`addGoal(Capability dispatcher, Goal goal)` Adds a new goal to this agent to be achieved.
    `void` | BDIAgent.`addGoal(Capability dispatcher, Goal goal, GoalListener goalListener)` Adds a new goal to this agent to be achieved and adds a listener to observe its end.
    `void` | BDIAgent.`addGoal(Goal goal)` Adds a new goal to this agent to be achieved.
    `void` | BDIAgent.`addGoal(Goal goal, GoalListener goalListener)` Adds a new goal to this agent to be achieved and adds a listener to observe its end.
    `void` | BDIAgent.`dropGoal(Goal goal)` Drops a given goal of this agent.
    `void` | GoalUpdateSet.`generateGoal(Goal goal)`
    `void` | GoalUpdateSet.`generateGoal(Goal goal, Capability dispatcher)`
    `protected Plan` | BDIAgent.`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.
    `protected Plan` | Capability.`selectPlan(Goal goal, java.util.Set<Plan> candidatePlans)` This method is responsible for selecting plans to achieve a goals of this agent.

    Constructors in bdi4jade.core with parameters of type Goal
    Constructor and Description
    `Intention(Goal goal, BDIAgent bdiAgent)` Creates a new intention.
    `Intention(Goal goal, BDIAgent bdiAgent, Capability owner)` 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, GoalStatus status)` Creates a new goal event with a goal.

  - ### Uses of Goal in bdi4jade.extension.planselection.utilitybased

    Methods in bdi4jade.extension.planselection.utilitybased that return types with arguments of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `java.util.Map<Goal,java.lang.Double>` | OrPlanGoalDependency.`getGoals()` Returns the map of goals with their probabilities that the root plan depends on.
    `java.util.List<Goal>` | AndPlanGoalDependency.`getGoals()` Returns the set of goals that the root plan depends on.

    Methods in bdi4jade.extension.planselection.utilitybased with parameters of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `void` | AndPlanGoalDependency.`addGoal(Goal goal)` Adds a goal to this dependency, indicating that the root plan depends on it.
    `void` | OrPlanGoalDependency.`addGoal(Goal goal, java.lang.Double probability)` Adds a goal to this dependency, indicating that the root plan depends on it, with a certain probability.
    `void` | OrPlanGoalDependency.`removeGoal(Goal goal)` Remove a goal from this dependency.
    `void` | AndPlanGoalDependency.`removeGoal(Goal goal)` Remove a goal from this dependency.
    `Plan` | UtilityBasedPlanSelectionStrategy.`selectPlan(Goal goal, java.util.Set<Plan> plans)`

    Constructor parameters in bdi4jade.extension.planselection.utilitybased with type arguments of type Goal
    Constructor and Description
    `AndPlanGoalDependency(Plan root, java.util.List<Goal> goals)`
    `OrPlanGoalDependency(Plan root, java.util.Map<Goal,java.lang.Double> goals)`

  - ### Uses of Goal in bdi4jade.goal

    Classes in bdi4jade.goal that implement Goal
    Modifier and Type | Class and Description
    --- | ---
    `class` | `BeliefGoal` 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` | `BeliefSetValueGoal<T>` 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<T>` 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` | `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.`goalType(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` | 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.`canAchievePlans(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
    --- | ---
    `void` | SequentialActionPlanBody.`dispatchGoal(Goal goal)`
    `void` | PlanBody.`dispatchGoal(Goal goal)` Dispatches a goal to be achieved.
    `void` | ParallelActionPlanBody.`dispatchGoal(Goal goal)`
    `void` | FSMPlanBody.`dispatchGoal(Goal goal)`
    `void` | AbstractPlanBody.`dispatchGoal(Goal goal)`
    `void` | SequentialActionPlanBody.`dispatchProtectedGoal(Goal goal)`
    `void` | PlanBody.`dispatchProtectedGoal(Goal goal)` Dispatches a goal to be achieved, using the capability (or its children capabilities) associated with the plan.
    `void` | ParallelActionPlanBody.`dispatchProtectedGoal(Goal goal)`
    `void` | FSMPlanBody.`dispatchProtectedGoal(Goal goal)`
    `void` | AbstractPlanBody.`dispatchProtectedGoal(Goal goal)`
    `void` | SequentialActionPlanBody.`dispatchProtectedSubgoal(Goal subgoal)`
    `void` | PlanBody.`dispatchProtectedSubgoal(Goal subgoal)` Dispatches a subgoal to be achieved, using the capability (or its children capabilities) associated with the plan.
    `void` | ParallelActionPlanBody.`dispatchProtectedSubgoal(Goal subgoal)`
    `void` | FSMPlanBody.`dispatchProtectedSubgoal(Goal subgoal)`
    `void` | AbstractPlanBody.`dispatchProtectedSubgoal(Goal subgoal)`
    `void` | SequentialActionPlanBody.`dispatchProtectedSubgoalAndListen(Goal subgoal)`
    `void` | PlanBody.`dispatchProtectedSubgoalAndListen(Goal subgoal)` Dispatches a subgoal to be achieved, using the capability (or its children capabilities) associated with the plan, and registers itself as a listener to receive a notification of the end of execution of the goal.
    `void` | ParallelActionPlanBody.`dispatchProtectedSubgoalAndListen(Goal subgoal)`
    `void` | FSMPlanBody.`dispatchProtectedSubgoalAndListen(Goal subgoal)`
    `void` | AbstractPlanBody.`dispatchProtectedSubgoalAndListen(Goal subgoal)`
    `void` | SequentialActionPlanBody.`dispatchSubgoal(Goal subgoal)`
    `void` | PlanBody.`dispatchSubgoal(Goal subgoal)` Dispatches a subgoal to be achieved.
    `void` | ParallelActionPlanBody.`dispatchSubgoal(Goal subgoal)`
    `void` | FSMPlanBody.`dispatchSubgoal(Goal subgoal)`
    `void` | AbstractPlanBody.`dispatchSubgoal(Goal subgoal)`
    `void` | SequentialActionPlanBody.`dispatchSubgoalAndListen(Goal subgoal)`
    `void` | 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.
    `void` | ParallelActionPlanBody.`dispatchSubgoalAndListen(Goal subgoal)`
    `void` | FSMPlanBody.`dispatchSubgoalAndListen(Goal subgoal)`
    `void` | 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 with parameters of type Goal
    Modifier and Type | Method and Description
    --- | ---
    `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.