Now the paragraph is harder to read. Sorry about that. Maybe this could be broken down into a couple of paragraphs as follows?

This project demonstrates a simple CDI Portable Extension and some of the SPI classes used to complete that task. This particular extension explores `InjectionTarget`, `ProcessAnnotatedType`, interceptor bindings from CDI, and `AnnotatedTypeBuilder` from DeltaSpike to demonstrate how you can augment Java EE 6 with custom extensions. 

The presentation layer and business layer are well decoupled and the business logic is augmented by the Drools as the rule engine. In Drools' philosophy, the world is a whole of facts that interact each other by rules. 

Our little world, behind the JSF page, is made up of billable LineItems that are modified by economic rules defined in `resources/SimpleRule.drl`. When you add or remove a `LineItem`, the rule engine triggers an action. To obtain this behavior, our managed beans are promoted to be facts using an amazing feature of CDI: portable extension. The implementation can be found in `DroolsExtension.java` and `LineItemInjectionTarget.java`. The rules are defined inside a knowledge session whose scope is managed by a producer. In this case, `ksession` lives inside a `ConversationScope`. 

You can also load rules from an URL or from a repository or guvnor in BRMS. Your repository then acts as a single point of truth and manages the logic of your application's world. From a business point of view, this means you can change economic rules without changing application code.