有人可以發佈創建新文檔所需的OpenCMIS代碼,然後通過更新其內容流來更新該文檔嗎?我不想丟失原始文檔 - 我想在新文檔更新時保留版本歷史記錄。我正在使用Alfresco,但這應該適用於任何CMIS存儲庫。使用OpenCMIS創建和更新文檔,同時保持版本歷史記錄
回答
在露天,創建一個新的版本,只是讓被檢出後,返回給你的私人工作副本,更新PWC的內容流,然後檢查回。Alfresco的將管理的版本爲您服務。這是一個例子。
Folder folder = (Folder) getSession().getObjectByPath("/cmis-demo");
String timeStamp = new Long(System.currentTimeMillis()).toString();
String filename = "cmis-demo-doc (" + timeStamp + ")";
// Create a doc
Map <String, Object> properties = new HashMap<String, Object>();
properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
properties.put(PropertyIds.NAME, filename);
String docText = "This is a sample document";
byte[] content = docText.getBytes();
InputStream stream = new ByteArrayInputStream(content);
ContentStream contentStream = getSession().getObjectFactory().createContentStream(filename, Long.valueOf(content.length), "text/plain", stream);
Document doc = folder.createDocument(
properties,
contentStream,
VersioningState.MAJOR);
System.out.println("Created: " + doc.getId());
System.out.println("Content Length: " + doc.getContentStreamLength());
System.out.println("Version label:" + doc.getVersionLabel());
// Now update it with a new version
if (doc.getAllowableActions().getAllowableActions().contains(org.apache.chemistry.opencmis.commons.enums.Action.CAN_CHECK_OUT)) {
doc.refresh();
String testName = doc.getContentStream().getFileName();
ObjectId idOfCheckedOutDocument = doc.checkOut();
Document pwc = (Document) session.getObject(idOfCheckedOutDocument);
docText = "This is a sample document with an UPDATE";
content = docText.getBytes();
stream = new ByteArrayInputStream(content);
contentStream = getSession().getObjectFactory().createContentStream(filename, Long.valueOf(content.length), "text/plain", stream);
ObjectId objectId = pwc.checkIn(false, null, contentStream, "just a minor change");
doc = (Document) session.getObject(objectId);
System.out.println("Version label is now:" + doc.getVersionLabel());
}
運行時,它輸出這樣的:
Created: workspace://SpacesStore/d6f3fca2-bf9c-4a0e-8141-088d07d45359;1.0
Content Length: 25
Version label:1.0
Version label is now:1.1
Done
非常感謝你...我想知道更多的事情,我們可以將標籤更改爲2.0而不是1.1? – user2106213 2013-02-26 07:04:19
是的,你只需要將主標誌從false更改爲true,所以你應該這樣做:ObjectId objectId = pwc.checkIn(true,null,contentStream,「這是一個重大改變」); – 2013-02-27 01:22:58
謝謝你傑夫......你是天才 – user2106213 2013-02-27 05:29:25
- 1. 使用本地歷史記錄在eclipse中創建版本
- 2. SQL更新查詢,爲相同的記錄創建歷史記錄
- 3. 保持歷史記錄與WKWebView緩存
- 4. SVN更新修訂歷史記錄中的修訂版本
- 5. 如何在列和表格中保持插入和更新的歷史記錄?
- 6. 如何在MySQL中保留記錄更新的歷史記錄?
- 7. 自動創建對象的歷史記錄時,堅持它
- 8. 從JDBC創建更新歷史記錄表 - Java
- 9. 使用clearcase保存歷史記錄
- 10. JavaScript - 基本URL重寫+在歷史記錄中創建記錄
- 11. Subversion通過修訂版本分割存檔歷史記錄
- 12. 創建記錄歷史記錄表 - 如何創建創建記錄?
- 13. 在SVN中保留歷史記錄的同時拆分文件
- 14. 創建瀏覽歷史記錄菜單
- 15. GWT歷史記錄 - 州/州是否創建歷史或歷史結果?
- 16. 使用Git跟蹤文檔歷史記錄?
- 17. 創建空目錄時,Git是否存儲歷史記錄?
- 18. GWT歷史記錄:歷史記號
- 19. 禁用保存歷史記錄
- 20. Eclipse本地文件歷史記錄
- 21. 如何存儲和計算版本控制歷史記錄?
- 22. 開發文件的本地歷史記錄/修訂版
- 23. 如何在Subversion版本庫歷史記錄中查找文件?
- 24. 如何在使用Ajax時保持瀏覽器歷史同步?
- 25. 如何在運行時創建SSRS報告的存檔歷史記錄
- 26. Nuxeo使用REST的新版本創建和更新文件
- 27. Forgerock OpenAM用戶同意歷史記錄
- 28. 從歷史記錄創建一個新的提交
- 29. 文章版本/歷史
- 30. 使用javascript更新URL參數,而不破壞歷史記錄?
你是什麼意思與 「維護版本」?就像,你想要堅持或控制版本號? – skuro 2013-02-25 12:16:02
當我使用document.setContentStream(..)更新Document時,它應該通過它自己更改版本並更改文檔的內容,並將這兩個文檔保留在版本History中。我想要這樣 – user2106213 2013-02-25 12:19:32
你可以請發佈代碼創建文件?與版本控制? – user2106213 2013-02-25 12:31:04