The GoalFulfillment CIM-Dynamic chooses schemata that are found likely to achieve current goals, but it doesn't actually execute these schemata. What it does is to take these schemata and place them in a container called the Active Schema Pool.
The Active Schema Pool contains a set of schemata that have been determined to achieve the current goal-set. I.e., everything in the active schema pool should be a schema S so that it has been concluded
PredictiveAttraction <s> S G
where G is one of the goals in the current goal pool.
The decision of which schemata in the ActiveSchemaPool to enact is made by an object called the OpenCogPrime:ExecutionManager, which is invoked each time the OpenCogPrime:SchemaActivation CIM-Dynamic is executed. The ExecutionManager is used to select which schemata to execute, based on doing reasoning and consulting memory regarding which active schemata can usefully be executed simultaneously without causing destructive interference (and hopefully causing constructive interference). This process will also sometimes (indirectly) cause new schemata to be created and/or other schemata from the AtomTable to be made active. This process is described more fully in the pages on OpenCogPrime:EconomicGoalAndActionSelection.