The distant request systems

VDoc provides a system of distant services enabling data exchange with external applications.
It can read VDoc elements but also create or modify it. Everything is done under VDoc security control.

Technologies

VDoc web services perform data exchange based on a simple HTTP layer.
You can use either XML or JSON format.

The syntax used in these flows will have to meet a standard defined by VDoc.

Securing data flows

Securing data flows is possible at two levels:

  • By the authentication flow and the principle of "token" that follow different data flows.
  • By restricting the access by setting up an allowed IP range.
    The configuration key is: com.axemble.security.ExternalAuthenticationAction.allowedAddresses
    Warning:

    This key is assigned to 127.0.0.1 by default on VDoc instances, which means that only local access is possible.

    A simple setting in the CustomResources.properties file will allow you to customize that configuration.

APIs Client (Object)

Distant request is a first step for us in the inter-connectivity between VDoc and outside.
The second step is to provide APIs client in the most used languages. Obviously, this APIs will call flows and convert them into objects.

This project is still ongoing at VDoc.

Here's the progress

Language Application Mobile application Progress state
Objective-C iMac IPhone or IPad Available in version 12 (reading function)
Java Java Android or BlackBerry Available in version 12 (reading function)
.Net .Net Windows Mobile In progress

Technical overview of flows

Classification of flows by modules

The flows are classified by "modules", it is simply a thematic gathering of flows.

For instance, flows linked to process's will be in the Workflow module.

The way the flows are called

We will always call the same VDoc Controller to execute our flows (the servlet principle) and it will be possible to specify options.

Details of options:

Parameter Description
module Specifies the module that owns our flows.
cmd Specifies the flow that will be used.
killsession Kills SDK sessions created by the user (default: false if omitted).
flowmode Format to be used: [xml, json, jsonformatted] (default: XML if omitted)
_AuthenticationKey Specifies the token that has been issued to us (VDoc secured session)
Here's an example of URL call:

http://myvdocserver/vdoc/navigation/flow?module=workflow&cmd=create&_AuthenticationKey=...&killsession=false

Notice: Since flowmode isn't specified, the XML format will be used.

Special way to call data flows in 2010 SP3

The flows presented here are also available in the "2010 SP3" release, however they are called in a different way.

First authentication call

http://myvdocserver/vdoc/navigation/sdk?Controller=com.axemble.vdoc.sdk.flow.Dispatcher&module=portal&cmd=authenticate
Following call

http://myvdocserver/vdoc/navigation/sdk?Controller=com.axemble.vdoc.sdk.flow.Dispatcher&module=workflow&cmd=view&_AuthenticationKey=...

XML/JSON envelopes

In the above example, the URL will send (in "POST") a flow characterizing our request, to which VDoc will respond with another flow in response to the request.

Prerequisites for the use of these remote flows

Any instance VDoc (2010 SP3 version, 2011 version and higher) can use these flows as shown here.  For previous versions, please refer to flows presented in the SDK documentation.

The only requirement to be able to handle authentication is to activate the "Login Module" "com.axemble.security.loginmodules.ExternalAuthenticationLoginModule"; This login module is already set in the default JAAS config but commented.

Flow modules

Note:

In the context of this flows presentation, the examples will be in XML because it is much easier for human to read. However, the logic of JSON syntax is quite identical.
For information about how streams can be adapted to JSON format, see ...

Informations

The flows are led to manipulate different types of VDOC data. Here's an article that will detail the syntax of these different types. ...

General module : Portal

Flow command
Flow command Description
authenticate This flow will be the first flow to be tested and used in your developments. It will allow you to authenticate with a login and password and return a token key that will be used for all subsequent flows.

Upload and Download module : IO

A global module

It should be understood that the "io" module is very versatile.
It allows us to manipulate the files of all other modules: workflow, data universe, library, ...

GUID principle

GUID is an acronym for 'Globally Unique Identifier', it's a unique reference number used as an identifier in computer software.

Here's the principe:

  • When you want to download a file, you first prepare the file by booking a GUID that will be returned by the flow.
    From there, the GUID allows you to download the file at any time, it has been reserved for you.
  • When you want to upload a file, we store it in a "temporary" state and we return you a GUID.
    You can use this GUID to attach your file to a VDOC document (a "FileCenter" document for example).

Workflow module : Workflow

Flow command
Flow command Description
view This flow allows to browse the Workflow objects. The objects could be both definition objects (administrative objects) and dynamic objects (documents).
get This flow retrieves detailed informations on a particular object.
create This flow creates a new Workflow document.
update This flow updates a Workflow document.
delete This flow deletes a Workflow document.
cmd This flow allows to execute specific commands that are available in the old remote SDK flows : ASSIGNED_TASKS, DELAYED_TASKS, CATALOGS, WORKFLOW_CONTAINERS, WORKFLOWS. These flows are not yet deprecated but they will disappear because they do not fall within the new organizational logic of flows.

Data stockroom module : Workflow

Note:
We also use the workflow module here.
We keep the same logic as in the pure development: given the similarities between the processes and data stockroom, the same module is used.
Flow command
Flow command Description
view This flow allows to browse the data stockroom objects. The objects could be both definition objects (administrative objects) and dynamic objects (documents).
get This flow retrieves detailed informations on a particular object
create This flow creates a new record.
update This flow updates a record.
delete This flow deletes a record.

Document spaces module : Library

Flow command
Flow command Description
view This flow allows to browse the document space : folders, categories, documents. The objects could be both definition objects (administrative objects) and dynamic objects (documents).
get This flow will allow to retrieve detailed information on a VDoc object by using a URI protocol.
create This flow creates a new item in the document space: documents, folders.
update This flow updates an existing item in the document space: documents, folders.
delete This flow removes an existing item in the document space: documents, folders.
move This flow moves an item to an another folder.
checkout This flow locks a document.
undocheckout This flow aborts a lock on a document.
checkin This flow unlocks a document.

Directory module : Directory

Flow command
Flow command Description
view This flow allows to browse the VDoc directory such as organizations, localizations, groups and users. The browsing is done by tree structure, thanks to structuring objects that are organization, localizations and groups.
get This flow allows to retrieve object informations from the element ID (the URI protocol)
create This flow creates new item in VDoc directory.
update This flow updates an existing item in VDoc directory.
delete This flow deletes an item in VDoc directory.
enable This flow enables an item VDoc directory.
disable This flow disables an item VDoc directory.