2016-03-31 45 views
3

Senaryo: Bir Kentico 8.0 örneğinin üstüne cıvatalı bir Eğik ön uç varAPI aracılığıyla düzenlenmiş bir belgeyi yayınlarken, belge eklerini düzgün bir şekilde güncellemek için Kentico 8.0'ı nasıl edinebilirim?

. Kullanıcılar bu ön uç aracılığıyla belgeleri görüntüleyebilir, ekleyebilir ve düzenleyebilir. Bir kullanıcı bir belgeyi eklediğinde/düzenlediğinde, ilgili ayrıntılar özel bir işleyiciye gönderilir, ardından bu belgeler Kentico API (C#) aracılığıyla güncelleştirilir ve uygun şekilde iş akışında gezdirilir. Şu anda "Onaylama" adımına eklenmiş/düzenlenmiş belgeler yerleştirmek, ardından Yöneticiler arka uçtan yayınlayabilmektedir. Kullanıcıların, API aracılığıyla belgeye bir görüntü listesi eklemesine izin verilir.

Düzen -> Onay -> Yayınlanan basit bir iş akışı kullanıyoruz. Her ikisini de ekleyin ve düzenleyin, belgeyi Düzenle'ye taşıyın, değişiklikler yapın, Onayla'ya taşıyın ve değişiklikleri kaydedin (node.Update()). Yayıncılık Kentico Yönetici tarafında gerçekleşir.

Sorun:

Genel belge düzenleme sorunsuz görünen ... ama ekleri ile sorunlar yaşıyorum. Kullanıcılar yeni belgeler oluşturabilir ve sorunsuz bir şekilde görüntü ekleyebilir. Gönderme sırasında (belgeyi "Onayla" adımında yerleştirir), ekler CMS_AttachmentHistory tablosuna itilir, ancak CMS_Attachment tablosunda görünmez. Mantıklı görünüyor. Bir Yönetici belgeyi yayınladıktan sonra ekler de CMS_Attachment tablosuna aktarılır. Hala mantıklı. Şimdi düzenler (belgeyi düzenleme adımına taşır, verileri güncelleştirir, sonra onaylama adımına taşır, sonra kaydeder) ve eklerde değişiklik yapar ... bu ek değişiklikleri beklediğim gibi CMS_AttachmentHistory tablosunda görünür ... ancak daha sonra belgeyi Yönetici olarak yayınladığımda CMS_Attachment tablosu değişmeden kalır.

Eklentilerin neden eklendiğini -> eklerin CMS_Attachment tablosuna doğru şekilde eklendiğini, ancak düzenleme -> yayımlamadıklarını anlayamıyorum. Açıkçası, bir şey farklı ... ama güncelleştirmelerin kodu aynıdır ... tek istisna, yeni bir belge için node.insert(). Her ikisi de düzenleme aşamasında başlar, değişiklik yapar, onaylamak için hareket ettirilir ve kaydedilir. Muhtemelen belge yayınlaması her iki durumda da aynıdır.

Eklentileri iş akışında elle taşımanın bir yolu hakkında belgede hiçbir şey bulamıyorum ... Yapmam gereken bir şey olup olmadığından emin değilim, ancak eklemeye çalıştığından garip görünüyor. sadece düzenleme.

Gerekirse kodu sağlayabilirim, ancak bu durumda yardımcı olacak gibi görünmüyor.

Düzenleme: iş akışı kurulumu Bu adımlar arasında yalnızca bir fark vardır

cevap

-1

hakkında daha fazla ayrıntı eklendi. Ekler, düzenleme -> yayınlama adımında CMS_Attachment tablosunda zaten var. Bu adımda kaldırmayı deneyebilirsiniz.

+0

Kentico belgelerinden, bu, tüm tarihi sürümleri de ortadan kaldıracak gibi görünüyordu ... ki bu yapmak istediğim bir şey değil.Yeni sürüm bir yönetici tarafından yayınlanana kadar bozulmadan kalmak için şu anda yayınlanan sürüme ihtiyacım var ... ama belgeleri yanlış okuyor olabilirim. Ben deneyeceğim ve ne olduğunu göreceğim. – Mir

+0

Evet, bu işe yaramıyor. Tamamen yeni ekler bile, ilk kez yayınlandıktan sonra eklendiklerinde CMS_Attachments'a taşınmaz. – Mir

0

'Yayınlama' için kullandığınız kodu göndermediniz, bu yüzden geçmişte kullandığım aşağıdaki yaklaşımı önermeme izin verin. Kentico, yönetim alanı içinden yayınlamak için kullandığı kodun aynısı, bu yüzden ekleri de kullanması gerektiğine inanıyorum. Bunu biraz değiştirmeniz gerekebilir, ancak yayınlama API süreci yardımcı olabilir.

TreeProvider tree = new TreeProvider(UserInfoProvider.GetUserInfo("SomeoneWithPermissionsToPublish")); 

     int documentID = 1; 
     //get document 
     var doc = DocumentHelper.GetDocument(documentID, tree); // change DocumentID 
     if (doc != null) 
     { 
      // Create a new Version manager instance 
      VersionManager manager = VersionManager.GetInstance(tree); 

      // Check out the document 
      manager.CheckOut(doc); 

      // do changes here 

      // Save the changes 
      DocumentHelper.UpdateDocument(doc, tree); 

      // Check in the document 
      manager.CheckIn(doc, null, null); 

      WorkflowManager workflowManager = WorkflowManager.GetInstance(tree); 

      WorkflowInfo workflow = workflowManager.GetNodeWorkflow(doc); 

      // apply latest version 
      manager.ApplyLatestVersion(doc); 

      // Check if the document uses workflow 
      if (workflow != null) 
      { 
       // Publish the document 
       workflowManager.PublishDocument(doc, null); 
      } 
     }