Belge Yaşam Döngüsü, Dosyalar ve Profiller¶
Meta verileri kaydetmeye, yeni bir revizyon oluşturmaya veya bir sürümü kaldırmaya karar verirken bu başvuruyu kullanın. Aşağıdaki tüm işlemler sunucu komut dizisi API'sine ilişkindir; standart belge kullanıcı arayüzündeki Kaydet yolu formun belgesini yayımlar.
Durumlar ve Kalıcılık¶
| İşlem | Kalıcılık ve görünürlük |
|---|---|
$Documents.New(title, contentType) | Yeni sürüm ve dal kimlikleriyle yeni bir Draft nesnesi döndürür; kaydı kalıcılaştırmak için Save veya Publish çağırın. |
$Documents.NewVersion(branchId, title, versionNumber) | Kopyalanmış meta veriler, ACL, profil ve bağımsız dosya kopyalarıyla yeni bir Draft döndürür; kalıcılaştırmak için Save veya Publish çağırın. |
Save() | Durumu değiştirmeden veya dizin üyeliği eklemeden değişiklikleri kalıcılaştırır. Yeni bir taslağı tek başına kaydetmek dizinde bir girdi oluşturmaz. |
Publish(folderPath) | Published olarak kaydeder ve belirtilen dizinlere dal ilişkileri ekler. Olmayan adlandırılmış dizinler oluşturulur. |
Publish() | Dizin ilişkileri eklemeden Published olarak kaydeder; mevcut aile ilişkileri korunur. |
Unpublish(folderPath) | Bu sürümü Draft olarak kaydeder ve adlandırılmış dizin ilişkilerini aileden kaldırır. Olmayan yollar yok sayılır. |
Unpublish() | Bu sürümü Draft olarak kaydeder ve ailenin tüm dizin ilişkilerini kaldırır. |
Archive() | Bu sürümü Archived olarak kaydeder; verileri korur ancak yayımlanmış listelerin dışında tutar. |
Delete() | Bu sürümü Deleted olarak işaretler ve arama girdisini kaldırır; profili ve ekli dosyaları korur. Yinelenen çağrılar silinmiş sürümü korur. |
Purge() | Bu sürümü ve ekli dosya kayıtlarını, durumu ne olursa olsun kalıcı olarak kaldırır; bulunmayan bir sürümü tekrar kaldırmak hiçbir etki yaratmaz. |
Delete ve Purge kardeş sürümleri kaldırmaz. Hiçbiri kullanıcıya sunulan bir geri alma olanağı veya harici depolardan ve yedeklerden fiziksel olarak silinme garantisi sağlamaz. Bkz. işlemler ve kurtarma.
Salt Okunur İçerik ve Düzenlenebilir Meta Veriler¶
IsReadonly Published, Archived ve Deleted sürümler için doğrudur. Bu durumlarda dosya içeriğini değiştirme, içerik türünü, sürüm numarasını veya oluşturanı değiştirme işlemlerine izin verilmez. Başlık, açıklama, profil verileri ve ACL yine de komut dizisi API'si aracılığıyla güncellenebilir ve Save()ile kalıcılaştırılabilir. Bu tür meta verileri kaydetmek yeni bir sürüm oluşturmaz veya mevcut durumu değiştirmez.
İçerik revizyonu için, önceki kaydı yalnızca dosyalarını düzenlemek amacıyla yayından kaldırmak yerine NewVersion kullanın. Yeni taslak hazırlanırken önceki yayımlanmış revizyon kullanılabilir durumda kalabilir. Geçmiş yalnızca yayımlanmış sürümleri listeler.
Dosyalar ve Bağımsız Kopyalar¶
Document.Files tek bir sürümle sınırlıdır. Yeni sürüm, her kaynak dosyayı ayrı bir dosya kaydına kopyalar; bu kopyayı düzenlemek veya silmek kaynak sürümün dosyasını değiştirmez. Oluşturulan bir PDF'yi eklemek yeni bir dosya ekler; bu nedenle kopyalanan tüm ekleri korumak isteyip istemediğinizi gözden geçirin.
Belge dosyaları için doc.Files.AddPDF, AddStringve desteklenen diğer Files yöntemlerini kullanın. Şu işlemler için hedef sürüme ait dosya kimliklerini kullanın: Delete, SetBase64ve Replace. Başka bir sürüme ait dosya hedef sürümün koleksiyonu üzerinden eklenemez, yerine kullanılmak üzere tüketilemez veya değiştirilemez. Kiracılar arası dosyalar reddedilir.
$Files genel dosya API'sidir. Süreç XML'inde saklanan bir dosya kimliği, belge sahipliği değil bir başvurudur. Genel bir dosya işlemiyle içeriğin değiştirilmesi, bu dosya kimliğine erişen tüm okuyucuları etkileyebilir; kaynağın değişmeden kalması gerekiyorsa bağımsız bir kopyayı tercih edin. Belgenin salt okunur içerik kurallarını aşmak için genel API'yi kullanmayın. Dosya oluşturmayı ve belge kalıcılığını kontrollü bir sunucu işlemi içinde tutun ve hataları hesaba katın; dosya oluşturulması, belgesinin kaydedildiğini veya yayımlandığını kanıtlamaz.
İçerik Türleri ve Profiller¶
Bkz. İçerik Türleri ve Profiller form tasarımı, yayımlama ve Contract örneği için.
Yayımlanmış bir içerik türü belgeye bir profil formu ve veri modelini bağlar. Profil; sözleşme numarası ve yürürlük tarihi gibi, içerik türü tarafından tanımlanan belgeye özgü yapılandırılmış bilgilerdir. Başlık ve açıklama, içerik türü profilinden ayrı standart belge meta verileridir.
Belgeye profil vermek için, taslağı oluştururken profil verilerini sağlamadan veya yayımlamadan önce ContentType ayarlayın. AddProfile girdi XML'sini ilgili içerik türünün şemasına göre kopyalar. Beklenen öğe adlarını, ad alanlarını ve türleri kullanın; rastgele XML, içerik türü ilişkilendirmenin yerini tutmaz. İçerik türü olmayan bir belgede doldurulacak içerik türü profil formu bulunmaz.
Profile ilişkili profil verilerini bir XML sarmalayıcısı aracılığıyla sunar ve profil verisi yoksa null olabilir. Mevcut bir sürümde profil verilerini değiştirdikten sonra Save() kullanın. Profil güncellemesi, dosyayı değiştirmeden veya yeni bir sürüm oluşturmadan yayımlanmış sürümdeki iş bilgilerini değiştirebilir.
SetSecurityProfile(name) ada veya kimliğe göre bir alanadı güvenlik profili seçer ve ACL devralımını günceller. ContentType'dan bağımsızdır. Değişikliği kalıcılaştırmak için ardından Save veya Publish çağırın. Boş ad, devralımı temizler; "güvenli varsayılanları geri yükle" anlamına gelmez. Açık ACL girdilerini ve ortaya çıkan okuyucu erişimini gözden geçirin.
Dizin Üyeliği¶
Publish('Documentation\\Contracts;Documentation\\Reference') noktalı virgülle ayrılmış yolları içeren tek bir dize kabul eder; dizi veya dizin GUID'si kabul etmez. JavaScript dize değişmezlerindeki ters eğik çizgiler kaçış karakteri olarak yazılmalıdır. Dizin üyeliği dal için saklanır; bu nedenle bir yoldan yayından kaldırma, kardeş sürümler yayımlanmaya devam etse bile ailenin oradaki yerleşimini etkiler.
Yayımlama ve ACL atama birbirinden ayrıdır. Dizin ilişkisi eklemek, o dizine göz atabilen herkese belge için Read izni vermez. Otomatik oluşturulan bir yolu kullanmadan önce adını ve ortaya çıkacak dizin ACL'sini yöneticiyle kararlaştırın.
Hata ve Yeniden Deneme İşlemleri¶
Belge sürümü oluşturma işlemi kendiliğinden idempotent değildir. Yeniden deneme başka bir sürüm ve başka bir dosya kümesi oluşturabilir. İş akışı otomasyonu için iş isteğiyle birlikte kalıcı bir işlem işaretçisi ve sonuçta oluşan sürüm kimliğini saklayın. Sürüm oluşturmadan önce bunu kontrol edin ve sonuç belirsizse saklanan sonucu mutabık hâle getirin. Eşzamanlı yeniden denemelerin ikisinin de kontrolü geçmesini önlemek için bir işlem veya eşdeğer serileştirilmiş bir işlem kullanın. Publish sonrasında tek başına alan ataması, bağımsız kalıcılık sistemleri arasında atomikliği kanıtlamaz.
Yetkili bir mevcut revizyon için sürüm kimliğini şu öğeyle çözümleyin: Get, ardından nullvarlığını kontrol edin ve sonra onun BranchId öğesini şu öğeyle NewVersionkullanın. Bilinmeyen bir dalı sessizce başka bir aile başlatmak yerine uygulamanızda hata olarak ele alın.