This project is a example template for iDempiere plugins. It's a standard structure. It contains examples about the most frequently used elements (5) Callout, Forms, Models, Processes, Events.
- Copyright: 2016 Saúl Piña sauljabin@gmail.com
- Repository: https://github.com/sauljabin/idempiere-plugin-template
- License: GPL 2
- Version: v1.0.0
- Folder estructure
org.idempiere.{plugin name}
|_.settings
|_.classpath
|_.project
|_build.properties
|_COPYING
|_README.md
|_META-INF
| |_MANIFEST.MF
| |_2Pack_x.x.x.zip
|_OSGI-INF
| |_org.idempiere.component.CalloutFactory.xml
| |_org.idempiere.component.EventManager.xml
| |_org.idempiere.component.FormFactory.xml
| |_org.idempiere.component.ModelFactory.xml
| |_org.idempiere.component.ProcessFactory.xml
|_src
|_org
|_idempiere
|_base (plugin core)
| |_CustomCalloutFactory.java (IColumnCalloutFactory implementation)
| |_CustomEventManager.java (AbstractEventHandler implementation)
| |_CustomFormFactory.java (IFormFactory implementation)
| |_CustomModelFactory.java (IModelFactory implementation)
| |_CustomProcessFactory.java (IProcessFactory implementation)
| |_CustomCallout.java (IColumnCallout implementation)
| |_CustomEventHandler.java (for event implementation)
| |_CustomFormController.java (IFormController implementation)
| |_CustomProcess.java (SvrProcess implementation)
|_component (pugin components)
| |_CalloutFactory.java (register class callout)
| |_EventManager.java (register class event handler)
| |_FormFactory.java (register class form)
| |_ProcessFactory.java (register class process)
| |_ModelFactory.java (register class model)
|_util
| |_PluginInfo.java (gets plugin information dynamically)
| |_TimestampUtil.java (Time utils)
|_callout (new callouts, extends CustomCallout)
|_event (new events, extends CustomEventHandler)
|_form (new forms, extends CustomFormController)
|_process (new processes, extends CustomProcess)
|_model (autogenerated models)
-
New callout
- Name: C{callout name}
- Package:
org.idempiere.callout
- Example:
org.idempiere.callout.CStringFormat
-
New process
- Name: P{process name}
- Package:
org.idempiere.process
- Example:
org.idempiere.process.PGenerateWithholding
-
New form
- Name: F{form name}
- Package:
org.idempiere.form
- Example:
org.idempiere.form.FMultiPayment
-
New event
- Name: E{event name}
- Package:
org.idempiere.event
- Example:
org.idempiere.event.EAfterCompleteInvoice
-
New model (extends class X)
- Name: M{table name without prefix}.
- Package:
org.idempiere.model
- Example:
org.idempiere.model.X_TL_TableExample -> org.idempiere.model.MTableExample
-
New callout
- Create callout in package
org.idempiere.callout
, extends fromCustomCallout
- Add license header
- Register callout in
org.idempiere.component.CalloutFactory
. Example:
protected void initialize() { registerCallout(MTableExample.Table_Name, MTableExample.COLUMNNAME_Text, CPrintPluginInfo.class); }
- Create callout in package
-
New process
- Create process in package
org.idempiere.process
, extends fromCustomProcess
- Add license header
- Register process in
org.idempiere.component.ProcessFactory
. Example:
protected void initialize() { registerProcess(PPrintPluginInfo.class); }
- Create process in package
-
New form
- Create form in package
org.idempiere.form
, extends fromCustomFormController
- Add license header
- Register form in
org.idempiere.component.FormFactory
. Example:
protected void initialize() { registerForm(FPrintPluginInfo.class); }
- Create form in package
-
New event
- Create event in package
org.idempiere.event
, extends fromCustomEventHandler
- Add license header
- Register event in
org.idempiere.component.EventManager
. Example:
protected void initialize() { registerTableEvent(IEventTopics.DOC_BEFORE_COMPLETE, MTableExample.Table_Name, EPrintPluginInfo.class); }
- Create event in package
-
New model (extends form class X)
- Create model in package
org.idempiere.model
, extends classX
. Example:org.idempiere.model.X_TL_TableExample -> org.idempiere.model.MTableExample
- Add license header
- Register model in
org.idempiere.component.ModelFactory
. Example:
protected void initialize() { registerTableModel(MTableExample.Table_Name, MTableExample.class); }
- Create model in package