mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Moved repository master into its own directory
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
# Node Storage and Retrieval
|
||||
|
||||
## Properties
|
||||
|
||||
### Encrypted properties (```d:encrypted```)
|
||||
Encrypted properties are stored as BLOBs in the database, but there is no additional handling for
|
||||
them. In particular, the ```NodeService``` does not encrypt or decrypt them. It only guarantees
|
||||
that properties of this type contain objects of type ```javax.crypto.SealedObject```. It is up to
|
||||
the implementor of a custom extension to handle encryption.
|
||||
The ACS provides the helper class ```MetadataEncryptor``` which provides key handling and a one-stop-shop
|
||||
for encryption. But custom implementations do not need to use it.
|
118
repository/docs/meta-data-services/versions/README.md
Normal file
118
repository/docs/meta-data-services/versions/README.md
Normal file
@@ -0,0 +1,118 @@
|
||||
|
||||
## Versions
|
||||
|
||||

|
||||
|
||||
### Purpose
|
||||
|
||||
***
|
||||
|
||||
### Overview
|
||||
|
||||
***
|
||||
|
||||
### Artifacts and Guidance
|
||||
|
||||
* Source Code Link:m https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/
|
||||
* License: LGPL
|
||||
* Issue Tracker Link: https://issues.alfresco.com/jira/secure/RapidBoard.jspa?projectKey=REPO&useStoredSettings=true&rapidView=379
|
||||
* Documentation Link: http://docs.alfresco.com/5.1/concepts/versioning.html
|
||||
* Contribution Model: Alfresco publishes the source code and will review proposed patch requests
|
||||
***
|
||||
|
||||
|
||||
### Prerequisite Knowledge
|
||||
|
||||
***
|
||||
|
||||
### Design
|
||||
|
||||
#### Component Model
|
||||
|
||||
#### Data Model
|
||||
|
||||
#### Data Dictionary
|
||||
|
||||
#### Flows
|
||||
|
||||
This is a series of flows illustrating when versions are created, based on changes to content and metadata.
|
||||
|
||||
##### No Autoversion on Property Updates
|
||||
Suppose the defaults in the _cm:versionable_ aspect are set as follows:
|
||||
```
|
||||
version.store.enableAutoVersioning=true
|
||||
version.store.enableAutoVersionOnUpdateProps=false
|
||||
```
|
||||
Note this is the default case when Alfresco is installed.
|
||||
|
||||

|
||||
|
||||
|
||||
##### Autoversion on Property Updates
|
||||
Suppose the defaults in the _cm:versionable_ aspect are set as follows:
|
||||
```
|
||||
version.store.enableAutoVersioning=true
|
||||
version.store.enableAutoVersionOnUpdateProps=true
|
||||
```
|
||||

|
||||
|
||||
|
||||
#### Class Diagram
|
||||
|
||||
***
|
||||
|
||||
### APIs and Interfaces
|
||||
|
||||
***
|
||||
|
||||
### Configuration
|
||||
|
||||
#### What is Versioned
|
||||
Whether an object is versionable at all is governed by the presence of the _cm:versionable_ aspect.
|
||||
If the aspect is present, the object is versioned. Otherwise it is not versioned.
|
||||
|
||||
#### Autoversioning
|
||||
|
||||
Sometimes it is desirable to create a version automatically. Whether this happens is controlled by two variables in the _cm:versionable_ aspect:
|
||||
|
||||
* cm:autoVersion
|
||||
* cm:autoVersionOnUpdateProps
|
||||
|
||||
|
||||
When _cm:autoVersion_ is true, a new version is created when the _cm:content_ of a content node changes.
|
||||
When _cm:autoVersionOnUpdateProps_ is true, a new version is created when any of the properties of a content node change.
|
||||
|
||||
The defaults for these properties are set in the contentModel.xml file in the usual way. But to simplify the admin experience, the values of these properties can also set using global properties:
|
||||
|
||||
* version.store.enableAutoVersioning
|
||||
* version.store.enableAutoVersionOnUpdateProps
|
||||
|
||||
If the values are found in the properties file they have the effect of overriding what may have been set in the contenModel.xml file.
|
||||
|
||||
The effect of these properties can be overridden by Share using a set of two properties:
|
||||
|
||||
* autoVersion
|
||||
* autoVersionProps
|
||||
|
||||
The values of these overrides are contained in the file _upload.post.config.xml_ such as in this example
|
||||
```
|
||||
<autoVersion>true</autoVersion>
|
||||
<autoVersionProps>false</autoVersionProps>
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
### Performance Considerations
|
||||
***
|
||||
|
||||
### Security Considerations
|
||||
***
|
||||
|
||||
### Cloud Considerations
|
||||
None
|
||||
|
||||
***
|
||||
|
||||
### Design Decisions
|
||||
|
||||
***
|
Binary file not shown.
After Width: | Height: | Size: 94 KiB |
@@ -0,0 +1,107 @@
|
||||
@startuml
|
||||
|
||||
Title: Autoversion on Property Update - Versioning Flow
|
||||
|
||||
participant "CMIS Client" as C
|
||||
participant "Repository" as R
|
||||
participant "Version Service" as V
|
||||
participant "workspace://SpacesStore" as SS
|
||||
participant "workspace://version2Store" as VS
|
||||
participant "File System" as FS
|
||||
database "Database" as DB
|
||||
|
||||
C->R:HTTP POST
|
||||
activate R
|
||||
group "transaction"
|
||||
R->V
|
||||
activate V
|
||||
|
||||
V->SS: create node
|
||||
activate SS
|
||||
SS->DB: create node
|
||||
activate DB
|
||||
DB->SS: OK
|
||||
deactivate DB
|
||||
SS->V: OK
|
||||
deactivate SS
|
||||
note right of SS
|
||||
workspace://SpacesStore/6060b6b6-2928-4092-ab66-659a7e68c0f6
|
||||
cm:autoVersionOnUpdateProps=true
|
||||
cm:name=foo.txt
|
||||
cm:versionLabel=1.0
|
||||
end note
|
||||
V->VS: create version history node with one child node
|
||||
activate VS
|
||||
VS->DB: create nodes
|
||||
activate DB
|
||||
DB->VS: OK
|
||||
deactivate DB
|
||||
VS->V: OK
|
||||
deactivate VS
|
||||
note right of VS
|
||||
One Version History Node with one child ...
|
||||
|
||||
workspace://version2Store/62de48fa-6adc-4228-8667-df62584f98de
|
||||
cm:autoVersionOnUpdateProps=true
|
||||
cm:name=foo.txt
|
||||
cm:versionLabel=null
|
||||
ver2:versionLabel=1.0
|
||||
ver2:versionDescription=Initial Version
|
||||
|
||||
end note
|
||||
end
|
||||
V->R: OK
|
||||
deactivate V
|
||||
R->C: 200 OK
|
||||
deactivate R
|
||||
|
||||
C->R:HTTP PUT (cm:name=bar.txt)
|
||||
activate R
|
||||
group "transaction"
|
||||
R->V
|
||||
V->SS: update node
|
||||
activate V
|
||||
activate SS
|
||||
SS->DB: update node
|
||||
activate DB
|
||||
DB->SS: OK
|
||||
deactivate DB
|
||||
SS->V: OK
|
||||
deactivate SS
|
||||
note right of SS
|
||||
workspace://SpacesStore/6060b6b6-2928-4092-ab66-659a7e68c0f6
|
||||
cm:autoVersionOnUpdateProps=true
|
||||
cm:name=bar.txt
|
||||
cm:versionLabel=1.1
|
||||
end note
|
||||
|
||||
V->VS: create a new child of the version history node
|
||||
activate VS
|
||||
VS->DB: create node
|
||||
activate DB
|
||||
DB->VS: OK
|
||||
deactivate DB
|
||||
VS->V: OK
|
||||
deactivate VS
|
||||
note right of VS
|
||||
One Version History Node with two children...
|
||||
|
||||
workspace://version2Store/62de48fa-6adc-4228-8667-df62584f98de
|
||||
cm:autoVersionOnUpdateProps=true
|
||||
cm:name=foo.txt
|
||||
cm:versionLabel=null
|
||||
ver2:versionLabel=1.0
|
||||
ver2:versionDescription=Initial Version
|
||||
|
||||
NEW CHILD:
|
||||
workspace://version2Store/64d5fd85-40d3-4a44-b644-d871cb3a1030
|
||||
cm:autoVersionOnUpdateProps=true
|
||||
cm:name=bar.txt
|
||||
cm:versionLabel=1.0
|
||||
ver2:versionLabel=1.1
|
||||
ver2:versionDescription=Update Name
|
||||
|
||||
end note
|
||||
|
||||
end
|
||||
@enduml
|
Binary file not shown.
After Width: | Height: | Size: 124 KiB |
@@ -0,0 +1,144 @@
|
||||
@startuml
|
||||
|
||||
Title: Autoversion on Content Update - Versioning Flow
|
||||
|
||||
participant "CMIS Client" as C
|
||||
participant "Repository" as R
|
||||
participant "Version Service" as V
|
||||
participant "workspace://SpacesStore" as SS
|
||||
participant "workspace://version2Store" as VS
|
||||
participant "File System" as FS
|
||||
database "Database" as DB
|
||||
|
||||
C->R:HTTP POST
|
||||
activate R
|
||||
group "transaction"
|
||||
R->V
|
||||
activate V
|
||||
|
||||
V->SS: create node
|
||||
activate SS
|
||||
SS->DB: create node
|
||||
activate DB
|
||||
DB->SS: OK
|
||||
deactivate DB
|
||||
SS->V: OK
|
||||
deactivate SS
|
||||
note right of SS
|
||||
workspace://SpacesStore/e8cc2b68-7482-4304-a93e-02c758a80954
|
||||
cm:autoVersionOnUpdateProps=false
|
||||
cm:name=foo.txt
|
||||
cm:versionLabel=1.0
|
||||
end note
|
||||
V->VS: create version history node with one child node
|
||||
activate VS
|
||||
VS->DB: create nodes
|
||||
activate DB
|
||||
DB->VS: OK
|
||||
deactivate DB
|
||||
VS->V: OK
|
||||
deactivate VS
|
||||
note right of VS
|
||||
One Version History Node with one child ...
|
||||
|
||||
workspace://version2Store/ce68aba3-73f6-44f9-ad9b-a9e8d77212de
|
||||
cm:autoVersionOnUpdateProps=false
|
||||
cm:name=foo.txt
|
||||
cm:versionLabel=null
|
||||
ver2:versionLabel=1.0
|
||||
ver2:versionDescription=Initial Version
|
||||
|
||||
end note
|
||||
end
|
||||
V->R: OK
|
||||
deactivate V
|
||||
R->C: 200 OK
|
||||
deactivate R
|
||||
|
||||
C->R:HTTP PUT (cm:name=bar.txt)
|
||||
activate R
|
||||
group "transaction"
|
||||
R->V
|
||||
V->SS: update node
|
||||
activate V
|
||||
activate SS
|
||||
SS->DB: update node
|
||||
activate DB
|
||||
DB->SS: OK
|
||||
deactivate DB
|
||||
SS->V: OK
|
||||
deactivate SS
|
||||
note right of SS
|
||||
workspace://SpacesStore/e8cc2b68-7482-4304-a93e-02c758a80954
|
||||
cm:autoVersionOnUpdateProps=false
|
||||
cm:name=bar.txt
|
||||
cm:versionLabel=1.0
|
||||
end note
|
||||
|
||||
note right of VS
|
||||
One Version History Node with one child...
|
||||
|
||||
workspace://version2Store/ce68aba3-73f6-44f9-ad9b-a9e8d77212de
|
||||
cm:autoVersionOnUpdateProps=false
|
||||
cm:name=foo.txt
|
||||
cm:versionLabel=null
|
||||
ver2:versionLabel=1.0
|
||||
ver2:versionDescription=Initial Version
|
||||
|
||||
end note
|
||||
|
||||
end
|
||||
|
||||
C->R:HTTP PUT (new file content)
|
||||
activate R
|
||||
group "transaction"
|
||||
R->V
|
||||
activate V
|
||||
V->SS: update node
|
||||
activate SS
|
||||
SS->FS: write file content
|
||||
activate FS
|
||||
FS->SS: OK
|
||||
deactivate FS
|
||||
SS->DB: update node to point to new file content
|
||||
activate DB
|
||||
DB->SS: OK
|
||||
deactivate DB
|
||||
SS->V: OK
|
||||
deactivate SS
|
||||
note right of SS
|
||||
workspace://SpacesStore/e8cc2b68-7482-4304-a93e-02c758a80954
|
||||
cm:autoVersionOnUpdateProps=false
|
||||
cm:name=bar.txt
|
||||
cm:versionLabel=1.0
|
||||
end note
|
||||
V->VS: create a new child of the version history node
|
||||
activate VS
|
||||
VS->DB: create node
|
||||
activate DB
|
||||
DB->VS: OK
|
||||
deactivate DB
|
||||
VS->V: OK
|
||||
deactivate VS
|
||||
note right of VS
|
||||
One Version History Node with two children...
|
||||
|
||||
workspace://version2Store/ce68aba3-73f6-44f9-ad9b-a9e8d77212de
|
||||
cm:autoVersionOnUpdateProps=false
|
||||
cm:name=foo.txt
|
||||
cm:versionLabel=null
|
||||
ver2:versionLabel=1.0
|
||||
ver2:versionDescription=Initial Version
|
||||
|
||||
NEW CHILD:
|
||||
workspace://version2Store/9fb3fb08-7cfb-4c0a-ac72-233aaf60fa1e
|
||||
cm:autoVersionOnUpdateProps=false
|
||||
cm:name=bar.txt
|
||||
cm:versionLabel=1.0
|
||||
ver2:versionLabel=1.1
|
||||
ver2:versionDescription=Update New File Content
|
||||
|
||||
end note
|
||||
end
|
||||
|
||||
@enduml
|
Reference in New Issue
Block a user