Main Development Concepts (Update)

From InfiniteERP Wiki
Revision as of 08:46, 21 September 2026 by Wikiadmin (talk | contribs) (Halaman baru: versi update Main Development Concepts dari Etendo Documentation (rev 235 tidak dihapus). Tag: Review_Pending.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Back button.png   Back to Main Page


Main Development Concepts (Update)

Catatan: Halaman ini adalah versi update dari Etendo Documentation yang lebih lengkap dibandingkan versi lama yang ada di wiki (yang saat ini kosong). Versi lama tidak dihapus. Silakan review perbedaan dan putuskan apakah menggunakan versi ini, versi lama, atau kombinasi keduanya.

Status: ⏳ REVIEW PENDING — ditandai agar user bisa memutuskan nanti.

Design Principles

InfiniteERP is a software application which is being developed with the following design principles in mind:

  • Open Source
  • ERP application framework
  • [Model Driven Development] (MDD)
  • [Modularity]
  • [Rich Internet Application (RIA)]
  • Java - Lightweight J2EE
  • Support for multiple databases

Open Source

InfiniteERP is an open source project built on open source technologies. We aim to leverage on the excellent infrastructure components developed by the open source community to ensure our platform benefits from the advantages and stability of components supported by a large community. Whenever necessary we contribute our developments back to the community.

ERP Application Framework

InfiniteERP is an application developed through an integrated development framework included in the InfiniteERP distribution. This integrated development framework takes care of a wide range of concerns in all the areas involved during the development process. Most relevant from low level to high level:

  • Integration with [IntelliJ IDEA]
  • Integration with SCM (Git)
  • [Development Build Tasks|Automated build process]]
  • [Development Build Tasks|Automated update process]]
  • [Development Build Tasks|Automated deploy process]]
  • Built-in infrastructure for several common development needs:
 * MVC framework (xmlEngine, httpBaseServlet, sqlc)
 * Data Access Layer (based on [Hibernate])
 * Web server and servlet-container (integration with [Apache Tomcat] and support for other J2EE implementations)
 * Reporting (integration with [JasperReports] engine)
 * XML and JSON REST Webservices
 * Emailing
 * Process scheduling (integration with [Quartz])
  • MDD development framework (InfiniteERP Application Dictionary)
  • Multi-language user interface support
  • Built-in security model
  • Built-in enterprise model
  • Multi-currency support
  • Multi-general ledger support

Model Driven Development

InfiniteERP follows a [Model Driven Development] (MDD) approach. This means that InfiniteERP uses a technology agnostic model to define application components, such as windows and processes. Based on this application model, code and other software artifacts are generated.

InfiniteERP data model information — so called metadata — is stored in the InfiniteERP Application Dictionary.

Model Driven Development aims to increase productivity and re-use through separation of concerns and abstraction. The model is an abstract definition of system components which contains enough information to drive the generation of one (or more) implementations of the system in a concrete technology.

This separation of concerns — abstract functional description in the model and implementation of model components in a concrete technology — hides technology complexities to ERP domain experts in their process to define and implement new ERP functionality and simplifies the evolution of the implementation technology.

In some cases it is needed to code a solution externally from the model. This is fully supported by InfiniteERP. Developers can freely develop their own solutions on top of the InfiniteERP technology stack.

Etendo Main Concepts

System Requirements

InfiniteERP runs on top of a group of well-known third party applications:

  • Apache Tomcat — used as the servlet container, but others can be used instead
  • Ant — build tool (InfiniteERP uses Ant-based build tasks, consistent with the Openbravo CE lineage)
  • PostgreSQL or Oracle SE database

All of these applications can be installed both on Linux or Windows. See Development Stack Setup for detailed setup instructions.

Development Environment

InfiniteERP developers have three different ways to develop their code. Following the MDD approach, the most common is to edit the InfiniteERP Application Dictionary through a web browser connected to InfiniteERP. Based on the new model definition, the software artifacts can be generated automatically. A developer can also connect directly to the InfiniteERP database through a SQL client (e.g., pgAdmin, SQL Developer) to manage database schema objects (tables, procedures, etc.). Finally, developers can develop their own code through an integrated development environment such as [IntelliJ IDEA] or Eclipse.

File:Main Development Concepts-0.png
Development environment overview

All InfiniteERP software artifacts are stored in text files in the development project. This includes the database definition and content. The large advantage of using text files for storing all software artifacts is that it is much easier to share and compare changes made by developers in a distributed environment.

InfiniteERP uses a tool called [DBSourceManager] to manage database source code. DBSourceManager is able to read from the database schema objects and application dictionary data and export them to XML files. It can also create or update an InfiniteERP database from those XML files.

The process to build the system from InfiniteERP source code includes a number of steps to generate the code at different levels (DAL, WAD and others) and put together that code with other code directly written by developers. InfiniteERP has automated this process through build tasks. See Development Build Tasks for details.

Architecture

The application architecture is explained in Etendo Architecture (Etendo Documentation). InfiniteERP inherits this architecture.

In summary, InfiniteERP moves away from a classic servlet architecture to a Rich Internet Application (RIA) architecture. In a RIA architecture, the requests for data and for the page/user interface are separated. The page/user interfaces are loaded on the client once and then re-used while the user works in the application, while requests for data and actions are executed continuously.

The InfiniteERP architecture is implemented using several modules:

  • The JSON module provides the JSON REST web service, used for client-server data communication
  • The DAL takes care of business object persistence
  • The Kernel module takes care of infrastructure tasks such as request processing, event handling, compression and caching
  • The DataSource module uses the JSON module and provides higher-level data request functionality for querying and data-related actions
  • The Smartclient module provides the [Smartclient] user interface library
  • The application module contains the implementation of the navigation bar, grids and forms and other application-oriented client and server-side code

Key concepts introduced by this architecture include:

  • Component and Component Provider: the user interface is implemented by components (a selector, a field on a form, a layout, a form, a grid). Components are managed by a Component Provider which creates components and provides them to the kernel.
  • Weld (CDI): dependency injection and component management based on JSR-299 (CDI 2.0). Core parts of the architecture use Weld for dependency injection, component definition, and business entity events.
  • ETags, Caching and Compression: the Client Kernel module takes care of caching components and component requests, and compresses results using jsmin.

See the [Etendo Architecture] documentation for the full explanation.

Compare: Versi Lama vs Versi Baru

Versi Lama (rev 235, 2018) — Saat ini KOSONG di wiki. Tidak ada konten yang tersimpan.

Versi Baru (Etendo Documentation, diadaptasi ke InfiniteERP) — Halaman ini. Konten lebih lengkap dengan:

  • Design Principles yang diuraikan detail (Open Source, ERP Application Framework, MDD, Modularity, RIA, Java J2EE, multi-db)
  • System Requirements yang disebutkan eksplisit (Apache Tomcat, Ant, PostgreSQL/Oracle)
  • Development Environment dengan keterangan tiga cara mengembangan & DBSourceManager
  • Architecture section baru (RIA, Component/Component Provider, Weld/CDI, ETags/Caching/Compression)
  • Reference ke halaman terkait: Development Build Tasks, Data Access Layer, Application Dictionary, DBSourceManager, [Etendo Architecture]
  • Gambar ilustrasi dari Etendo (Main_Development_Concepts-0.png, Main_Development_Concepts-1.png) — perlu ditinjau apakah gambar tersedia di wiki atau perlu diupload

Rekomendasi:

  • Jika versi lama memang sengaja dikosongkan, terapkan versi baru ini ke halaman utama "Main Development Concepts" setelah review.
  • Jika ingin menjaga versi lama untuk referensi, biarkan halaman ini sebagai tambahan dan buat link dari halaman utama.

See Also

References


This work is licensed under CC BY-SA 2.5 by [Etendo](https://etendo.software/).