Vault外掛示例--Vault Explorer與Thin Client的整合。

峻祁連發表於2014-02-17

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並在預設瀏覽器中開啟。如圖:

image  image

對於檔案,如下:

image image

 

當然,你還可以更進一步,把這個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 下載。

相關文章