Menu

DocumentManagement

Adam Tauno Williams

[Development]

Document Management

Documents exist in [Projects]. Each project has a "storage backend" that implements how it stores the BLOBs that are the document contents.

Theoretically backends for storing documents are modular and additional document management backends are possible However only one document storage backend has even been implemented, the [DBFS1] backend.

OpenGroupware Legacy also provides an "SkyFS" (FileSystem) backend that lacked version control and permissions management - as it mapped directly 1:1 to the underlying filesystem at the specified path. OpenGroupware Coils does not support SkyFS at this time. Integrating any given underlying filesystem into the object model and allowing managed access control is nearly impossible - if you want a straight-up file share [known in groupware speak as a "garbage dump"] you should simply use a file server.

Although there is only one storage backend all code still assumes there are multiple possible backends. So from a [Project] entity the URL attribute is used to marshall a manager object using the blob_manager_for_ds method from coils.foundation.

blob_manager_for_ds(sky_url, project_id=None)

This will return a manager object that can be used to return the paths to the specified documents. The prefix of the project's URL determines the type of manager.

URL Manager Type
NULL DBFS1Manager
skyrix:// DBFS1Manager
file:// SKyFSManager (not implemented)
... ...

A manager class implements two functions:

get_path(self, document, version=None)
    ....

def create_path(self, document, version)
    ...

The get_path method returns a path to a file that can be passed to the appropriate method of the [BLOBManager].

The create_path method returns a tuple of folder path and file name where the resource should be created.

Storage Backends

DBFS1

The DBFS1 is a fully functioning versioning backends that offers complete integration with OpenGrouwpare object model and access control. This is the default project storage backend.

This backend has a skyrix:// URL and in OpenGrouwpare Legacy was sometimes referred to as the Skyrix backend.

SkyFS

Not Implemented

Note that OpenGroupware Legacy code base easily predates the various other companies and products that use the "SkyFS" monitor - we had it first, the Legacy code base days back to the days of NextSTEP and as Open Source the commit log is public record.


Related

Wiki: BLOBManager
Wiki: Development
Wiki: Projects

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.