SlideShare a Scribd company logo
1 of 26
Download to read offline
Introduction to
            Open Source ERP
           for Java Developers
     (Compiere, ADempiere and Openbravo)

Presented by:
Chuck Boecking from Trek Global
512.850.6068
Note: If you find this presentation helpful or if you have recommendations, please
reach out and let me know. Thanks!
Why a Java Developer Should Care
● Open Source ERP is approaching the tipping
  point of business acceptance.
● This tipping point gives the Java developers
  more freedom and flexibility when adopting
  platforms to solve wide-scale business
  problems.
● A single company-wide open source system
  gives developers more resources to drive
  and change business.
Interesting Points
● Compiere, ADempiere and OpenBravo are
  mature and stable solutions for managing
  goods and services in enterprises from
  $50M to $500M in gross revenue.
● Discussion topics will include architecture,
  application, performance tuning and war
  stories.
What is ERP?
ERP or Enterprise Resource Planning is a
single application that brings many common
organizational features into a single package.

Features include:
Accounting (GL, AP, AR)   Inventory Management       CRM (Customer Management


Receiving                 Purchasing (Order)         Fulfillment and Shipping
                          Management

Product Management        Sales (Order) Management   Manufacturing


Customer Management       Vendor Management          Service Management
Case Studies Worth Reading
Complex inspection and wholesale distribution
● 120 users across many countries and
  multiple financial entities
● Why notable: extensive customization

High volume wholesale and retail distribution
● 300 concurrent users shipping 10M units per
  month across 140K order lines
● Why notable: high volume
Technology Stack
● Java SE
● Tomcat and JBoss
● Model Driven Architecture - application
  dictionary
● zk WebUI and Java Swing
● PostgreSQL DB and Oracle DB
● 2Pack Release Management

Notable: supports end-to-end license-free
usage for companies with up to 500 concurrent
users.
ADempiere Statistics
● Just under 3000 classes w/o including auto-
  generated model classes
● About 800 tables
● Created in sf.net in 2006 as a fork from
  Compiere
● Historically one of sf.net's most active
  projects
Common Developer Entry Points
Developer hooks for implementing logic and
automation:
● Callout - based on user interactions with UI.
● Model - based on interaction with
  persistence layer.
● Processes - based on users deliberately
  pressing a button or invoking a menu action.

Other: Context - helps control visibility and
default values and is also accessible from code
almost anywhere.
Callout
package org.adempiere.callout;

import java.util.Properties;

import org.compiere.model.CalloutEngine;
import org.compiere.model.GridField;
import org.compiere.model.GridTab;
import org.compiere.util.AdempiereSystemError;
import org.compiere.util.Env;

public class SimpleCallout extends CalloutEngine {

public String test(Properties ctx, int windowNo, GridTab mTab, GridField mField,
Object value) throws AdempiereSystemError {

 // First get value
 Price = ((BigDecimal)mTab.getValue("Price"));

 // do some calculations
  BigDecimal Total = Qty.multiply(Price);

 // Set value back to column field
 mTab.setValue("Total", Total);

  return "this is a return string";
 }
}
Source: http://www.adempiere.com/Callout
Model
package adempiere.model;
import org.compiere.model.X_XX_Material;
public class MMaterial extends X_XX_Material {
        /** Create & Load existing Persistent Object */
        public MMaterial(Properties ctx, int XX_Material_ID, String trxName) {
               super(ctx, XX_Material_ID, trxName);
               // other initializations here
        }

       /** Create & Load existing Persistent Object.         */
       public MMaterial(Properties ctx, ResultSet rs, String trxName) {
              super(ctx, rs, trxName);
              // other initializations here
       }

       /** [OPTIONAL] Called before Save for Pre-Save Operation.           */
       protected boolean beforeSave(boolean newRecord)
       {
              return true;
       }
       /** ... afterSave(), getters, setters, convenience methods */
}


Example: http://www.adempiere.com/NewWindow
Process
package org.compiere.process;
public class TemplateProcess extends SvrProcess {
        private PO record;

      @Override
      protected void prepare() {
             for ( ProcessInfoParameter para : getParameter())
             { ...handle parameters...
             }
             // you can also retrieve the id of the current record for processes called from a window
             int recordId = getRecord_ID();
      }

      @Override
      protected String doIt() throws Exception {

             /* Commonly the doIt method firstly do some validations on the parameters
                and throws AdempiereUserException or AdempiereSystemException if errors found */

             return "A message to the user (indicating success - failures must throw Exceptions)";
      }

      /** Post process actions (outside trx). */
      @Override
      protected void postProcess(boolean success) {
              if (success) {} else { }
      }

}
http://www.adempiere.com/Process
Context
int currole_id = Env.getContextAsInt(ctx, "#AD_Role_ID");
2Pack Environment Migration
http://www.adempiere.com/2Pack
                                                                 Simple
                                                               Environment
                                                               Management
                                 Prod
 Complex
Environment                                                       Prod
Management
                     Stage 1            Stage 2

                                                                  Dev

              QA1                QA2              QA3




   Dev1               Dev2              Dev3            Dev4
Resources
Development introduction
http://www.adempiere.com/Development




End-to-end development example http://www.adempiere.
com/How_to_create_a_complete_new_module_in_ADempiere




Creating a customization environment
http://www.adempiere.com/Create_your_ADempiere_customization_environment
War Stories
Complex: CSI inspection

Volume: 10M units from worldwide distribution

eCommerce: 3 webstores => 1K shipments/day

Project Management: Time tracking
Chuck Boecking
●   Started with Compiere in 2003
●   Open Source ERP 70 to 90% since 2006
●   Professional educator and integrator
●   Wholesale distribution and assembly
    specialty

Chuck Boecking
512.850.6068
cboecking@trekglobal.com
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers

More Related Content

What's hot

Budgeting using hyperion planning vs essbase
Budgeting using hyperion planning vs essbaseBudgeting using hyperion planning vs essbase
Budgeting using hyperion planning vs essbaseSyntelli Solutions
 
How to Build Custom Module in Odoo 15
How to Build Custom Module in Odoo 15How to Build Custom Module in Odoo 15
How to Build Custom Module in Odoo 15Celine George
 
Sap business process flows
Sap business process flowsSap business process flows
Sap business process flowsVerity Solutions
 
Hyperion LCM Utility
Hyperion LCM UtilityHyperion LCM Utility
Hyperion LCM UtilityAlithya
 
Hyperion Essbase - Ravi Kurakula
Hyperion Essbase   -   Ravi KurakulaHyperion Essbase   -   Ravi Kurakula
Hyperion Essbase - Ravi KurakulaRavi kurakula
 
Tổng quan SAP (SAP Overview)
Tổng quan SAP (SAP Overview)Tổng quan SAP (SAP Overview)
Tổng quan SAP (SAP Overview)ledao14
 
Moving from MaxL to EPMAutomate for Oracle Planning & Budgeting Cloud Service...
Moving from MaxL to EPMAutomate for Oracle Planning & Budgeting Cloud Service...Moving from MaxL to EPMAutomate for Oracle Planning & Budgeting Cloud Service...
Moving from MaxL to EPMAutomate for Oracle Planning & Budgeting Cloud Service...mindstremanalysis
 
Inventory Management System | Finance
Inventory Management System | FinanceInventory Management System | Finance
Inventory Management System | FinanceTransweb Global Inc
 
Cash flow in hfm – simplified
Cash flow in hfm – simplifiedCash flow in hfm – simplified
Cash flow in hfm – simplifiedAlithya
 
Simplify Complex Consolidations and Close Processes with Oracle Financial Con...
Simplify Complex Consolidations and Close Processes with Oracle Financial Con...Simplify Complex Consolidations and Close Processes with Oracle Financial Con...
Simplify Complex Consolidations and Close Processes with Oracle Financial Con...Alithya
 
Maximo integration to other systems by Bashar Mahasen
 Maximo integration to other systems by Bashar Mahasen Maximo integration to other systems by Bashar Mahasen
Maximo integration to other systems by Bashar MahasenBashar Mahasen
 
EPBCS - A New Approach to Planning Implementations
EPBCS - A New Approach to Planning ImplementationsEPBCS - A New Approach to Planning Implementations
EPBCS - A New Approach to Planning ImplementationsJoseph Alaimo Jr
 
Oracle Hyperion Planning Best Practices
Oracle Hyperion Planning Best PracticesOracle Hyperion Planning Best Practices
Oracle Hyperion Planning Best PracticesIssam Hejazin
 
S4 HANA Finance Contents
S4 HANA Finance Contents S4 HANA Finance Contents
S4 HANA Finance Contents Pradeep Hota
 
Look at Oracle Integration Cloud – its relationship to ICS. Customer use Case...
Look at Oracle Integration Cloud – its relationship to ICS. Customer use Case...Look at Oracle Integration Cloud – its relationship to ICS. Customer use Case...
Look at Oracle Integration Cloud – its relationship to ICS. Customer use Case...Phil Wilkins
 
Oracle process manufacturing training
Oracle process manufacturing trainingOracle process manufacturing training
Oracle process manufacturing trainingTechnologyTutor
 

What's hot (20)

Budgeting using hyperion planning vs essbase
Budgeting using hyperion planning vs essbaseBudgeting using hyperion planning vs essbase
Budgeting using hyperion planning vs essbase
 
How to Build Custom Module in Odoo 15
How to Build Custom Module in Odoo 15How to Build Custom Module in Odoo 15
How to Build Custom Module in Odoo 15
 
Sap business process flows
Sap business process flowsSap business process flows
Sap business process flows
 
Hyperion LCM Utility
Hyperion LCM UtilityHyperion LCM Utility
Hyperion LCM Utility
 
Hyperion Essbase - Ravi Kurakula
Hyperion Essbase   -   Ravi KurakulaHyperion Essbase   -   Ravi Kurakula
Hyperion Essbase - Ravi Kurakula
 
Tổng quan SAP (SAP Overview)
Tổng quan SAP (SAP Overview)Tổng quan SAP (SAP Overview)
Tổng quan SAP (SAP Overview)
 
Moving from MaxL to EPMAutomate for Oracle Planning & Budgeting Cloud Service...
Moving from MaxL to EPMAutomate for Oracle Planning & Budgeting Cloud Service...Moving from MaxL to EPMAutomate for Oracle Planning & Budgeting Cloud Service...
Moving from MaxL to EPMAutomate for Oracle Planning & Budgeting Cloud Service...
 
Inventory Management System | Finance
Inventory Management System | FinanceInventory Management System | Finance
Inventory Management System | Finance
 
SAP EWM 9.1 Online Training
SAP EWM 9.1 Online TrainingSAP EWM 9.1 Online Training
SAP EWM 9.1 Online Training
 
Cash flow in hfm – simplified
Cash flow in hfm – simplifiedCash flow in hfm – simplified
Cash flow in hfm – simplified
 
Valuation & Split valuation in MM
Valuation & Split valuation in MMValuation & Split valuation in MM
Valuation & Split valuation in MM
 
Simplify Complex Consolidations and Close Processes with Oracle Financial Con...
Simplify Complex Consolidations and Close Processes with Oracle Financial Con...Simplify Complex Consolidations and Close Processes with Oracle Financial Con...
Simplify Complex Consolidations and Close Processes with Oracle Financial Con...
 
Maximo integration to other systems by Bashar Mahasen
 Maximo integration to other systems by Bashar Mahasen Maximo integration to other systems by Bashar Mahasen
Maximo integration to other systems by Bashar Mahasen
 
Oracle ERP Introduction
Oracle ERP IntroductionOracle ERP Introduction
Oracle ERP Introduction
 
EPBCS - A New Approach to Planning Implementations
EPBCS - A New Approach to Planning ImplementationsEPBCS - A New Approach to Planning Implementations
EPBCS - A New Approach to Planning Implementations
 
Hyperion Planning Overview
Hyperion Planning OverviewHyperion Planning Overview
Hyperion Planning Overview
 
Oracle Hyperion Planning Best Practices
Oracle Hyperion Planning Best PracticesOracle Hyperion Planning Best Practices
Oracle Hyperion Planning Best Practices
 
S4 HANA Finance Contents
S4 HANA Finance Contents S4 HANA Finance Contents
S4 HANA Finance Contents
 
Look at Oracle Integration Cloud – its relationship to ICS. Customer use Case...
Look at Oracle Integration Cloud – its relationship to ICS. Customer use Case...Look at Oracle Integration Cloud – its relationship to ICS. Customer use Case...
Look at Oracle Integration Cloud – its relationship to ICS. Customer use Case...
 
Oracle process manufacturing training
Oracle process manufacturing trainingOracle process manufacturing training
Oracle process manufacturing training
 

Viewers also liked

ERP System Development Plan
ERP System Development PlanERP System Development Plan
ERP System Development PlanSri Jayasinghe
 
Open Source Solution
Open Source SolutionOpen Source Solution
Open Source Solutionittishait
 
Smart pos stepbystep-v2-0
Smart pos stepbystep-v2-0Smart pos stepbystep-v2-0
Smart pos stepbystep-v2-0Rawntech Mak
 
Ad basic tech_workshop
Ad basic tech_workshopAd basic tech_workshop
Ad basic tech_workshopmanisherp084
 
Your Guide to be a Software Engineer
Your Guide to be a Software EngineerYour Guide to be a Software Engineer
Your Guide to be a Software EngineerAhmed Mater
 
Moneran Kingdom
Moneran KingdomMoneran Kingdom
Moneran Kingdomiiiapdst
 
Nyc 7 qualities_of_the_leader_as_coach_
Nyc 7 qualities_of_the_leader_as_coach_Nyc 7 qualities_of_the_leader_as_coach_
Nyc 7 qualities_of_the_leader_as_coach_tomheck
 
Business Process Reengineering Presentation
Business Process Reengineering PresentationBusiness Process Reengineering Presentation
Business Process Reengineering PresentationHira Anwer Khan
 
Keynote #Tech - Solution métier Open Source : exemple de nouvelle approche te...
Keynote #Tech - Solution métier Open Source : exemple de nouvelle approche te...Keynote #Tech - Solution métier Open Source : exemple de nouvelle approche te...
Keynote #Tech - Solution métier Open Source : exemple de nouvelle approche te...Paris Open Source Summit
 
Training & development dhanu
Training & development dhanuTraining & development dhanu
Training & development dhanuDhanu P G Naik
 
Final Report Business Process Reengineering
Final Report Business Process ReengineeringFinal Report Business Process Reengineering
Final Report Business Process ReengineeringHira Anwer Khan
 
Tips on how to improve the performance of your custom modules for high volume...
Tips on how to improve the performance of your custom modules for high volume...Tips on how to improve the performance of your custom modules for high volume...
Tips on how to improve the performance of your custom modules for high volume...Odoo
 

Viewers also liked (20)

ERP System Development Plan
ERP System Development PlanERP System Development Plan
ERP System Development Plan
 
ERP PROJECT
ERP PROJECTERP PROJECT
ERP PROJECT
 
Open Source Solution
Open Source SolutionOpen Source Solution
Open Source Solution
 
Smart pos stepbystep-v2-0
Smart pos stepbystep-v2-0Smart pos stepbystep-v2-0
Smart pos stepbystep-v2-0
 
Ad basic tech_workshop
Ad basic tech_workshopAd basic tech_workshop
Ad basic tech_workshop
 
Your Guide to be a Software Engineer
Your Guide to be a Software EngineerYour Guide to be a Software Engineer
Your Guide to be a Software Engineer
 
Moneran Kingdom
Moneran KingdomMoneran Kingdom
Moneran Kingdom
 
Group3
Group3Group3
Group3
 
Nyc 7 qualities_of_the_leader_as_coach_
Nyc 7 qualities_of_the_leader_as_coach_Nyc 7 qualities_of_the_leader_as_coach_
Nyc 7 qualities_of_the_leader_as_coach_
 
Business Process Reengineering Presentation
Business Process Reengineering PresentationBusiness Process Reengineering Presentation
Business Process Reengineering Presentation
 
Unit 06: The Web Application Extension for UML
Unit 06: The Web Application Extension for UMLUnit 06: The Web Application Extension for UML
Unit 06: The Web Application Extension for UML
 
Krefeld iDempiere 05/17/2013
Krefeld iDempiere 05/17/2013Krefeld iDempiere 05/17/2013
Krefeld iDempiere 05/17/2013
 
Keynote #Tech - Solution métier Open Source : exemple de nouvelle approche te...
Keynote #Tech - Solution métier Open Source : exemple de nouvelle approche te...Keynote #Tech - Solution métier Open Source : exemple de nouvelle approche te...
Keynote #Tech - Solution métier Open Source : exemple de nouvelle approche te...
 
Unit 05: Physical Architecture Design
Unit 05: Physical Architecture DesignUnit 05: Physical Architecture Design
Unit 05: Physical Architecture Design
 
3 Jsf
3 Jsf3 Jsf
3 Jsf
 
Training & development dhanu
Training & development dhanuTraining & development dhanu
Training & development dhanu
 
Unit 09: Web Application Testing
Unit 09: Web Application TestingUnit 09: Web Application Testing
Unit 09: Web Application Testing
 
Final Report Business Process Reengineering
Final Report Business Process ReengineeringFinal Report Business Process Reengineering
Final Report Business Process Reengineering
 
1 Introduction
1 Introduction1 Introduction
1 Introduction
 
Tips on how to improve the performance of your custom modules for high volume...
Tips on how to improve the performance of your custom modules for high volume...Tips on how to improve the performance of your custom modules for high volume...
Tips on how to improve the performance of your custom modules for high volume...
 

Similar to Open Source ERP Technologies for Java Developers

Chicago DevOps Meetup Nov2019
Chicago DevOps Meetup Nov2019Chicago DevOps Meetup Nov2019
Chicago DevOps Meetup Nov2019Mike Villiger
 
Guide to Generate Extent Report in Kotlin
Guide to Generate Extent Report in KotlinGuide to Generate Extent Report in Kotlin
Guide to Generate Extent Report in KotlinRapidValue
 
Anatomy of a Build Pipeline
Anatomy of a Build PipelineAnatomy of a Build Pipeline
Anatomy of a Build PipelineSamuel Brown
 
Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)Peter Bittner
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)CIVEL Benoit
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1CIVEL Benoit
 
Simplifying RCP Update and Install
Simplifying RCP Update and InstallSimplifying RCP Update and Install
Simplifying RCP Update and Installsusanfmccourt
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePiotr Pelczar
 
Testing your application on Google App Engine
Testing your application on Google App EngineTesting your application on Google App Engine
Testing your application on Google App EngineInphina Technologies
 
Testing Your Application On Google App Engine
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App EngineIndicThreads
 
Regain Control Thanks To Prometheus
Regain Control Thanks To PrometheusRegain Control Thanks To Prometheus
Regain Control Thanks To PrometheusEtienne Coutaud
 
Idempotency of commands in distributed systems
Idempotency of commands in distributed systemsIdempotency of commands in distributed systems
Idempotency of commands in distributed systemsMax Małecki
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java binOlve Hansen
 
Java programming concept
Java programming conceptJava programming concept
Java programming conceptSanjay Gunjal
 
CMI 2.0 session at Drupal DevDays in Cluj-Napoca
CMI 2.0 session at Drupal DevDays in Cluj-NapocaCMI 2.0 session at Drupal DevDays in Cluj-Napoca
CMI 2.0 session at Drupal DevDays in Cluj-NapocaNuvole
 
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8sShipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8sAndreas Grabner
 

Similar to Open Source ERP Technologies for Java Developers (20)

Chicago DevOps Meetup Nov2019
Chicago DevOps Meetup Nov2019Chicago DevOps Meetup Nov2019
Chicago DevOps Meetup Nov2019
 
Guide to Generate Extent Report in Kotlin
Guide to Generate Extent Report in KotlinGuide to Generate Extent Report in Kotlin
Guide to Generate Extent Report in Kotlin
 
Anatomy of a Build Pipeline
Anatomy of a Build PipelineAnatomy of a Build Pipeline
Anatomy of a Build Pipeline
 
Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
 
Simplifying RCP Update and Install
Simplifying RCP Update and InstallSimplifying RCP Update and Install
Simplifying RCP Update and Install
 
What's new in p2 (2009)?
What's new in p2 (2009)?What's new in p2 (2009)?
What's new in p2 (2009)?
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecture
 
Testing your application on Google App Engine
Testing your application on Google App EngineTesting your application on Google App Engine
Testing your application on Google App Engine
 
Testing Your Application On Google App Engine
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App Engine
 
Regain Control Thanks To Prometheus
Regain Control Thanks To PrometheusRegain Control Thanks To Prometheus
Regain Control Thanks To Prometheus
 
Hot sos em12c_metric_extensions
Hot sos em12c_metric_extensionsHot sos em12c_metric_extensions
Hot sos em12c_metric_extensions
 
DevOps explained
DevOps explainedDevOps explained
DevOps explained
 
Idempotency of commands in distributed systems
Idempotency of commands in distributed systemsIdempotency of commands in distributed systems
Idempotency of commands in distributed systems
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
 
Java programming concept
Java programming conceptJava programming concept
Java programming concept
 
CMI 2.0 session at Drupal DevDays in Cluj-Napoca
CMI 2.0 session at Drupal DevDays in Cluj-NapocaCMI 2.0 session at Drupal DevDays in Cluj-Napoca
CMI 2.0 session at Drupal DevDays in Cluj-Napoca
 
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8sShipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
 
Tdd,Ioc
Tdd,IocTdd,Ioc
Tdd,Ioc
 

Recently uploaded

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Recently uploaded (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Open Source ERP Technologies for Java Developers

  • 1. Introduction to Open Source ERP for Java Developers (Compiere, ADempiere and Openbravo) Presented by: Chuck Boecking from Trek Global 512.850.6068 Note: If you find this presentation helpful or if you have recommendations, please reach out and let me know. Thanks!
  • 2. Why a Java Developer Should Care ● Open Source ERP is approaching the tipping point of business acceptance. ● This tipping point gives the Java developers more freedom and flexibility when adopting platforms to solve wide-scale business problems. ● A single company-wide open source system gives developers more resources to drive and change business.
  • 3. Interesting Points ● Compiere, ADempiere and OpenBravo are mature and stable solutions for managing goods and services in enterprises from $50M to $500M in gross revenue. ● Discussion topics will include architecture, application, performance tuning and war stories.
  • 4. What is ERP? ERP or Enterprise Resource Planning is a single application that brings many common organizational features into a single package. Features include: Accounting (GL, AP, AR) Inventory Management CRM (Customer Management Receiving Purchasing (Order) Fulfillment and Shipping Management Product Management Sales (Order) Management Manufacturing Customer Management Vendor Management Service Management
  • 5. Case Studies Worth Reading Complex inspection and wholesale distribution ● 120 users across many countries and multiple financial entities ● Why notable: extensive customization High volume wholesale and retail distribution ● 300 concurrent users shipping 10M units per month across 140K order lines ● Why notable: high volume
  • 6. Technology Stack ● Java SE ● Tomcat and JBoss ● Model Driven Architecture - application dictionary ● zk WebUI and Java Swing ● PostgreSQL DB and Oracle DB ● 2Pack Release Management Notable: supports end-to-end license-free usage for companies with up to 500 concurrent users.
  • 7. ADempiere Statistics ● Just under 3000 classes w/o including auto- generated model classes ● About 800 tables ● Created in sf.net in 2006 as a fork from Compiere ● Historically one of sf.net's most active projects
  • 8.
  • 9. Common Developer Entry Points Developer hooks for implementing logic and automation: ● Callout - based on user interactions with UI. ● Model - based on interaction with persistence layer. ● Processes - based on users deliberately pressing a button or invoking a menu action. Other: Context - helps control visibility and default values and is also accessible from code almost anywhere.
  • 10. Callout package org.adempiere.callout; import java.util.Properties; import org.compiere.model.CalloutEngine; import org.compiere.model.GridField; import org.compiere.model.GridTab; import org.compiere.util.AdempiereSystemError; import org.compiere.util.Env; public class SimpleCallout extends CalloutEngine { public String test(Properties ctx, int windowNo, GridTab mTab, GridField mField, Object value) throws AdempiereSystemError { // First get value Price = ((BigDecimal)mTab.getValue("Price")); // do some calculations BigDecimal Total = Qty.multiply(Price); // Set value back to column field mTab.setValue("Total", Total); return "this is a return string"; } } Source: http://www.adempiere.com/Callout
  • 11. Model package adempiere.model; import org.compiere.model.X_XX_Material; public class MMaterial extends X_XX_Material { /** Create & Load existing Persistent Object */ public MMaterial(Properties ctx, int XX_Material_ID, String trxName) { super(ctx, XX_Material_ID, trxName); // other initializations here } /** Create & Load existing Persistent Object. */ public MMaterial(Properties ctx, ResultSet rs, String trxName) { super(ctx, rs, trxName); // other initializations here } /** [OPTIONAL] Called before Save for Pre-Save Operation. */ protected boolean beforeSave(boolean newRecord) { return true; } /** ... afterSave(), getters, setters, convenience methods */ } Example: http://www.adempiere.com/NewWindow
  • 12. Process package org.compiere.process; public class TemplateProcess extends SvrProcess { private PO record; @Override protected void prepare() { for ( ProcessInfoParameter para : getParameter()) { ...handle parameters... } // you can also retrieve the id of the current record for processes called from a window int recordId = getRecord_ID(); } @Override protected String doIt() throws Exception { /* Commonly the doIt method firstly do some validations on the parameters and throws AdempiereUserException or AdempiereSystemException if errors found */ return "A message to the user (indicating success - failures must throw Exceptions)"; } /** Post process actions (outside trx). */ @Override protected void postProcess(boolean success) { if (success) {} else { } } } http://www.adempiere.com/Process
  • 13. Context int currole_id = Env.getContextAsInt(ctx, "#AD_Role_ID");
  • 14. 2Pack Environment Migration http://www.adempiere.com/2Pack Simple Environment Management Prod Complex Environment Prod Management Stage 1 Stage 2 Dev QA1 QA2 QA3 Dev1 Dev2 Dev3 Dev4
  • 15. Resources Development introduction http://www.adempiere.com/Development End-to-end development example http://www.adempiere. com/How_to_create_a_complete_new_module_in_ADempiere Creating a customization environment http://www.adempiere.com/Create_your_ADempiere_customization_environment
  • 16. War Stories Complex: CSI inspection Volume: 10M units from worldwide distribution eCommerce: 3 webstores => 1K shipments/day Project Management: Time tracking
  • 17. Chuck Boecking ● Started with Compiere in 2003 ● Open Source ERP 70 to 90% since 2006 ● Professional educator and integrator ● Wholesale distribution and assembly specialty Chuck Boecking 512.850.6068 cboecking@trekglobal.com