## Uses of Interface
bdi4jade.plan.Plan

- Packages that use Plan
  Package | Description
  --- | ---
  bdi4jade.core | This package contains the key classes of BDI4JADE.
  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.

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

    Method parameters in bdi4jade.core with type arguments of type Plan
    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.

    Constructor parameters in bdi4jade.core with type arguments of type Plan
    Constructor and Description
    `Capability(java.util.Set<Belief<?,?>> initialBeliefs, java.util.Set<Plan> initialPlans)` Creates a new capability with a generated id.
    `Capability(java.lang.String id, BeliefBase beliefBase, java.util.Set<Belief<?,?>> initialBeliefs, PlanLibrary planLibrary, java.util.Set<Plan> initialPlans)` Creates a new capability with the given id, or a generated one if it is null.
    `Capability(java.lang.String id, java.util.Set<Belief<?,?>> initialBeliefs, java.util.Set<Plan> initialPlans)` Creates a new capability with the given id.

  - ### Uses of Plan in bdi4jade.plan

    Classes in bdi4jade.plan that implement Plan
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AbstractPlan` This class represents the plan abstraction, being an abstract implementation of the `Plan` interface.
    `class` | `DefaultPlan` This class represents a plan whose plan body is a class that can be instantiated by invoking the `Class.newInstance()` method.

    Methods in bdi4jade.plan that return types with arguments of type Plan
    Modifier and Type | Method and Description
    --- | ---
    `java.util.Set<Plan>` | PlanLibrary.`getCandidatePlans(Goal goal)` Returns the set of plans that can achieve the given goal.
    `java.util.Set<Plan>` | PlanLibrary.`getPlans()` Returns the set of plans that are part of this plan library.

    Methods in bdi4jade.plan with parameters of type Plan
    Modifier and Type | Method and Description
    --- | ---
    `void` | PlanLibrary.`addPlan(Plan plan)` Adds a plan to the plan library.
    `boolean` | PlanLibrary.`hasPlan(Plan plan)` Checks if a plan is part of the plan library.
    `boolean` | PlanLibrary.`removePlan(Plan plan)` Removes a plan from the plan library.

    Constructor parameters in bdi4jade.plan with type arguments of type Plan
    Constructor and Description
    `PlanLibrary(Capability capability, java.util.Set<Plan> plans)` Creates a plan library base associated with a capability and adds the plans in the provided set.

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

    Methods in bdi4jade.plan.planbody that return Plan
    Modifier and Type | Method and Description
    --- | ---
    `Plan` | SequentialActionPlanBody.`getPlan()`
    `Plan` | PlanBody.`getPlan()` Returns the `Plan` that is associated with this plan instance.
    `Plan` | ParallelActionPlanBody.`getPlan()`
    `Plan` | FSMPlanBody.`getPlan()`
    `Plan` | AbstractPlanBody.`getPlan()` Returns the `Plan` that is associated with this plan body.

    Methods in bdi4jade.plan.planbody with parameters of type Plan
    Modifier and Type | Method and Description
    --- | ---
    `void` | SequentialActionPlanBody.`init(Plan plan, Intention intention)`
    `void` | PlanBody.`init(Plan plan, Intention intention)` Initializes this plan body.
    `void` | ParallelActionPlanBody.`init(Plan plan, Intention intention)`
    `void` | FSMPlanBody.`init(Plan plan, Intention intention)`
    `void` | AbstractPlanBody.`init(Plan plan, Intention intention)` Initializes this plan body.

  - ### Uses of Plan in bdi4jade.reasoning

    Methods in bdi4jade.reasoning that return Plan
    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.

    Method parameters in bdi4jade.reasoning with type arguments of type Plan
    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.