Skip to content
bruno.buzzi edited this page Jul 23, 2016 · 63 revisions

This wiki is deprecated (not removed for historical reasons).
Go to the new official documentation site:
Persistence Layer Documentation



Orbeon Persistence Layer is an implementation of REST Services on the top of GemStone/S (www.gemtalksystems.com) to store Orbeon Forms (www.orbeon.com) natively in GemStone/S Object Database (NON SQL).

The Documentation in this Wiki is about the REST Services implmenentation in GemStone/S and is NOT an official documentation of Orbeon Persistence Layer. The official Documentation of Orbeon Persistence Layer can be found here.

The following diagrams are just to get a general idea how to implement an Orbeon Persistence Layer. There are NOT detailed implementation diagrams. The purpose is to list the services that Orbeon call for each functionallity not to show the internals of the GemStone/S implmentation (for this you can download the code) :)

The following Diagrams are grouped by Orbeon functionality.
Service Diagrams

The following link show all services that MUST be implemented for a complete Orbeon Persistence Layer. You will notice that various services can be implemented as one because of it's service path. But at implementation level we choose to split them by funcionality not by path.
Service Methods

Persistence Layer Configuration Options
There are a lof of options that can be configured in this persistence layer such as: deferred processing, path for attachments, search type and audit options.
Options Description here

Performance and Architecture
(coming soon)

Install GemStone/S
[GemStone/S installation instructions here] (https://github.com/dalehenrich/gsDevKitHome)

Install Orbeon Persistence Layer for GemStone/S
[See the video library here] (https://github.com/brunobuzzi/OrbeonPersistenceLayer/wiki/Persistence-Layer-Video-Library)
The packages are going to be availabe here on Github (coming soon) as a regular Git project and in Squeak Source repository (http://ss3.gemtalksystems.com/ss/OrbeonBridge/) as Monticello packages.

Install using Git repository (coming soon)

Install using Squeak Source repository
Execute the following code inside GemStone/S in order.
Upgrade Grease framework to the last version:

"Upgrading to the last version of <GsUpgrader-Core>"
Gofer new
  package: 'GsUpgrader-Core';
  url: 'http://ss3.gemtalksystems.com/ss/gsUpgrader';
  load.
(Smalltalk at: #GsUpgrader) upgradeGrease.

Install Seaside Web and Rest Server:

"Installing SEASIDE 3.1 (the REST and Web server)"
GsDeployer deploy: [
  Metacello new
    baseline: 'Seaside3';
    repository: 'github://GsDevKit/Seaside31:gs_master/repository';
    onLock: [:ex | ex honor];
    load: 'CI' ].

Install the Persistence Layer for GemStone/S:

"Installing the Orbeon Persistence Layer"
Gofer new
    url: 'http://ss3.gemtalksystems.com/ss/OrbeonBridge';
    package: 'ConfigurationOfOrbeonPersistenceAPI';
    load.
((Smalltalk at: #ConfigurationOfOrbeonPersistenceAPI) project version: '0.100') load.
WAAdmin register: WAOrbeonPersistenceLayer at: 'orbeon-gemstone-api'.
OrbeonApplication initializeAllCache.

By default the attachment path is '/opt/orbeon-files/' in this directory execute:
sudo mkdir temp
sudo mkdir drafts
sudo mkdir instances
sudo mkdir definitions
cd definitions/
sudo mkdir saved
sudo mkdir published
To change the default attachment path evaluate:

OrbeonApiConfiguration default baseAttachmentPath: 'myPathHere'

You have to create the subdirectories as above.
In Orbeon in properties-local.xml file add:
(change the ip address of [oxf.fr.persistence.gemstone.uri] to suit your needs)

<property as="xs:string" name="oxf.fr.persistence.provider.*.*.*" value="gemstone"/>
<property as="xs:anyURI" name="oxf.fr.persistence.gemstone.uri" value="http://192.168.29.133:8888/orbeon-gemstone-api"/>
<property as="xs:boolean" name="oxf.fr.persistence.gemstone.versioning" value="true"/>
<property as="xs:boolean" name="oxf.fr.persistence.gemstone.permissions" value="true"/>
<property as="xs:boolean" name="oxf.fr.persistence.gemstone.autosave" value="true"/> 

In a GemStone/S session evaluate the following to register the services and start the REST server:

"Register the services -this is execute only one time-"
WAAdmin register: WAOrbeonPersistenceLayer at: 'orbeon-gemstone-api'.
"Start the Zinc server to start the REST services"
"When shutdown/restart the server/application must be executed again"
[WAGsZincAdaptor startOn: 8888]
  on: AlmostOutOfMemory enable
  do: [:ex | ex error: ex description]. 

If you have any question about Orbeon:
http://discuss.orbeon.com/
If you have any question about GemStone/S:
http://forum.world.st/GLASS-f1460844.html