You can package and distribute modules that access the database. So you can create an API that can be integrated directly into another KB using the functionality of Modules Distribution in GeneXus.
The following assumptions apply
- The database is being maintained by the KB that defines the API
The following draft shows a KB that generates programs and a database of an ERP. It contains a module with objects that have the Object Visibility property set to 'Public', that define the API that is packaged.
After installing the module in the other KB, there it is included as a referenced module. Other objects defined in this 2nd KB may define a new data model or not, anyway this new data model will have no references to the one defined and maintained by the ERP, so the programs generated by this KB will access their own tables. When deploying this 2nd KB, the packaged programs of the referenced module will be included automatically if required.
- Only Data Providers, Procedures, External Objects, Structured Data Types, and Domains can be part of the module's interface
- If the module references another module that is not part of it (or of its descendants), that other module must be packaged first
- The name of the data store of the original and target KBs to which the generated programs of the module connect is the same by default. This can be changed with a special configuration SAC 46831. A better way is to change the name of the default datastore in the original KB; this is available as of GeneXus 17 Upgrade 6 (SAC 50090)