
Compiere ERP-CRM è il sistema ERP Open Source più diffuso al mondo. E’ un sistema per la gestione e pianificazione di tutte le risorse e i processi di business tipici dell’impresa.
Ideato e sviluppato da Jorg Janke , il progetto viene portato a vanti a livello internazionale dall’azienda Californiana Compiere Inc.
L’azienda di San Francisco, allo stato attuale, mantiene il core ERP-CRM completamente open source sotto licenza GPL.
In Italia è stato localizzato dalla Mayking S.p.a che distribuisce la versione italiana concessa in licenza MPL.
Softwave Soluzione & tecnologie S.r.l. implementa ed integra la versione Mayking attraverso la propria distribuzione denominata, OPEN S.E.A. concessa in licenza MPL .

OPEN S.E.A consente di gestire e automatizzare tutti i processi legati alla contabilità, agli acquisti, alla produzione, alla distribuzione, allo stoccaggio e alla vendita di prodotti o servizi oggetto del business aziendale. Le implementazioni grazie alla particolare architettura avvengono in modo semplice e in tempi rapidi.
Compiere è stato disegnato rispettando le specifiche della Model Driven Architecture (MDA) dettate dall'OMG (Object Management Group) quindi implementa una Model-Driven Application Platform, ovvero una piattaforma guidata dai modelli. Questo significa che esiste un modello di riferimento per tutte le necessità di implementazione di una Business Logic, attraverso l’implementazione di oggetti, che sono costruiti sulla base del modello stesso. Questa facoltà consente di ridurre drasticamente i tempi di sviluppo, mantenere una elevata integrazione tra le componenti già implementate e quelle implementate ad hoc a seguito di richieste, potendo contare su una integrazione definita tramite interfacce standard.

La Model-Driven Application Platform di Compiere è composta da un dizionario di applicazioni (Application Dictionary), un motore transazionale (Transaction Engine) e un database transazionale (Transaction database).
Sostanzialmente nell’application dictionary viene memorizzata la logica di business e la logica di costruzione dell’interfaccia, attraverso la descrizione di determinati oggetti che sono le finestre, le tab, i campi, i workflow e le relazioni con le tabelle e colonne del db.
Nel database transazionale sono contenuti tutti i dati relativi alle anagrafiche, alle transazioni effettuate e ai dati contabili.
Il motore transazionale agisce da direttore di orchestra gestendo l’interazione tra il dizionario di applicazione e il database transazionale.
Ad esempio tutte le informazioni legate alla struttura della schermata relativa al prodotto, in termini di tab, numero di campi, tipologia e posizioni sono memorizzate all’interno del dizionario applicativo.
Mentre la valorizzazione dei campi proviene dalle tabelle contenute nel db. Il motore transazionale costruisce a runtime la schermata prodotto a partire dalla logica contenuta all’interno del dizionario di applicazione e dai dati presenti nel database transazionale.
Risulta facile e agevole customizzare OPEN S.E.A., grazie alla sua architettura, in modo da renderlo sempre più aderente al contesto aziendale andando ad implementare e modificare tramite gli oggetti del dizionario di applicazione, la propria logica di business richiesta.
Non è più l’azienda ad adattarsi alle funzionalità offerte dal sistema, bensì è il sistema che si adatta alle logiche di business d’impresa, aderendo su di essa come un guanto di lattice su una mano.
I cambiamenti effettuati sul dizionario di applicazione, una volta salvati, saranno immediatamente disponibili al motore transazionale e quindi all’utente finale evitando completamente la fase di build dell’applicazione, in quanto il dizianario offre capacità implementative runtime per quanto riguarda, oggetti tabelle, finestre,tab e campi che sono inclusi nei tiers dati e presentazione.
In particolare la Model driven architecture senza scrivere linee di codice e comandi SQL permette di :
- Creare un nuova tabella.
- Gestire le colonne di una tabella.
- Implementare opzionali regole di convalida (liste di valori , intervalli, etc.).
- Ridisegnare una finestra applicativa per mostrare la nuova colonna inserita.
- Creare e/o disegnare una finestra dell’applicazione per gestire il data entry sugli oggetti tabelle e colonna .
- Creare un report che contiene la nuova colonna o utilizzare la nuova colonna come un
parametro per una query.
E’ possibile effettuare tutte queste modifiche direttamente sul sistema di produzione senza minacciarne la stabilità e garantendo la fruibilità di nuovi oggetti direttamente a run-time.
OPEN S.E.A.