This connector exposes the content of a CMIS repository.
The Content Management Interoperability Services (CMIS) standard defines a domain model and Web Services, Restful AtomPub and browser (JSON) bindings that can be used by applications to work with one or more Content Management repositories/systems.
The CMIS connector is designed to be layered on top of existing Content Management systems. It is intended to use Apache Chemistry API to access services provided by Content Management system and incorporate those services into Modeshape content repository.
The connector class name is "org.modeshape.connector.cmis.CmisConnector", and there are several attributes that should be configured on each external source:
Attribute Name
|
Description
|
aclService
|
URL of the Access list service binding entry point. The ACL Services are used to discover and manage Access Control Lists.
|
discoveryService
|
URL of the Discovery service binding entry point. Discovery service executes a CMIS query statement against the contents of the repository.
|
multifilingService
|
URL of the Multi-filing service binding entry point. The Multi-filing Services are used to file/un-file objects into/from folders.
|
navigationService
|
URL of the Navigation service binding entry point. The Navigation service gets the list of child objects contained in the specified folder.
|
objectService
|
URL of the Object service binding entry point. Creates a document object of the specified type (given by the cmis:objectTypeId property) in the (optionally) specified location
|
policyService
|
URL of the Policy service binding entry point. Applies a specified policy to an object.
|
relationshipService
|
URL of the Relationship service binding entry point. Gets all or a subset of relationships associated with an independent object.
|
repositoryService
|
URL of the Repository service binding entry point. Returns a list of CMIS repositories available from this CMIS service endpoint.
|
versioningService
|
URL of the Policy service binding entry point. Create a private working copy (PWC) of the document.
|
readOnly
|
A boolean flag that specifies whether this source can create/modify/remove files and directories on the file system to reflect changes in the JCR content. By default, sources are not read-only.
|
cacheable
|
Optional property that if a node returned by this connector should be cached in the workspace cache or not. By default all nodes are cached, but you can set it to false for the connector to always read the latest version of the nodes
|
isQueryable
|
Optional property that specifies whether or not the content exposed by this connector should be indexed by the repository. This acts as a global flag, allowing a specific connector to mark it's entire content as non-queryable. By default, all content exposed by a connector is queryable.
|
Here is a sample configuration that projects the CMIS repository into the Modeshape repository under the "/cmis/" node
{
...
"externalSources" : {
"cmis" : {
"classname" : "org.modeshape.connector.CmisConnector",
"cacheTtlSeconds" : 5,
"aclService" : "http://localhost:8090/services/ACLService?wsdl",
"discoveryService" : "http://localhost:8090/services/DiscoveryService?wsdl",
"multifilingService" : "http://localhost:8090/services/MultifilingService?wsdl",
"navigationService" : "http://localhost:8090/services/NavigationService?wsdl",
"objectService" : "http://localhost:8090/services/ObjectService?wsdl",
"policyService" : "http://localhost:8090/services/PolicyService?wsdl",
"relationshipService" : "http://localhost:8090/services/RelationshipService?wsdl",
"repositoryService" : "http://localhost:8090/services/RepositoryService?wsdl",
"versioningService" : "http://localhost:8090/services/VersioniongService?wsdl",
"repositoryId" : "A1",
"projections" : [ "default:/cmis => /" ]
}
}
...
}
Here is the same configuration except that a variable is used so that the actual URLs can be set with a system property:
{
...
"externalSources" : {
"cmis" : {
"classname" : "org.modeshape.connector.CmisConnector",
"cacheTtlSeconds" : 5,
"aclService" : "${custom.cmis.services.url}/ACLService?wsdl",
"discoveryService" : "${custom.cmis.services.url}/DiscoveryService?wsdl",
"multifilingService" : "${custom.cmis.services.url}/MultifilingService?wsdl",
"navigationService" : "${custom.cmis.services.url}/NavigationService?wsdl",
"objectService" : "${custom.cmis.services.url}/ObjectService?wsdl",
"policyService" : "${custom.cmis.services.url}/PolicyService?wsdl",
"relationshipService" : "${custom.cmis.services.url}/RelationshipService?wsdl",
"repositoryService" : "${custom.cmis.services.url}/RepositoryService?wsdl",
"versioningService" : "${custom.cmis.services.url}/VersioniongService?wsdl",
"repositoryId" : "A1",
"projections" : [ "default:/cmis => /" ]
}
}
...
}
The Repository structure is defined as follows
Path
|
Description
|
/repository_info
|
The description of the CMIS repository
|
/filesAndFolders
|
The structure of the folders and files in the projected repository
|
Node types used by connectors are specified by JCR specifications or imported from CMIS repository itself. Most important node types are as follows:
Node Type
|
Description
|
nt:folder
|
The primary node type for the node representing CMIS folder
|
nt:file
|
The primary node type for the node representing CMIS document
|
nt:resource
|
The primary node type for the node representing binary content of the CMIS document
|
cmis:repository
|
The primary node type for the node representing information of CMIS repository itself
|