Difference between revisions of "Customizing OpenPetra"

From OpenPetra Wiki
Jump to navigation Jump to search
(Created page with '== Things to customize == * support different languages (might need different layout as well) * use special names that are wellknown inside your organisation (eg. FAMILY vs HOUSE…')
 
 
(6 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
see also [[Building and maintaining customized versions of OpenPetra]]
 +
 +
== How other projects are making customization possible ==
 +
* OpenERP:
 +
** http://open-net.ch/fre/Progiciel-OpenERP/Admin-guide-OpenERP/Customizing-OpenERP-objects
 +
** it seems the table is derived and the new field added
 +
* Extending Adempiere: http://en.wikiversity.org/wiki/Extending_ADempiere
 +
** use general getter and setter from PO for custom columns
 +
* Compiere
 +
** http://www.jorgjanke.com/2007/08/add-column.html
 +
 
== Things to customize ==
 
== Things to customize ==
 
* support different languages (might need different layout as well)
 
* support different languages (might need different layout as well)
Line 5: Line 16:
 
* add plugins for banks and other specific tasks (there is an interface that needs to be implemented)
 
* add plugins for banks and other specific tasks (there is an interface that needs to be implemented)
 
* add new database fields; this really needs to be thought through; it will probably be easier to add a generic field upstream to OpenPetra.org, and use it specifically in your organisation
 
* add new database fields; this really needs to be thought through; it will probably be easier to add a generic field upstream to OpenPetra.org, and use it specifically in your organisation
* customized navigation structure; disable modules, etc
+
* customized navigation structure; disable modules, etc; same for screens, hide some fields etc
 +
* change behaviour; this could be quite tricky; does it need to be done on the server, on the client?
 +
* different workflows etc
  
 
== General possibilities ==
 
== General possibilities ==
Line 11: Line 24:
 
** Advantages: easy to configure, to develop and test; quite transparent
 
** Advantages: easy to configure, to develop and test; quite transparent
 
** Disadvantages: deployment to each client (though this should work with patch management anyways)
 
** Disadvantages: deployment to each client (though this should work with patch management anyways)
 +
 +
* customize by using the database
 +
** tables with settings (user settings, role settings, organisation wide settings)
 +
** Advantages: no additional files; can be used without restart
 +
** Disadvantages: need to write maintenance dialogs for settings; but this could be done in a quite generic way (eg. Firefox settings about:config, which looks like a registry)
  
 
* customize by generating code with different parameters and/or yaml files
 
* customize by generating code with different parameters and/or yaml files
Line 20: Line 38:
 
** Disadvantages: perhaps the time for locating plugins could be too long? solution: cache dll mdsums, store extracted methods in config files etc
 
** Disadvantages: perhaps the time for locating plugins could be too long? solution: cache dll mdsums, store extracted methods in config files etc
  
== How other projects are making customization possible ==
+
== Using bazaar to manage customizations ==
* OpenERP:
+
The idea of a friendly fork is
** http://open-net.ch/fre/Progiciel-OpenERP/Admin-guide-OpenERP/Customizing-OpenERP-objects
+
* you need your own customizations for your organisation, and you need to keep them in a repository
** it seems the table is derived and the new field added
+
* you want to continue to receive updates from the main development
* Extending Adempiere: http://en.wikiversity.org/wiki/Extending_ADempiere
+
* you still want to contribute to the main development
** use general getter and setter from PO for custom columns
+
 
* Compiere
+
This should work quite well with git, since it is a decentralised repository.
** http://www.jorgjanke.com/2007/08/add-column.html
+
 
 +
See also this page that describes how to use a [http://wwwhome.cs.utwente.nl/~michaelw/projects/git-setup.html repository-based decentralized collaboration].
 +
 
 +
Therefore, you create your own master repository, which you have to back up.
 +
Then you make your clone the master repository to a working repository, and then you configure your working repository to merge automatically (as described in the weblink above) from the remote repository, which is the OpenPetra repository at Sourceforge.
 +
You can still create patches and send them to OpenPetra via email.

Latest revision as of 12:40, 18 June 2011

see also Building and maintaining customized versions of OpenPetra

How other projects are making customization possible

Things to customize

  • support different languages (might need different layout as well)
  • use special names that are wellknown inside your organisation (eg. FAMILY vs HOUSEHOLD)
  • different layout for different Operating System environments (see problems with TableLayoutPanel on Mono)
  • add plugins for banks and other specific tasks (there is an interface that needs to be implemented)
  • add new database fields; this really needs to be thought through; it will probably be easier to add a generic field upstream to OpenPetra.org, and use it specifically in your organisation
  • customized navigation structure; disable modules, etc; same for screens, hide some fields etc
  • change behaviour; this could be quite tricky; does it need to be done on the server, on the client?
  • different workflows etc

General possibilities

  • customize by configuration files, that are loaded each time when OpenPetra starts
    • Advantages: easy to configure, to develop and test; quite transparent
    • Disadvantages: deployment to each client (though this should work with patch management anyways)
  • customize by using the database
    • tables with settings (user settings, role settings, organisation wide settings)
    • Advantages: no additional files; can be used without restart
    • Disadvantages: need to write maintenance dialogs for settings; but this could be done in a quite generic way (eg. Firefox settings about:config, which looks like a registry)
  • customize by generating code with different parameters and/or yaml files
    • Advantages: probably quite fast
    • Disadvantages: quite a lot of code; each customized OpenPetra needs to be compiled separately
  • customize by using reflection: the client could pick up functionality from DLLs
    • Advantages: quite easy to install plugins etc
    • Disadvantages: perhaps the time for locating plugins could be too long? solution: cache dll mdsums, store extracted methods in config files etc

Using bazaar to manage customizations

The idea of a friendly fork is

  • you need your own customizations for your organisation, and you need to keep them in a repository
  • you want to continue to receive updates from the main development
  • you still want to contribute to the main development

This should work quite well with git, since it is a decentralised repository.

See also this page that describes how to use a repository-based decentralized collaboration.

Therefore, you create your own master repository, which you have to back up. Then you make your clone the master repository to a working repository, and then you configure your working repository to merge automatically (as described in the weblink above) from the remote repository, which is the OpenPetra repository at Sourceforge. You can still create patches and send them to OpenPetra via email.