1. 乙個會產生version的節點,它的node type 一定包含有 mix:versionable。在jackrabbit裡面,只有實現了mix:versionable的node 才可以做checkin/checkout的操作。
2. 要讓乙個node產生新的version, 你做的第一步應當是checkout, 然後修改其中的各個屬性,然後是checkin。 在jackrabbit的定義檔案裡面,乙個支援version的節點一定有乙個屬性叫做 jcr:ischeckout, 他的預設值是true
3. 我們都知道,node 在 jackrabbit是乙個樹形的結構,而node 的 version 和 node 的儲存方式有很大的不同。在jackrabbit裡面,每乙個支援version的 node 都有乙個 jcr:versionhistory 屬性。這個屬性值是乙個引用(reference), 它就指向存在於 version storage 裡面的 version history 節點。而version history 的儲存可以說是平面的,類似於key-value的儲存方式,key存在於node 上, 而value儲存於 version storage 裡面。
4. 以下是乙個version history的示意圖。
* jcr:rootversion
* | |
* 1.0 2.0
* |
* 1.1
* |
* 1.2 ---/ ------/
* | / /
* 1.3 1.2.0 1.2.0.0
* | |
* 1.4 1.2.1 ----/
* | | /
* 1.5 1.2.2 1.2.1.0
* | | |
* 1.6 | 1.2.1.1
* |-----/
* 1.7
讓人感覺意外的是如何會產生 1.2.0 或者是 1.2.0.0呢。如果不是特別明白,繼續往下看。
5. 如果乙個節點要恢復成以前的乙個版本會發生什麼情況呢。實際上這一點並不能,呼叫node.restore() 可以讓乙個版本恢復到指定的乙個版本。假定現在node有兩個版本如下:
* jcr:rootversion
* |
* 1.0
* |
* 1.1
這時,我將版本恢復到1.0,便會產生乙個新的版本號, 如下
* jcr:rootversion
* |
* 1.0
* |
* 1.1 ---/
* | /
* 1.2 1.1.0
是的,這樣子第4裡面的疑惑已經知道的差不多了,但是2.0是怎麼來的呢?
6. version 裡面還有個概念叫做 version label, 它是用來快速定位 乙個version history 裡面的 version 的。
你可以通過 vh.getversionbylabel(label) 快速拿到乙個version, 而不需要通過skip方法去拿。
7. 2.0是一種什麼情況呢。如果有兩個workspace, 會出現2.0的情況。 workspace的node version 不同步時,則可以通過 node.merge或是node.update來使得這兩個workspace裡面的node 一致。用 node.merge方法時,如果兩個workspace裡面的version的版本的branch已經不一樣時,目標workspace中的node會為另乙個workspace的node 建乙個新的branch, 這個branch就是 2.0
8. onparentversion 屬性, 待續
jackrabbit中Xpath的用法
root smiky 20boy 歐陽瘋24 girl root xpath的七種節點型別 元素,屬性,文字,文件節點 即根節點 命名空間,注釋,處理指令 節點關係 父 子 兄弟 先輩 後代 xpath常用符號 從根節點開始選 從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置 example...
Jackrabbit的簡單節點定義檔案格式
注 本篇文章需要jcr基礎知識和jackrabbit基礎知識 jackrabbit能夠讓開發者制定自己的節點型別,應用程式能夠在啟動的時候讀取節點型別定義檔案,載入節點定義.下面是乙個簡單的說明 說明 jackrabbit 節點型別定義說明 名域的宣告.下面宣告了乙個名域ns,值為 節點型別的名字,...
V2G通俗理解1
通俗地說,所謂v2g,就是車 vehicle 與電網 grid 以多種形式增強了互動,從而實現了對雙方都好的 更加歡愉的狀態。本文寫作語言較為隨意,以科普為主。行文中若有原則性謬誤之處,請不吝賜教。從乙個親身經歷的小故事講起 本人是搞電動汽車的,直到研究生階段還對電網沒有深入研究。有一次做制動回饋研...