DocuShare
A content management system developed by Xerox Corporation. Simflofy supports connection to DocuShare versions 7.0 and newer.
Connecting to DocuShare
When setting up DocuShare, make sure you open all the rmi access ports for the DocuShare server. RMI will establish communication via the server port configured (defaults to 1099), however continued transmission takes place on random high number ports.
Connection Issues
If you suspect a firewall is causing connection issues, open all ports and use ip restrictions to the Simflofy server in order to restrict unwanted access.
Encrypted Content
If you are using encryption on content in your environment you will need to add the cryptoContent.jar from your DocuShare class path to Simflofy's classpath.
Access and Permissions
When accessing content with a system user, the user assigned should be a Content Administrator. This will ensure you have the appropriate access to read all content and all collections. You can add your system user to the Content Administrators group to give them the appropriate level of access.
Other Resources for Developers
Download API documentation and other developer resources by signing up here: Xerox Docushare
Authentication Connection
Used to authenticate repository/output connections that need certain authentication fields like access tokens or refresh tokens. Click here for more information on setting up Authentication Connections.
Authentication Connection Fields
- Name: This is a unique name given to the connector instance upon creation.
- Username: The username of a user with privileges to access targeted content
- Password: The user's password.
- Server URL: The host url without protocol. (RMI is used, no protocol is necessary)
- Server Port: The port to use when establishing an RMI connection with DocuShare. Defaults to 1099. The port used to establish the initial communication to DocuShare may not be the same port used to execute requests.
- Domain: The domain for the target directories. Out-of-the-box this is set to DocuShare
Discovery Connector
Discovery is the 2nd step in the integration process. Create an instance, select a connector and a schema will be produced based on the connector's configuration. Includes a list of all object types as well as attributes stored in each. This function discovers schemas on the remote system. These are tables, columns, object types, aspects, categories, content types, index fields, etc... More info
Discovery Instance Configuration Fields
- Name: Unique name for your connector
- Authentication Connection: Select the auth connector for this discovery
- Ignore Types (comma delimited list): Chose document types to ignore when running discovery
Integration Connection
The DocuShare Integration Connection must include a DocuShare Authentication Connector in order to connect. Once added to a job, you will be able to configure the location of your DocuShare data in the Job Specification. Click here for more information on setting up Integration Connections.
DocuShare Integration Connection Fields
- Connection Name: This is a unique name given to the connector instance upon creation.
- Description: A description of the connector to help identify it better.
- Connector Class: The class of this connector that implements the connector interface. The connector class helps identify the current connector.
- Authentication Connection: The Authentication connection that you want to use.
Job Configuration
DocuShare Object Selection Job Configuration
- DocuShare Query: (Optional) - Text that will be used as part of a search against the docuShare repo. When used, folder crawling does not take place.
- Root Folders: A comma delimited list of directories to crawl.
- Workspaces: A comma delimited list of workspaces to crawl.
- Crawl User Personal Collections? When checked, Simflofy will crawl all directories in user personal collections.
- Process Collections? A collections (folders) to the document queue for processing.
- Include Message Attachments?
- The rate in MBs to read DocuShare binaries: (0 to read the file all at once)
Content Service Connector
- Retrieving Object Permissions
- Setting Object Permissions
- Deleting Object Permissions
Retrieving Object Permissions
Retrieving ACLs follows the standard format. You will need to send Simflofy
the Document id for the target document or collection. The document id is the
.getHandle().toLongString()
. This means the id includes a reference to the
host location: Document-54:ec2-34-228-158-26.compute-1.amazonaws.com
Example:
CURL
curl -X GET -u admin:admin 'http://localhost:8081/simflofy-
admin/repo/ds/acls?id=Document-54:ec2-34-228-158-26.compute-1.amazonaws.com'
Output
{
"results": [
"test[User-11:ec2-34-228-158-26.compute-1.amazonaws.com]:manage,write_object,read_object,read_linked,write_linked,read_history,search",
"admin[User-2:ec2-34-228-158-26.compute-1.amazonaws.com]:manage,write_object,read_object,read_linked,write_linked,read_history,search",
"Content Administrators[Group-2:ec2-34-228-158-26.compute-1.amazonaws.com]:manage,write_object,read_object,read_linked,write_linked,read_history,search"
],
"success": "true"
}
The returned result is in the formation of "userName[user- handle]:permission1,permission2...". The user handle is the user's ID for DocuShare and can be used to update permissions.
Setting Object Permissions
When updating permissions of an object you will need to send an encoded JSON string as the acls argument that includes the handle (id) of the authority you want to change.
Permission Options
- all
- read_all
- write_all
- manage
- write_object
- write_linked
- read_object
- read_linked
- read_history
- search
Example:
Update a single user's permissions
{"User-11:ec2-34-228-158-26.compute-1.amazonaws.com":"read_object,read_linked,read_history,search"}
Update a group's permissions
{"Group-7:ec2-34-228-158-26.compute-1.amazonaws.com":"read_all"}
CURL
curl -u admin:admin -X POST 'http://localhost:8081/simflofy-
admin/repo/ds/acls?id=Document-54:ec2-34-228-158-26.compute-1.amazonaws.com&acls=%7B%22User-11%3Aec2-34-228-158-26.compute-1.amazonaws.com%22%3A%22manage%2Cwrite_object%2Cread_object%2Cread_linked%2Cwrite_linked%2Cread_history%2Csearch%22%7D'
Output:
{
"results": [
"test[User-11:ec2-34-228-158-26.compute-1.amazonaws.com]:manage,write_object,read_object,read_linked,write_linked,read_history,search",
"admin[User-2:ec2-34-228-158-26.compute-1.amazonaws.com]:manage,write_object,read_object,read_linked,write_linked,read_history,search",
"Content Administrators[Group-2:ec2-34-228-158-26.compute-1.amazonaws.com]:manage,write_object,read_object,read_linked,write_linked,read_history,search"
],
"success": "true"
}
Error Output:
{
"message": "Exception while setting access controls for id Document-54:ec2-34-228-158-26.compute-1.amazonaws.com and connector with id ds",
"error": "In three-bit permission mode, all of the read bits must be the same value as each other and all of the write bits must be the same value as each other",
"success": false
}
In the above error, you are attempting to use an illegal combination of permissions.
{
"message": "Exception while setting access controls for id Document-54:ec2-34-228-158-26.compute-1.amazonaws.com and connector with id ds",
"error": "Could not find connection with id ds",
"success": false
}
In the above error, we used a connector ID that does not exist in Simflofy.
Deleting Object Permissions
When deleting permissions of an object you will need to send an encoded comma separated string as the aclsid argument. This will be a list of principal handles to be deleted.
Example: Delete a single principal Group-6:msedgewin10.local
CURL
curl -u admin:admin -X POST 'http://localhost:8081/simflofy-
admin/repo/ds/acls?id=Document-54:ec2-34-228-158-26.compute-1.amazonaws.com&aclId=Group-6%3Amsedgewin10.local
Output
{
"success": true,
"results": "Group-6:msedgewin10.local"
}
Error (invalid principal)
{
"message": "Error while deleting access controls [id:Document-141] [permissions:1Group-6:msedgewin10.local] for connection docushare-test Error: modifyAclEntries; nested exception is: \n\tcom.xerox.docushare.db.DatabaseException: This class does not exist: 1Group",
"error": "modifyAclEntries; nested exception is: \n\tcom.xerox.docushare.db.DatabaseException: This class does not exist: 1Group",
"success": "false"
}
Supported Methods
The methods currently supported for this connector are:
Create Folder
Get Object by path
Update Properties
Get File Content
Get Object Properties
Delete Folder
Get Root Folder ID
List Folder Items
Delete Object by ID
Get Types
Get Type Definition
Get File Item
Get ACLs
Set ACLs
Delete ACL
Delete Version
Get Version Properties
Get Version Content
List Versions
Revert Version (makes the version the preferred version)
Check In (unlocks the file, does not create a new version)
Check Out (locks the file)
Need help integrating Docushare? Learn more here.