Difference between revisions of "Software Developer's Guide"

From iDempiere en
(Edit for clarity)
 
(42 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
'''Status:''' This is Work in Progress, but it may be useful as it is.
 
'''Status:''' This is Work in Progress, but it may be useful as it is.
  
−
== Introduction ==
+
= Introduction =
 
The core iDempiere system supplies a range business functionality straight out of the box, such as role-based access, organisational structure, accounting, procurement, warehousing, and so on, but it is also flexible enough to be adapted to meet new requirements as they arise, using these mechanisms:
 
The core iDempiere system supplies a range business functionality straight out of the box, such as role-based access, organisational structure, accounting, procurement, warehousing, and so on, but it is also flexible enough to be adapted to meet new requirements as they arise, using these mechanisms:
 
* [http://www.chuckboecking.com/erp-customization-know/ Configuration]: changing the system using built-in facilities such as modifying field labels, setting parameters, modifying workflows, and using report-writers;
 
* [http://www.chuckboecking.com/erp-customization-know/ Configuration]: changing the system using built-in facilities such as modifying field labels, setting parameters, modifying workflows, and using report-writers;
Line 13: Line 13:
 
This guide explains how iDempiere can be adapted to meet new business requirements, without changing the codebase.
 
This guide explains how iDempiere can be adapted to meet new business requirements, without changing the codebase.
  
−
== Configuration ==
+
= Configuration =
−
* [http://www.adempiere.com/Workflows_Explained Workflows]
+
== Login window ==
−
* [http://wiki.idempiere.org/en/Plugin:_Theme_Business_Team "BusinessTeam" Theme]
+
* [[NF2.1 Configurable Info Login|Configurable Login Window information]]: system details in Login Window can be configured by adding keys to the System Configurator
 +
* [[NF2.1 Custom Homepage|Customizable and themeable iDempiere homepage]]
 +
* [[System Configurator (Window ID-50006)|System Configurator settings]]: define global parameters in the database to control the system
  
−
== Localization ==
+
== Themes ==
−
* [[Localization]] using language packs
+
These themes can be installed as plug-ins. Use them as a base for developing your own custom theme.
−
* [[Install german language Pack|Example of German localization]] by changing country settings and installing a language pack
+
* [[Plugin:_Theme_Business_Team|Business Team Theme]]: lightweight theme using CSS3
 +
* [[Plugin:_Theme_KSYS|KYSYS theme]]: uses Google's material design principles
 +
* [[Plugin:_Theme_Atlantic|Atlantic theme]]: uses Flat Design principles based on ZK Atlantic theme
 +
* [[Plugin: Theme ferrytheme|Ferry theme]]: theme with a different colour palette
 +
 
 +
== Dashboard configuration ==
 +
* [[NF2.0_User_Configurable_Dashboard|User Configurable Dashboards]]: add/remove dashboard elements on the Home page
 +
 
 +
== WorkFlows ==
 +
* [http://www.adempiere.com/Workflows_Explained Workflows explained]
 +
 
 +
== Custom fields ==
 +
iDempiere can be configured with new database fields to provide added business functionality. These fields are marked 'User maintained' so they will be preserved through any database upgrade process.
 +
* [[Adding a Field to an existing Window]]: add fields to existing windows without writing code or connecting to the database
 +
* [[NF2.1 Create Fields Improvement]]: create the fields only for a specific entity type and/or create fields which were added to the columns since a specific date
 +
 
 +
== Report Writer ==
 +
* [[Creating reports using JasperReports|Create reports using the built-in JasperReports engine]]
 +
* [[Create reports using JasperSoft Studio|Create complex reports and print-outs using JasperSoft Studio]]
 +
* [[Plugin:_JasperReports|Plug-in for JasperReports]]: includes a video about the Niemcor plug-in the sample set of reports for Customer and Supplier Financial Statements
 +
* [[JasperReports_redesign|Some links to historical documentation]]: for background reading
 +
 
 +
= Localization =
 +
==Language Packs==
 +
* [[Localization]]: use of language packs
 +
* [[Install german language Pack|Example of German localization]]: example of changing country settings and installing a language pack for Germany
 +
* [[Plugin: JPiere (Localization Japan)|JPiere set of iDempiere Plugins for Japan]]: still work in progress so documentation is incomplete
 +
* [http://www.adempiere.com/Localization_Guide Original Adempiere Localization Guide for reference]
 +
 
 +
==Change field labels==
 +
* [[Localization#Use_translations_to_quickly_change_labels| Use translations to quickly change labels]]
 +
==Localize reports==
 
* [[Multi-Lingual_Jasper|Multilingual reports in Jasper]]
 
* [[Multi-Lingual_Jasper|Multilingual reports in Jasper]]
  
−
== Integration ==
+
= Integration =
−
* [[Web Services First Steps|Introduction to Web Services]]
+
==SOAP Web Services==
−
* [[Web services|Describes the Web Service interface and its methods]]
+
* [[Web Services First Steps]]: introduction to SOAP Web Services
−
* [[NF1.0 Web Services Improvements|Web Services improvements to support composite services]]
+
* [[Web Services Clients]]: example code for Java/Android and .NET clients to access the SOAP Web Services
−
* [[Web Services Security]]
+
* [[Web services]]: describes the Web Service interface and its methods
 +
* [[NF1.0 Web Services Improvements|Web Services improvements]]: improvement to the web services to support composite services
 +
* [[Web Services Security]]: the security model
  
−
== Extension ==
+
= Extension =
−
=== Deploying externally developed plug-ins ===
+
== Externally developed plug-ins ==
−
The iDempiere community has developed a large collection of plug-ins and and made them available for download and deployment.  
+
=== Plug-in collections ===
 +
The iDempiere community has developed a large collection of plug-ins and and made them available for download and deployment. These can deployed directly into the running application using the Apache Felix interface. The Eclipse development environment is not needed.
  
−
These can deployed directly into the running application using the Apache Felix interface. The Eclipse development environment is not needed.
+
* [[:Category: Available Plugins]]: list of Plugins from the wiki
 +
* [https://sourceforge.net/projects/red1/files/ Set of plug-ins from Red1]: rich set of plug-ins from one of the founder members of iDempiere
  
−
[[:Category:Available Plugins]]: list of Plugins in the wiki
+
=== Deploying plug-ins ===
 +
Plug-ins can be deployed and managed dynamically, using the Apache Felix Web Console:
 +
* [[Developing Plug-Ins - Get your Plug-In running|Load your new plug-in into a running instance of iDempiere]]: including deployment using Apache Felix
 +
* [[Developing Plug-Ins - Get your Plug-In running.Explanations|Here]] is an explanation about OSGi plug-ins
  
−
=== Set up the development environment ===
+
== Customised plug-ins ==
 +
=== Development environment ===
 +
You must set up the Eclipse  development environment in order to develop plug-ins, as follows:
 
* [[Install Development Prerequisites|Prerequisites for the development environment]]
 
* [[Install Development Prerequisites|Prerequisites for the development environment]]
−
* [[Download the Code|Download the iDempiere source code]]: includes some [[Download Tips]] here if you have a slow line
+
* [[Download the Code|Download the iDempiere source code]]: follow these [[Download Tips]] if you have a slow line
−
* [[Setting up Eclipse|Set up Eclipse]]: there is a more detailed guide with videos [[Developing_Plug-Ins_-_Setup_the_workspace|here]]
+
* [[Installation in Eclipse|Set up Eclipse]]: there also is a more detailed [[Developing_Plug-Ins_-_Setup_the_workspace|guide with videos here]]
 
* [[Importing DB Seed Manually|Install the seed database]]
 
* [[Importing DB Seed Manually|Install the seed database]]
 
* [[Running iDempiere within Eclipse]]
 
* [[Running iDempiere within Eclipse]]
  
−
=== Develop plugins ===
+
=== Developing custom plug-ins ===
−
* [[Developing_plug-ins_without_affecting_the_trunk|How to create a plug-in]]: a basic overview of how to create a plug-in
+
Once the development environment has been set up, you can follow these guides to develop various types of plug-ins:
−
* [[Developing Plug-Ins - WebUI Themes|Develop a plug-in to change the look-and-feel]]: includes a video
+
* [[Developing_plug-ins_without_affecting_the_trunk|How to create a plug-in]]: a basic overview of creating a plug-in
−
* [[Developing Plug-Ins - Process|Develop a plug-in for a new process]]
+
* [[Developing Plug-Ins - WebUI Themes|Develop a plug-in to change the look-and-feel of the WebUI theme]]: includes a video
−
* [[Developing Plug-Ins - Create a Feature-Project to export Plug-Ins and Fragments|Group plug-ins and fragments into a feature]]
+
* [[Add_your_theme|Another guide to WebUI theme plug-ins]]
−
* [[Developing Plug-Ins - Get your Plug-In running|Load your new plug-in into a running instance of iDempiere]]: there is also an explanation of how it works [[Developing Plug-Ins - Get your Plug-In running.Explanations|here]]
+
* [[Developing Plug-Ins - Process|Develop a plug-in for a new process]]: includes process parameters, logs, and error handling
 +
* [[Developing Plug-Ins - Dashboard Panel Fragments|Dashboard Panel Fragments]]: dashboards to display relevant information and quick access to important functions from the main page
 +
* [[Developing iDempiere 4: Create a new class model with window and tabs|Create a new class model with window and tabs]]: requires an understanding of database schemas
 +
* [[Create a custom document class]]: documents are useful because they have a status and can be controlled in a workflow
 +
* [[Hackers Guide to Documents]]: more about documents
 +
* [[Developing Plug-Ins - Create a Feature-Project to export Plug-Ins and Fragments|Group plug-ins and fragments into a feature]]: for deploying pieces of custom functionality in a single group
  
 +
== Install and run iDempiere ==
 +
=== Pre-built installers ===
 +
* [[Installing from Installers]]: installing iDempiere from a zipped installer
 +
* [[Running iDempiere from Installers]]: running iDempiere after installation and configuration
 +
* [[Post Installation]]: some security measures
 
=== Build a customised instance of iDempiere ===
 
=== Build a customised instance of iDempiere ===
−
* [[Creating Installers from Eclipse]]
+
* [[Creating Installers from Eclipse]]: build your own custom installer using the Eclipse IDE
−
* [[Building iDempiere without Eclipse]]
+
* [[Building iDempiere without Eclipse]]: build iDempiere directly from the command line, useful for [http://jenkins.idempiere.com continuous integration]
  
−
== Install and run iDempiere ==
+
= Modification=
−
* [[Installing from Installers]]
+
Modification involves making changes to the iDempiere source code and schema, so don't do it. You will not be able to upgrade. Create a plug-in instead.
−
* [[Running iDempiere from Installers]]
 
−
* [[Post Installation]]
 
  
−
== Structure of iDempiere ==
+
= Structure of iDempiere =
 
* [[Equinox OSGi framework]]: describes OSGi and the technology stack that was used to build iDempiere so you can see how the system hangs together
 
* [[Equinox OSGi framework]]: describes OSGi and the technology stack that was used to build iDempiere so you can see how the system hangs together
 
* [[Eclipse Buckminster Component Assembly]]: looks at the use of Buckminster in the iDempiere project so that you can get a better understanding of the build process, and how Buckminster manages the components
 
* [[Eclipse Buckminster Component Assembly]]: looks at the use of Buckminster in the iDempiere project so that you can get a better understanding of the build process, and how Buckminster manages the components
  
−
== References ==
+
= References =
 
* [[:Category:Development]]: all Wiki pages regarding Development
 
* [[:Category:Development]]: all Wiki pages regarding Development
 
* [[:Category:Developer documentation]]: more specific Development topics
 
* [[:Category:Developer documentation]]: more specific Development topics
−
* [http://www.adempiere.com/ADempiere_ERP Read-only wiki of the predecessor Adempiere project]: the project has moved on in the form of Idempiere but the archive remains a valuable resource for reference purposes
+
* [http://www.adempiere.com/ADempiere_ERP Read-only wiki of the predecessor Adempiere project]: the project has moved on in the form of Idempiere but the archive remains for reference purposes
 +
 
 +
[[Category:Developer documentation‏‎]]
 +
[[Category:Development]]
 +
[[Category:NeedsToBeUpdated]]

Latest revision as of 14:46, 16 September 2022

This guide explains to Software Developers and System Administrators how to configure and customise iDempiere. Solid technical experience is required.

Status: This is Work in Progress, but it may be useful as it is.

Introduction

The core iDempiere system supplies a range business functionality straight out of the box, such as role-based access, organisational structure, accounting, procurement, warehousing, and so on, but it is also flexible enough to be adapted to meet new requirements as they arise, using these mechanisms:

  • Configuration: changing the system using built-in facilities such as modifying field labels, setting parameters, modifying workflows, and using report-writers;
  • Localization: adapting the system for a specific country, region or language by adding locale-specific components and translating the terminology;
  • Integration: linking disparate software applications and platforms using predefined interfaces so that the subsystems function together as one system to support the enterprise objectives;
  • Extension: creating new functionality by adding database attributes and plugins which do not affect the core system;
  • Modification: you have access to the source code so you can turn your system into a tar pit, or big ball of mud, so don't modify the code or database schema by hand unless you intend to push the code into the trunk.

This guide explains how iDempiere can be adapted to meet new business requirements, without changing the codebase.

Configuration

Login window

Themes

These themes can be installed as plug-ins. Use them as a base for developing your own custom theme.

Dashboard configuration

WorkFlows

Custom fields

iDempiere can be configured with new database fields to provide added business functionality. These fields are marked 'User maintained' so they will be preserved through any database upgrade process.

Report Writer

Localization

Language Packs

Change field labels

Localize reports

Integration

SOAP Web Services

Extension

Externally developed plug-ins

Plug-in collections

The iDempiere community has developed a large collection of plug-ins and and made them available for download and deployment. These can deployed directly into the running application using the Apache Felix interface. The Eclipse development environment is not needed.

Deploying plug-ins

Plug-ins can be deployed and managed dynamically, using the Apache Felix Web Console:

Customised plug-ins

Development environment

You must set up the Eclipse development environment in order to develop plug-ins, as follows:

Developing custom plug-ins

Once the development environment has been set up, you can follow these guides to develop various types of plug-ins:

Install and run iDempiere

Pre-built installers

Build a customised instance of iDempiere

Modification

Modification involves making changes to the iDempiere source code and schema, so don't do it. You will not be able to upgrade. Create a plug-in instead.

Structure of iDempiere

  • Equinox OSGi framework: describes OSGi and the technology stack that was used to build iDempiere so you can see how the system hangs together
  • Eclipse Buckminster Component Assembly: looks at the use of Buckminster in the iDempiere project so that you can get a better understanding of the build process, and how Buckminster manages the components

References

Cookies help us deliver our services. By using our services, you agree to our use of cookies.