Systems and methods for allowing pluggable knowledge types to be discovered, registered, and added to a rule engine are disclosed. An example method may include retrieving, by a processing device executing a rule engine, a list of pluggable services associated with a specified knowledge type; identifying a first pluggable service on the list of pluggable services; identifying one or more knowledge types that the first pluggable service is configured to process, wherein the one or more knowledge types comprise the specified knowledge type; and indexing, by the processing device, the first pluggable knowledge in the service registry by information identifying the one or more knowledge types.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A method comprising: retrieving, by a processing device executing a rule engine, a list of pluggable services associated with a specified knowledge type; identifying a first pluggable service on the list of pluggable services; identifying one or more knowledge types that the first pluggable service is configured to process, wherein the one or more knowledge types comprise the specified knowledge type; and indexing, by the processing device, the first pluggable knowledge in the service registry by information identifying the one or more knowledge types. 2. The method of claim 1, further comprising: wherein the first pluggable service communicates with the rule engine via an application programming interface provided via a plugin installed in the rule engine. 3. The method of claim 1, wherein the list of pluggable services is identified in view of a configuration file associated with the discovered knowledge type. 4. The method of claim 1, wherein the first pluggable service comprises an assembler service. 5. The method of claim 4, further comprising: processing, by the processing device, an instruction to compile a resource associated with a knowledge type of the one or more knowledge types; performing, by the processing device, a lookup in the service registry in view of the information identifying the knowledge type to identify the assembler service; and delegating, by the processing device, compilation of the resource to the assembler service. 6. The method of claim 5, further comprising: compiling, by the assembler service, the resource associated with the knowledge type to generate a resource package. 7. The method of claim 6, further comprising: identifying a knowledge package associated with the resource package; adding the resource package to the knowledge package; and indexing, in the service registry, the knowledge package by the information identifying the knowledge type. 8. The method of claim 7, further comprising: retrieving, from the service registry, a registered runtime service configured to create a runtime instance of the knowledge package; and delegating creation of the runtime instance of the knowledge package to a factory method associated with the registered runtime service. 9. A system comprising: a memory; and a processing device operatively coupled to the memory, the processing device to: retrieve by a processing device executing a rule engine, a list of a pluggable services associated with a specified knowledge type; identify a first pluggable service on the list of pluggable services; identify one or more knowledge types that the first pluggable service is configured to process, wherein the one or more knowledge types comprise the specified knowledge type; and index, by the processing device, the first pluggable service in the service registry by information identifying the one or more knowledge types. 10. The system of claim 9, wherein the first pluggable service communicates with the rule engine via an application programming interface provided via a plugin installed in the rule engine. 11. The system of claim 9, wherein the first pluggable service comprises an assembler service. 12. The system of claim 11, wherein the processing device is further to: process an instruction to compile a resource associated with a knowledge type of the one or more knowledge types; perform a lookup in the service registry in view of the information identifying the knowledge type to identify the assembler service; and delegate compilation of the resource to the assembler service. 13. The system of claim 12, wherein the processing device is further to: compile, by the assembler service, the resource associated with the knowledge type to generate a resource package. 14. The system of claim 13, wherein the processing device is further to: identify a knowledge package associated with the resource package; add the resource package to the knowledge package; and index, in the service registry, the knowledge package by the information identifying the knowledge type. 15. The system of claim 14, wherein the processing device is further to: retrieve, from the service registry, a registered runtime service configured to create a runtime instance of the knowledge package; and delegate creation of the runtime instance of the knowledge package to a factory method associated with the registered runtime service. 16. A non-transitory machine-readable storage medium storing instructions that cause a processing device to: compile, by the processing device executing an assembler service registered with a service registry, a resource associated with a first knowledge type to generate a first resource package; identify a knowledge package associated with the first resource package; add the first resource package to the knowledge package; and index the knowledge package by information identifying the first knowledge type associated with the first resource package. 17. The non-transitory machine-readable storage medium of claim 16, wherein the knowledge package comprises a plurality of resource packages generated by a plurality of assembler services. 18. The non-transitory machine-readable storage medium of claim 17, further comprising executable instructions causing the processing device to: receive a request to execute the first resource package associated with the first knowledge type; and retrieve, from the service registry, a registered runtime service to create a runtime instance of the first resource type. 19. The non-transitory machine-readable storage medium of claim 18, further comprising executable instructions causing the processing device to: delegate creation of the runtime instance of the first knowledge package to a factory method associated with the registered runtime service. 20. The non-transitory machine-readable storage medium of claim 14, wherein the registered runtime service communicates with a rule engine via an application programming interface provided via a first plugin installed in the rule engine