Autodesk Vault 2014的Subscription 包中有一個元件叫做Thin Client。這個瘦客戶端有著全新的介面,又給了我們一個全新的選擇。ThinClient實際是在Vault Server端架設了一個web站點,使用者只需要瀏覽器就可以直接檢視Vault資料,而不需安裝Vault Explorer軟體。當然也不消耗License,就不用掏錢了,哈哈、
除了省費用外,關鍵還是方便,比如我們在設計流程中需要主管領導稽核,我們需要主管領導安裝Vault Explorer客戶端。而且每次設計更改完畢後請領導審批時還要費很多口舌,“領導,您進到XX目錄的XX子目錄,然後找到我改的xx檔案,您看合適不?”現在有了ThinClient,直接給領導一個ULR連線,“領導,這是我最近的更改,妥否請批示。”是不是簡單的很多?
現在就寫一個外掛來實現Vault Explorer和Thin Client的整合。我們的目標是為資料夾和檔案新增右鍵選單,生成Thin Client的ULR並在預設瀏覽器中開啟。如圖:
對於檔案,如下:
當然,你還可以更進一步,把這個ULR儲存到資料庫中,或者你的ERP系統等,從而實現Vault和其他系統的整合。
你可以使用Vault 外掛嚮導來建立這個外掛,下面是核心程式碼:
void ThinClientUrlCmd_Execute(object sender, CommandItemEventArgs e) { WebServiceManager webMgr = currentConnection.WebServiceManager; ISelection selectedItem = e.Context.CurrentSelectionSet.FirstOrDefault<ISelection>(); if (selectedItem != null) { Uri serverUri = new Uri(webMgr.InformationService.Url); string url; if (selectedItem.TypeId == SelectionTypeId.File) { File file = webMgr.DocumentService.GetLatestFileByMasterId(selectedItem.Id); if (file == null) { return; } string[] ids = webMgr.KnowledgeVaultService.GetPersistentIds( VDF.Vault.Currency.Entities.EntityClassIds.Files, new long[] { file.Id }, Autodesk.Connectivity.WebServices.EntPersistOpt.Latest); string id = ids[0]; id = id.TrimEnd('='); url = string.Format("{0}://{1}/AutodeskTC/{1}/{2}#/Entity/Details?id=m{3}=&itemtype=File", serverUri.Scheme, serverUri.Host, currentConnection.Vault, id); //Open with default broswer Process.Start(url); //copy url to clipboard Clipboard.SetText(url); } if (selectedItem.TypeId == SelectionTypeId.Folder) { Folder folder = webMgr.DocumentService.GetFolderById(selectedItem.Id); if (folder == null) { return; } string[] ids = webMgr.KnowledgeVaultService.GetPersistentIds( VDF.Vault.Currency.Entities.EntityClassIds.Folder, new long[] { folder.Id }, Autodesk.Connectivity.WebServices.EntPersistOpt.Latest); string id = ids[0]; id = id.TrimEnd('='); url = string.Format("{0}://{1}/AutodeskTC/{1}/{2}#/Entity/Entities?folder=m{3}=&start=0", serverUri.Scheme, serverUri.Host, currentConnection.Vault, id); //Open with default broswer Process.Start(url); //copy url to clipboard Clipboard.SetText(url); } } }
完整程式碼已經發布到了Github.com, 請到https://github.com/ADN-DevTech/Vault_Thinclient_Integration 下載。