ProLinga-Repository Project

The ProLinga-Repository Project forms the foundation of the ProLinga Development and Run-Time tools. A native XML database, built on Berkeley DB XML, that holds ProLinga application definitions as XML documents which can be stored and managed using an API and send over the network using the ProLinga-Soap client library. Storing and managing of data is controlled by Repository Commands (RC) using the concept of request and response. An RC request is an XML document containing a command as a read or a write action. This request is presented to the repository engine for processing. After processing, the result will be placed in an RC response document and returned to the caller.

ProLinga-Repository contains a binary that can run as a Web Service (daemon) on the machine. The sophisticated prolinga-soap SOAP layer on top controls the flow and processing of incoming and outgoing requests/responses over the TCP/IP network. Using this concept, programs can run locally on a machine while accessing a remote repository centrally located in an intranet environment or anywhere in the world via the internet. ProLinga-Repository is the perfect base for platform independent multi-developer environments. Since all code is written in C++, it can be ported to all modern UNIX systems, GNU/Linux variants as well as MS-Windows and Mac O/S platforms. ProLinga-Repository is extremely fast and very reliable. It can hold up to 256 Terabytes of information with a maximum of 4 Gigabyte for a single XML document. XPath 1.0 queries can be executed for addressing parts of an XML document. Non-XML information can be stored as well, as long as it is has an XML envelope.

Main purpose for the creation of this project, is to provide an easy way to store XML application documents into a database. Although the current implementation is optimized for use in the ProLinga Environment, it can be used in other Non-ProLinga related projects as well. Some minor index changes may be needed.

ProLinga-Repository has been built and tested on various popular GNU/Linux platforms as RedHat Fedora, Mandriva Linux, Debian, openSUSE and Ubuntu. Since all code is written in C++, it can be ported to all modern UNIX systems, GNU/Linux variants as well as MS-Windows and Mac O/S platforms.

XML Documents

All data in the repository is stored as XML documents. These documents are placed in a container in the database that represents one or a collection of applications. Only 3 index fields are required for an XML document in the ProLinga environment:

  1. Application - The name of the application.
  2. Type - The type of the object. (Examples: Variable or Constant)
  3. Name - The name of the object.

The combination of these 3 index fields has to be unique. Note that these three index fields are based on requirements by the ProLinga Developer and Run-Time Tools. Different indexes can be defined, but that requires some program changes. Future releases will be more flexible.

The XML documents have the following format:

<Object Application="appn" Type="type" Name="name">
  <type>
    ....
    ....
  </type>
</Object>

Example:

<Object Application="MyOrder" Type="Constant" Name="Standard">
  <Constant>
     <Value>Standard</Value>
  </Constant>
</Object>

In the example above, the "Type" is both an attribute as an element. Using it this way has the advantage that a validation mechanism as XML schemas is much easier to implement.

The type of object is not a pre-defined value. New object types can be introduced all the time. No code changes are required for this, but if validation with XML Schemas is in place to check for valid object types, this XML schema need some modifications to allow for the new types. In the current release there is no internal XML Schema validation implemented yet, but future releases will have this.