<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.infinite-erp.co.id/index.php?action=history&amp;feed=atom&amp;title=DBSourceManager</id>
	<title>DBSourceManager - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.infinite-erp.co.id/index.php?action=history&amp;feed=atom&amp;title=DBSourceManager"/>
	<link rel="alternate" type="text/html" href="https://wiki.infinite-erp.co.id/index.php?title=DBSourceManager&amp;action=history"/>
	<updated>2026-09-22T02:56:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.infinite-erp.co.id/index.php?title=DBSourceManager&amp;diff=4577&amp;oldid=prev</id>
		<title>Wikiadmin: Halaman baru: DBSourceManager dari Etendo Documentation, rebrand Etendo→InfiniteERP. Database independence via DDLUtils, Oracle/PostgreSQL support, export.database/update.database/export.config.script tasks, Model filters.</title>
		<link rel="alternate" type="text/html" href="https://wiki.infinite-erp.co.id/index.php?title=DBSourceManager&amp;diff=4577&amp;oldid=prev"/>
		<updated>2026-09-21T02:04:46Z</updated>

		<summary type="html">&lt;p&gt;Halaman baru: DBSourceManager dari Etendo Documentation, rebrand Etendo→InfiniteERP. Database independence via DDLUtils, Oracle/PostgreSQL support, export.database/update.database/export.config.script tasks, Model filters.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Languages}}&lt;br /&gt;
{{BackTo|Main Page}}&lt;br /&gt;
&lt;br /&gt;
= DBSourceManager =&lt;br /&gt;
&lt;br /&gt;
'''DBSourceManager''' is a Java library that helps with database tasks related to development. Its most important feature is '''database independence''' — you can focus on the development of database features and let DBSourceManager deal with the database implementation details.&lt;br /&gt;
&lt;br /&gt;
DBSourceManager is based on [https://db.apache.org/ddlutils/ DDLUtils] and the database model used by DBSourceManager is an extension of the model used by DDLUtils. DDLUtils supports a large list of database engines, but all the extensions created in DBSourceManager only work for '''Oracle''' and '''PostgreSQL'''.&lt;br /&gt;
&lt;br /&gt;
The main goal of DBSourceManager is to aid the developer in the creation and maintenance of database physical objects and data. The way this works is via an array of &amp;lt;code&amp;gt;XML&amp;lt;/code&amp;gt; files which represent database physical objects or table records. DBSourceManager contains utilities which allow the developer to export its objects into these &amp;lt;code&amp;gt;XML&amp;lt;/code&amp;gt; files, and which allow modifications in these &amp;lt;code&amp;gt;XML&amp;lt;/code&amp;gt; files to be moved into the database by updating it.&lt;br /&gt;
&lt;br /&gt;
Therefore, the developer can focus on creating and changing its components (either in the database or in the &amp;lt;code&amp;gt;XML&amp;lt;/code&amp;gt; files), and DBSourceManager can automatically move the changes in either place to the other.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
As previously stated, DBSourceManager is based on the DDLUtils Apache project. Internally, its structure can be described as:&lt;br /&gt;
&lt;br /&gt;
* A series of classes to handle the '''Database model'''&lt;br /&gt;
* A series of classes which are related to how the objects and their changes are transformed into '''RDBMS-specific commands'''&lt;br /&gt;
&lt;br /&gt;
== Common Tasks ==&lt;br /&gt;
&lt;br /&gt;
The main tasks which DBSourceManager allows the developer to do are the following:&lt;br /&gt;
&lt;br /&gt;
=== export.database ===&lt;br /&gt;
&lt;br /&gt;
This task generates &amp;lt;code&amp;gt;XML&amp;lt;/code&amp;gt; files corresponding with the database physical objects and the Application Dictionary table contents. It exports everything from the database so that the XML files reflect the current state of the database.&lt;br /&gt;
&lt;br /&gt;
See [[Development Build Tasks#export.database|export.database]] in Development Build Tasks for usage details.&lt;br /&gt;
&lt;br /&gt;
=== update.database ===&lt;br /&gt;
&lt;br /&gt;
This task updates the database, applying the changes which are necessary to transform it so that it follows the model described in the &amp;lt;code&amp;gt;XML&amp;lt;/code&amp;gt; files. It reads the XML files and applies any differences to the database.&lt;br /&gt;
&lt;br /&gt;
See [[Development Build Tasks#update.database|update.database]] in Development Build Tasks for usage details.&lt;br /&gt;
&lt;br /&gt;
=== export.config.script ===&lt;br /&gt;
&lt;br /&gt;
This task generates a configuration script of the current system.&lt;br /&gt;
&lt;br /&gt;
== Model Filters ==&lt;br /&gt;
&lt;br /&gt;
DBSourceManager uses a mechanism which is called '''Model filters''' to purposely remove some unwanted objects from the physical database model. These filters can be extended by modules.&lt;br /&gt;
&lt;br /&gt;
To know how to exclude database physical objects from the model, see [[How to exclude Database Physical Objects From Model]].&lt;br /&gt;
&lt;br /&gt;
== Relationship with Build Tasks ==&lt;br /&gt;
&lt;br /&gt;
DBSourceManager tasks are integrated into the InfiniteERP build system. The main tasks are executed as Ant tasks:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ant export.database&amp;lt;/code&amp;gt; — exports the current database state to XML files&lt;br /&gt;
* &amp;lt;code&amp;gt;ant update.database&amp;lt;/code&amp;gt; — updates the database from XML files&lt;br /&gt;
* &amp;lt;code&amp;gt;ant export.config.script&amp;lt;/code&amp;gt; — exports the configuration script&lt;br /&gt;
&lt;br /&gt;
These tasks are related to [[Modularity Concepts|modularity concepts]] in InfiniteERP. When developing modules, only modules &amp;quot;in development&amp;quot; are exported by DBSourceManager.&lt;br /&gt;
&lt;br /&gt;
== Relationship with InfiniteERP Architecture ==&lt;br /&gt;
&lt;br /&gt;
DBSourceManager plays a key role in the InfiniteERP development workflow:&lt;br /&gt;
&lt;br /&gt;
* It enables '''database independence''' — the same XML files can be used for both Oracle and PostgreSQL&lt;br /&gt;
* It supports the '''Model Driven Development''' approach by keeping database schema in sync with the Application Dictionary&lt;br /&gt;
* It enables modular development by allowing modules to export their own database changes independently&lt;br /&gt;
* It works together with [[Data Access Layer]] to keep the runtime model and the database in sync&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Development Build Tasks]] — for details on Ant tasks including export.database and update.database&lt;br /&gt;
* [[Data Access Layer]] — for how DBSourceManager interacts with the DAL&lt;br /&gt;
* [[Modularity Concepts]] — for how DBSourceManager supports modular development&lt;br /&gt;
* [[How to exclude Database Physical Objects From Model]] — for Model filters&lt;br /&gt;
* [[Application Dictionary]] — for the metadata that DBSourceManager manages&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.etendo.software/developer-guide/etendo-classic/concepts/dbsourcemanager/ DBSourceManager — Etendo Documentation]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''This work is a derivative of [http://wiki.openbravo.com/wiki/DBSourceManager DBSourceManager] by [http://wiki.openbravo.com/wiki/Welcome_to_Openbravo Openbravo Wiki], used under [https://creativecommons.org/licenses/by-sa/2.5/es/ CC BY-SA 2.5 ES]. This work is licensed under [https://creativecommons.org/licenses/by-sa/2.5/ CC BY-SA 2.5].''&lt;br /&gt;
&lt;br /&gt;
[[Category:Developers Guide]]&lt;br /&gt;
[[Category:Documentation ERP]]&lt;br /&gt;
[[Category:Concepts]]&lt;/div&gt;</summary>
		<author><name>Wikiadmin</name></author>
		
	</entry>
</feed>