# Package net.corda.core.flows

- Interface Summary
  Interface | Description
  --- | ---
  FlowStateMachine<R> | This is an internal interface that is implemented by code in the node module. You should look at `class FlowLogic`.

- Class Summary
  Class | Description
  --- | ---
  AppContext | This is just some way to track what attachments need to be in the class loader, but may later include some app properties loaded from the attachments. And perhaps the authenticated user for an API call?
  FlowLogic<T> | A sub-class of `class FlowLogic` implements a flow using direct, straight line blocking code. Thus you can write complex flow logic in an ordinary fashion, without having to think about callbacks, restarting after a node crash, how many instances of your flow there are running and so on.
  FlowLogicRef | A class representing a `class FlowLogic` instance which would be possible to safely pass out of the contract sandbox.
  FlowLogicRefFactory | A class for conversion to and from `class FlowLogic` and `class FlowLogicRef` instances.
  StateMachineRunId | A unique identifier for a single state machine run, valid across node restarts. Note that a single run always has at least one flow, but that flow may also invoke sub-flows: they all share the same run id.

- Exception Summary
  Exception | Description
  --- | ---
  FlowException | Exception which can be thrown by a `class FlowLogic` at any point in its logic to unexpectedly bring it to a permanent end. The exception will propagate to all counterparty flows and will be thrown on their end the next time they wait on a FlowLogic.receive or FlowLogic.sendAndReceive. Any flow which no longer needs to do a receive, or has already ended, will not receive the exception (if this is required then have them wait for a confirmation message).
  IllegalFlowLogicException |