OSGI HengSin

From ADempiere
Revision as of 23:05, 4 December 2010 by Red1 (Talk) (adempiere-server)

Jump to: navigation, search
This Wiki is read-only for reference purposes to avoid broken links.
Heng Sin seen here with two of his technology assistants

Project Space

  • Low Heng Sin implementation of OSGI is done in another project space under Kenai.
  • His version is based on 3.6.0LTS
  • It is undergoing extensive refactoring by Heng Sin and testing review documentation by Redhuan D. Oon.
  • It is due for beta release as early as December-end, 2010.

Improvements

WorkflowUI.gif
  • One of the improvements there is the Workflow Editor where boxes look more UML-like*.

Backyard Info

  • There is something newbie setup experience documented here.

OSGI Roadmap - November 2010

  • Hengsin is doing more refactoring to the source in his Kenai repository.
    • Callout package is now a separate bundle but Hengsin wants to rewrite it when he can find time later.
    • The launching products are separated into 'adempiere-server' and 'adempiere-client'.
    • Buckminster, a Maven-like plugin in Eclipse is used to manage the import of plugins and builds.
    • The source is launchable from Eclipse for ZKAjax UI and SwingClient.**
    • More feedback on tests will be organised and reported in the Kenai project forum.

Preparing Your Eclipse IDE

ADempiere is now reduced to pure plugins - View of OSGI Project within Eclipse
  • You should use the latest Helios version with Equinox and Buckminster plugins udpated.

Getting the Kenai Project into your Eclipse

  • Firstly you should have got a HG Clone into your PC from the Mercurial repository.
  • In a fresh workspace of Eclipse, you create a new empty EquinoxTarget.platform (via Preferences>Plugin)
  • Then Import Projects > Select an import source from Buckminster > Materialize from Buckminster.
    • Browse for the URL under the plugin org.adempiere.sdk.feature selecting the adempiere.cquery.
    • Eclipse will import from the web all the needed plugins into the new target platform folder you created.

Launching from Eclipse

Launch scripts already prepared to appear in Eclipse project

We first setup the properties file one time. You can do the following by giving the values that you already have for your current ADempiere setup in the same machine. So it will reuse your DB.

  • Under the Run As Configurations you will see some launch items.
  • Select install.app (CLI) or install.console.app (GUI) to set the properties file. This is similar to RUN_setup in ADempiere speak.
  • Launch server.product (RUN_Server2.sh in ADempiere speak) to get the Web UI working.
    • You now can access the Web UI using, http://<localhost>:<port>/ without the /admin suffix.
  • Launch swingclient.product to get the JavaClient up and running.

Build and deploying binary

Buckminster way from now on. Use it to clean and build the project or any bundles. Notice the expanded SDK tree which is used earlier.

There are two binaries or 'products' created from this OSGI project. One is adempiere-server for launching the server-side Web UI service and adempiere-client for launching the Java Client.

Server Side

  • Go to the plugin (at your Eclipse Package Explorer) right click at org.adempiere.server-feature
  • Select Buckminster > Invoke Action
  • Select create.product
  • In the Properties file line, select workspace again the same i.e. org.adempiere.server-feature drill down to buckminster.properties (or any other depending on your OS) and you should end up with something like: /Users/red1/Documents/workspace/hengsin~development/org.adempiere.server-feature/buckminster.properties in the field. Give it an OK.
  • Press OK to the Buckminster action dialog box and this will take some minutes to compile
  • Find under your desktop a buckminster.output folder
    • Look for a particular folder that contains adempiere-server folder. (hint: org.adempiere.server_1.0.0-eclipse.feature).
    • Put that to your Applications-Home (server-side) location and continue in ADempiere speak.

Client Side

  • Go to the plugin (at your Eclipse Package Explorer) right click at org.adempiere.ui.swing-feature
  • Select Buckminster > Invoke Action
  • Select create.product
  • In the Properties file line, select workspace again the same i.e. org.adempiere.ui.swing-feature drill down to buckminster.properties (or any other depending on your OS) and you should end up with something like: /Users/red1/Documents/workspace/hengsin~development/org.adempiere.server-feature/buckminster.properties in the field. Give it an OK.
  • Press OK to the Buckminster action dialog box and this will take some minutes to compile
  • Find under your desktop a buckminster.output folder
    • Look for a particular folder that contains adempiere-client folder. (hint: org.adempiere.ui.swing_1.0.0-eclipse.feature).
    • Put that to your Applications-Home (client-side) location and continue in ADempiere speak.

Launching from Binary

OSGI console view. You can examine each bundle's status and control them individually

adempiere-server

  • You should have the following shell or batch executables in your adempiere-server (this is now your ADempiere_Home but server side).
    • setup.sh (previously RUN_setup.sh)
    • setup-alt.sh (this works better in my case)
    • adempiere-server.sh (RUN_server2.sh)
    • adempiere-client.sh (RUN_Adempiere.sh)
    • console-setup.sh
  • You may need to give chmod 777 to your HOME directory first
  • When you ./adempiere-server.sh you will get to run the Web UI as http://<localhost>:<port>/
  • If it does not run you can within the CLI Terminal window look for OSGI bundle status by keying in 'ss'.
    • Look for the bundle number of the org.adempiere.ui or ..zk bundles***.
    • Key in start <bundle no.> and try the Web UI again.

adempiere-client

  • You should have the adempiere.client.sh or .bat in your <ADempiere_Home/client side>
  • You just run this shell accordingly similar to the advice for server side.

Issues

  • As of today when launching adempiere-client binary i have all the adempiere bundles not resolved and when started will give such The bundle "org.adempiere.ui_1.0.0.v20101116-0531 [58]" could not be resolved. Reason: Missing Constraint: Bundle-RequiredExecutionEnvironment: JavaSE-1.6
    • There is documentation on this from the web and i will spend some time reading first. - Redhuan D. Oon 13:56, 17 November 2010 (UTC)
      • This is solved (for MacBook users) by going to your System Preferences > Java > and putting the 1.6 as top of list. So this is solved - Redhuan D. Oon 00:34, 20 November 2010 (UTC)

Latest Status - Kenai Revision: 6595

A better idea upfront - Redhuan D. Oon tuning in to the Architect, Low Heng Sin
  • This project is proven launchable from Eclipse and from binaries. (If it works on a not-so-Java-centric MacBook, it can work anywhere else).
  • ZK Ajax UI seems to work as far as any trashing i done so far - new windows, reports, views, accts, JSR223 Rules, etc.
  • Java Client works also as above just that the Accounts Viewer definitely get stuck but exitable. (will confirm from a Windows platform later).
    • Debugged this is probably caused by 'IncompatibleClassChangeError' on JTable. (in progress). - Redhuan D. Oon 02:56, 21 November 2010 (UTC)
    • Found out that this is due to bundle split of the org.compiere.report.core between BASE and UI.SWING bundles. Temporary refactoring workaround by moving the entire BASE.org.compiere.report.core to UI.SWING. Now the JTable works for Account Viewer. - Redhuan D. Oon 14:41, 21 November 2010 (UTC)
  • Log file or log tracing has an issue. It stops at the message 'Adempiere Log (CLogConsole)'.
    • False alarm. I traced it to find out that the Log file is written at /Users/red1/Log/<name of log file> as timestamped in *** 2010-12-02 20:38:10.527 Adempiere Log (CLogConsole) ***
    • However the checkbox to create TraceFile in Preferences has no effect. This is non critical issue. The Kenai project is thus regarded very testable - Redhuan D. Oon 12:55, 2 December 2010 (UTC)
  • I have to give a B+ for this project even though it is at alpha stage.

How Do You Score?

Tell me what marks you like to give onto Hengsin's OSGI work, and my documenting work here. I do not expect an A+ but who knows. :)

  • (sign here with marks for (HS OSGI project), marks for (RED1 Documentation))

FootNotes

*Execute this code in your DB to get the Workflow Editor view rightly positioned: UPDATE ADEMPIERE.AD_WF_Node SET xposition = 0, yposition = 0;
**Testing is done by basing on the DB of a working ADempiere 3.6.0LTS. So you should have that running in order to follow the actions here.
***There may be other non-started bundles you need to START:

  • org.adempiere.tomcat.config
  • org.eclipse.gemini.web.tomcat
  • org.adempiere.webstore

Note to MacBook users

  • Apple Mac OSX has an issue with launching X on 1st thread and this is solved by removing the -ws ${target.ws} argument in the launch script. (Hengsin)
  • When debugging from Eclipse, you may need to hack the Tomcat.server.xml to point to your port 8088, and https to 4443
    • Resolved in latest build. Tomcat's server.xml is properly set during install.app.