## Uses of Interface
bdi4jade.plan.planbody.PlanBody

- Packages that use PlanBody
  Package | Description
  --- | ---
  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.util | This package contains utility classes.

- - ### Uses of PlanBody in bdi4jade.plan

    Fields in bdi4jade.plan with type parameters of type PlanBody
    Modifier and Type | Field and Description
    --- | ---
    `protected java.lang.Class<? extends PlanBody>` | DefaultPlan.`planBodyClass`

    Methods in bdi4jade.plan that return PlanBody
    Modifier and Type | Method and Description
    --- | ---
    `PlanBody` | Plan.`createPlanBody()` Instantiate the plan body of this plan, which is an implementation of the `PlanBody` interface.
    `PlanBody` | DefaultPlan.`createPlanBody()` Creates a new instance of the plan body.

    Methods in bdi4jade.plan that return types with arguments of type PlanBody
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Class<? extends PlanBody>` | DefaultPlan.`getPlanBodyClass()` Returns the class of plan body of this plan, to be instantiated and executed.

    Constructor parameters in bdi4jade.plan with type arguments of type PlanBody
    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.
    `DefaultPlan(java.lang.Class<? extends PlanBody> planBodyClass)` Creates a new simple plan.
    `DefaultPlan(GoalTemplate goalTemplate, java.lang.Class<? extends PlanBody> planBodyClass)` Creates a new simple plan, which is able to achieve goals that match the provided template.
    `DefaultPlan(GoalTemplate goalTemplate, jade.lang.acl.MessageTemplate messageTemplate, java.lang.Class<? extends PlanBody> planBodyClass)` Creates a new simple plan, which is able to achieve goals that match the provided goal template and process messages that match the provided message template.
    `DefaultPlan(jade.lang.acl.MessageTemplate messageTemplate, java.lang.Class<? extends PlanBody> planBodyClass)` Creates a new simple plan, which is able to process messages that match the provided message template.
    `DefaultPlan(java.lang.String id, java.lang.Class<? extends PlanBody> planBodyClass)` Creates a new simple plan.
    `DefaultPlan(java.lang.String id, GoalTemplate goalTemplate, java.lang.Class<? extends PlanBody> planBodyClass)` Creates a new simple plan, which is able to achieve goals that match the provided template.
    `DefaultPlan(java.lang.String id, GoalTemplate goalTemplate, jade.lang.acl.MessageTemplate messageTemplate, java.lang.Class<? extends PlanBody> planBodyClass)` Creates a new simple plan, which is able to achieve goals that match the provided goal template and process messages that match the provided message template.
    `DefaultPlan(java.lang.String id, jade.lang.acl.MessageTemplate messageTemplate, java.lang.Class<? extends PlanBody> planBodyClass)` Creates a new simple plan, which is able to process messages that match the provided message template.

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

    Classes in bdi4jade.plan.planbody that implement PlanBody
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AbstractPlanBody` This class provides an almost complete implementation of the `PlanBody` interface.
    `class` | `BeliefGoalPlanBody` This plan body aims to achieve a `BeliefGoal`.
    `class` | `FSMPlanBody` This allows a plan body to inherit from both `AbstractPlanBody` and `FSMBehaviour`.
    `class` | `ParallelActionPlanBody` This allows a plan body to inherit from both `AbstractPlanBody` and `ParallelBehaviour`.
    `class` | `ParallelGoalPlanBody` This plan body provides the set of actions to achieve a `ParallelGoal`.
    `class` | `SequentialActionPlanBody` This allows a plan body to inherit from both `AbstractPlanBody` and `SequentialBehaviour`.
    `class` | `SequentialGoalPlanBody` This plan body provides the set of actions to achieve a `SequentialGoal`.

  - ### Uses of PlanBody in bdi4jade.util

    Methods in bdi4jade.util with parameters of type PlanBody
    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.`setupBeliefs(PlanBody planBody)` Sets plan body fields annotated with `Belief`.