Kategori Arşivleri: SharePoint

Gizemli SharePoint hataları nasıl giderilir.

Genel bakış:

Hata ayıklama özel işlevler için Windows SharePoint Hizmetleri geliştirirken kolay değildir 3.0 (WSS) veya Microsoft Office SharePoint Server (YOSUN). Bir hata oluştuğunda SharePoint normalde çok az tanı bilgilerini üstünde örümcek ağı kaş yüzeyler o ana suçlu olduğunu. Bu blog girişi kez o ekstra sağlayabilir ek sistem tarafından oluşturulan tanı bilgilerini bulun açıklar bit ayrıntı bir ihtiyacı temel nedenlerini tanımlamak için. Bu daha sonra sorunun çözümü için yol açabilir.

Çözmek için büyük bir başarı ile bu tekniği kullanmış yoksa gizemli hataları.

Yaklaşım:

SharePoint bilgi büyük bir tanılama günlüğü'bir günlük dosyasına kaydeder 12 kovan.

"12 kovan" genellikle "C bulunur:\Program FilesCommon FilesMicrosoft SharedWeb Server Extensions12 ". (Mümkün olup olmadığından emin değilim. 12 başka bir yerde yaşamak için kovan, Aslında).

Geçerli günlük dosyasının yerini belirlemek için bir fikir, hata zorlamak ve hızlı bir şekilde günlük dosyasını açın. Bu günlük dosyaları ile karakterizedir:

  • Bol miktarda bilgi. SharePoint tanı bilgilerini çok büyük miktarda üretir ve çok hızlı bir şekilde bu günlük dosyasına yazar. Onu yakalamak için parmak ile hızlı olmak gerekir.
  • Çeşitlilik. SharePoint tek bir günlük dosyasına yazmak değil ama oldukça sırayla birden çok günlük dosyası oluşturur.
  • Kopyala Yapıştır güzel MS Excel'e.

Benim favori yöntemi:

  1. Gösteren bir windows Gezgini'nde aç 12 hivelogs.
  2. Değiştirme tarihine göre göstermek için sıralama görüş (En son ilk).
  3. En geçerli günlük dosyasını vurgulayın.
  4. Bir web tarayıcısı penceresinde, hata oluştuğu için zorla.
  5. Hızlı bir şekilde geçerli günlük dosyasını açın ve içeriğini MS Excel'e kopyalama.
  6. Sonuna kadar atlama ve ilgili girişleri analiz.

Diğer notlar:

Varsayılan olarak, tanılama günlüğüne yer almaktadır 12 hiveLOGS Rehberi.

MS Best practices (Mike T başı olarak. Microsoft) günlük dosyalarının ayrı bir sabit diske kaydedilmesi gereken durumu. Bu Yönetim Merkezi ile yaptığı. Sistem yöneticiniz bunu yapmış olabilir, Bu durumda sen belli ki orada yerine varsayılan günlük dosyası bulmak gerekir 12 yığın konumu).

Bu giriş gibi konularla:

  • SharePoint iş akışı, bir iç hata nedeniyle başlatılamadı.
  • (daha zaman içinde eklenecek)
  • Bu giriş iş akışı hata tanılamada yardımcı oldu (e.g. "İş akışı bir iç hata nedeniyle başlatılamadı").

YOSUN: Etkili bir kuruluş Giriº

(çapraz arasında yayınlanan bu giriş http://paulgalvin.spaces.live.com/blog/ ve http://blogs.conchango.com)

Bu site ilanları kendi ve mutlaka Conchango'nın pozisyonları temsil etmemektedir, stratejileri ve görüşler.

Genel bakış:

Bu giriş büyük bazı arka plan bilgileri açıklar. (3,000 kullanıcılar) Microsoft Office SharePoint Server (YOSUN) Kademeli dağıtım ve böyle bir şekilde istemci mutlu olduğunu ve bir yolda sıkıca proje almak için yaptığımız MOSS özellik kümesi tam kabulü ile biter. Giriş yazı gibi, Biz yaklaşık vardır 50% projenin ilk aşaması ile tamamlamak. Şeyler ilerleme, Ben bu giriş ve/veya yeni yazılar yazmak.

Bu özel durumda, şirket zaten SharePoint Portal Server yüklü vardı 2003. BT grubu bir tür "kimse umursamıyor Eğer bakalım üründe yüklü" moda. Hızlı bir şekilde birçok iş kullanıcı tarafından kabul edilmiştir ve büyük kurumsal oldukça popüler oldu. Tahmin edebileceğiniz gibi, Bu en iyi ürün strateji değildi. (hangi istemci kolayca kabul ediyor) ve ne zaman sahne MOSS geldi, İstemci "yapmak çözüldü." ve onlara yardım etmek için bizi tuttu..

Bu proje uygulama başladığında bize bakan merkezi soru biriydi.: Nasıl MOSS bu istemciye tanıtmak? İstemci zaten SharePoint ile deneyim oldu verilen, merak ettik — "değişiklik yapmak ihtiyacımız var" eğitim veya biz sıfırdan başlamak? Kullanıcıdan ile çalıştıktan sonra, Biz bu bu daha mantıklı bir yeşil alan proje olarak tedavi tespit.

Karar bir başlangıç noktası verdi ama hala bize MOSS Atılgan'a inişli çıkışlı dışarı için iyi bir strateji bulmaktan önemli ihtiyacı bıraktı. MOSS büyük bir hayvan olduğunu … içerik yönetimi içerir, Belge yönetimi, Arama, Güvenlik, dinleyici belirleme, Proje Yönetimi, "muhteşem kırk" şablonları, iş akışı, iş verileri bağlantısı, vb. Büyük bir organizasyon olduğu gerçeği ile bir çift bu Can Gerçekten hemen hemen her büyük MOSS faydalanmak özellik ve büyük bir proje ile kurumsal ulaşmak ve pek çok iyi şeyler oluyor kazançlar var.

Biz zaman ve tekrar tekrar bu konu ile karşıya … MOSS, kurumsal özellik seti ile ulaşmak bir kuruluş vardır, Henüz biraz sofistike istemcileri bu özellikleri zihinsel emici zor zamanlar var, Yalnız bunları kayda değer bir kısmını onların günlük rutin birleşmeyle izin.

Sihirli bir soruna çözüm yok. Bunun yerine sadece aldık ilk adımlar adres istemcisiyle başarılı uzun vadeli evlat edinmek için yolda komuta edecek.

Kapsam:

Proje planı böyle kilometre taşları "PoepleSoft entegrasyon yoluyla BDC tamamlandı" olarak dahil tekne için takım istediği kadar çok, "Yeni çapraz departman ürün denize indirmek iş akışı tamamlandı" ve "Üst yönetim KPI'ın kabul", Bir şey için daha az yerleşmek zorunda kaldım. O "daha az söylemek değil bu" kötü bir şey. Aslında, "daha az" ilk kullanım için karar verdik biz başlamadan öncesinde olduğu mil.... Bizim durumumuzda, "daha az" dönüştü:

  • Belge kitaplıklarını kullanma basit doküman yönetimi, sürüm denetimi ve içerik türleri.
  • Etkili arama içerik türlerini temel ve gelişmiş arama özelleştirilmiş (Yönetilen özellikleri ile, XSLT güzel sonuçlar üretmek, vb).

Yukarıdaki kuruluş çapında özelliklere ek olarak (Tüm bölümler ve kullanıcıların yuvarlandı olduklarını anlamı), Şu tek kapsam mini-projeler eklendi:

  • Prototip BDC entegrasyon.
  • SPD ile oluşturulan Multi-step ve çoklu şube iş akışı işlemi.
  • Karmaşık InfoPath formu.
  • KPI'ın bazı iş süreci için yüzey (muhtemelen insan kaynakları yetenek elde etme bizde, Ama bu değişebilir).

Kapsamı burada değil 100% doğru ama bizim yaklaşım temsilcisi ve benim amacım burada için yeterli, açıklamak ne "etkin olarak düşünün ki" altın yol aşağı sıkıca müşteri-ecek koymak tam MOSS evlat edinmek için MOSS tanıtımıyla.

Bu girişte tek hakkında çok daha fazla yazmayacağım. Bu bizim aşırı kemer stratejisinin bir parçası olduğunu işaret etmek istiyorum. Çekirdek belge yönetimi ve arama özelliklerini tüm kullanıcılar için uygulamak henüz son derece işlevsel sağlamak için fikir, Bu erken aşamada emme yeteneği çoğu kullanıcının sadece ötesinde olan diğer çekirdek MOSS özellikleri yüksek görünür ve son derece temsili örnekleri. Ancak, onlar-ecek var olmak "orada" ve bir diğer departmanlar biliyor ya da onlar hakkında bilgi ve bu özellikleri kendileri için istiyorum umuyor, büyük için kabulüne. Bu aynı cinsten tek adet başarı öyküleri de satış ekibimiz "mühimmat sağlamak için hizmet." İkinci olarak başarılı bir şekilde kazanmak için, üçüncü ve n-fazlı projeleri.

Ne biz tanıtıyor ve neden?

Belge yönetimi ve ara temel kuruluş çapında gereği olarak yerleşmiş, bilgi toplama başlatmak için gereken. Pratik bir konu olarak, Bu belgelerini ve sonuçta içerik türlerini anlamak için eşlenen anlayışı etrafında dönüyordu..

Görsel araçlar olmadan içerik türleri açıklamak zordur buldum. Tomografi veritabanı hükümlerinde daha teknik halk içerik türleri hakkında bir tartışma uzak yürüyebilir. "A CT bir veritabanı tablosuna benzer, Bu sütunlar ve sütun veri türleri açısından tanımlanmıştır, Ama CT veri türlerini daha çok basit tamsayı/tarih dahil, Ama aynı zamanda "seçimi" ve "arama" ve benzeri." "Genişletme hakkında konuşabiliriz" içerik türleri, çok benzer bir nesne yönelimli dilde temel sınıfından işlevselliği devralabilir. Ancak bu tabii ki olan teknik arka plan ulaşım departmanı admin kişi için yararlı değil. Yani, Neredeyse herkes bir yosun rollout önemli.

Beyaz tahta kullanarak şüpheli. Bir içerik türü ve çizilen parlak fikri takdim ettik (ya da onlar gibi görünüyor) içerik türleri ve arama açısından sizin için ne ve nasıl onlar-ebilmek var olmak genişlemek resimleri, vb. Sonunda, Bazı Işık Ampüller kapatmış gibi hissediyorum, Ama bir karışıklık ortaya çıkan beyaz tahta resimdir.

Bu bize bizim şimdiki ve öylesine uzakta en etkili iniş yeri açtı: Bu özellikleri göstermek için yapılandırılmış bir yosun sandbox sitesi.

Sandbox sitesini kullanma, Biz göstermek:

  • İçerik türleri:
    • Bir CT ile birden çok veri türü oluşturma (metin, tarihi, seçim, Boole değeri, Arama, vb).
    • Bir ebeveyn dayalı yeni bir CT oluşturarak bir CT genişletme.
    • CT meta verileri kullanarak belgeler için arama.
  • Belge kitaplıkları:
    • Tek bir CT bir kütüphane ile ilişkilendirme.
    • Ne olur bu kitaplığa belge yüklemek?
    • Birden fazla Tomografi doktor kitaplığıyla ilişkilendirme.
    • Ne olur bu kitaplığa belge yüklemek?
    • Sütun başlıklarının bir doktor lib aracılığıyla sıralama ve filtreleme.
    • Belge kitaplığı görünümleri:
      • Sıralama
      • Gruplandırma
      • "Hızlı bir giriş" (veri sayfası görünümü)
      • "Etiketsiz veri" (geçiş ile MOSS için içerik diğer kaynaklardan yardım.; Bu aşağıda daha fazla bilgi).

Kum Makinası:

Projeyi tamamladıktan sonra uzun eğitim amaçlı kullanılmak üzere geliştirme ortamında kalıcı bir özelliği olması bizim sanal site dizayn ve açıklandığı gibi çeşitli eserler dahil:

İçerik türleri:

Aşağıdaki içerik türleri tanımlanmış: Fatura, Satınalma siparişi, Hizmet faturası.

Az ya da evrensel altında oldukları için biz fatura ve satınalma siparişi seçildi
durdu varlıklar. Herkes iş bir fatura için ödeme için bir talep olduğunu anlayan bir Müşteri için bir tutar belli bir yayınladı tarihi biraz başı olarak ödenecek ödeme koşulları. Bu "eğitim fatura olarak adlandırılan bir CT doğal bir tanımı için açar" (Fatura başka türlü ayırt etmek). Satınalma siparişi benzer şekilde kolayca tanımlanır. Biz de bir "Eğitim Hizmetleri faturası oluşturduğunuzda" "eğitim fatura dayalı yeni bir CT oluşturarak" CT ve eklenen bir sütun, "hizmet".

Yukarıda, Biz şimdi ezelî saplanmış ilk soyut bir kavram anlatmaya çalışıyor aşağı biraz anahtar şekil-in Tomografi göstermek; Herkes zaten biz fatura"ile ne demek anlıyor" ve "satınalma siparişi" ve bunun yerine CT mekanik odak edebiliyoruz kendisini.

Özel listeler:

CT ile türü "arama sütunları" özel bir liste veya belge kitaplığına işaret. Bu kapsamlı ve kum için kullanın, müşteriler içeren özel liste destekleyen bir tane yarattık. Anlamak için kolay bir kavram olduğu için müşteriler aldık ve basit-e doğru göstermek. Fatura CT bir sütun vardır, "müşteri" Bu tip "arama tanımlanır" Bu liste işaret.

"Sunucuları yönetmek için benzer bir özel liste hazırlandı" "satınalma siparişi için" CT.

Belge kitaplıkları:

Biz iki belge kitaplığı oluşturdu: "Fatura" ve "Karışık belgeleri".

"Fatura" CT türdeki belgeleri yönetmek için fatura belge kitaplığı yapılandırılmış.

Biz "karışık belgeleri yapılandırılmış" tüm üç Tomografi yönetmek için kitaplığının.

Sıralama göstermek birkaç görünüm oluşturma, filtre uygulama, veri sayfası ve gruplandırma.

Arama:

Biz iki yeni yönetilen özellikler tanımlanmış ve fatura numarası ve müşteri kadar onları haritalı.

Biz yeni bir özelleştirilmiş önceden arama sitesi oluşturulur ve kullanıcıların faturaları"için arama modifiye" Bu iki eşlenen özelliklerin kullanma.

XSLT değiştirmek böylece fatura ve müşteri numarası, Otelde mevcut, parlak bir renk bir HTML tablosunda görüntülenir. Amaç burada böyle biçimlendirme mümkündür göstermektir.

Hepsini bir araya koyarak:

Biz de demo katılmak anahtar kullanıcıları düzenlemek.

Bu basit bir script izleyin:

  1. Anlam ve amaç bir CT tarif, örnek olarak fatura ve satınalma siparişlerini kullanarak.
  2. Aynı anda onları bu ekranları kullanmak gerekmez temin ederken fatura CT tanımı göster, Sadece kavramlar aç.
  3. Fatura belge kitaplığı'na gidin.
  4. Bir belgeyi karşıya yüklemek.
  5. Açılan müşteri gerçekten özel bir listeden kaynaklı göstermek.
  6. Yeni bir müşteri müşteri listesine ekleyin ve sonra yeni oluşturulan müşteri ile son zamanlarda yüklenen faturayı 's meta veri güncelleme.
  7. "Karışık belgeler için geçiş" Kütüphane ve upload bir belge. Nasıl sistem için bir belge türü ister açıklamak.
  8. Geri dön fatura belge kitaplığı ve gösteri nasıl bir sütun adını tıklatarak sıralama düzenini değiştirir.
  9. Sütun düzeyinde filtreleme göstermek.
  10. Çok düzeyli sıralama göstermek farklı görünümleri göster, Süzme ve gruplandırma.
  11. Veri sayfası görünümü'nü göster.
  12. Amacı, bir "etiketsiz belgeleri açıklamak" Görünüm.
  13. Özelleştirilmiş gelişmiş arama için geçiş.
  14. Şimdiye kadar, Son zamanlarda yüklenen belge taranmasını ve dizine, Yani o fatura yolu ile eşlenen özellik bulmak için yetenek gösteren arama yapın.
  15. Biz eşlenen özellikler vs arama arasındaki farkı göstermek. Sadece bir metin arama.

Bu noktada, az ya da demo ile yapılır. Hakkında almak gibi görünüyor 30 Hedef 45 dakika, insanlar bağlı olarak ne kadar çok soru sorar.

Biz o zaman geri göndermek için masaları "ödev" ile. Bu basit bir oluşur nerede biz onları bizim için Tomografi açısından ihtiyaçları düşündüklerini tanımlamak için sormak elektronik tablo excel, hem yüksek düzeyde (sadece isim ve iş amaçlı) yanı sıra sütun ve veri türü sütunda saklamak. Biz onları MOSS açısından sütun veri türlerini tanımlamak için sormayın, Ama iş şartları.

Özetle:

Biz kimin itiraz kurumsal çapta bazı çekirdek MOSS özelliklerini göstermek için kullanabilirsiniz bir sanal ortamı yarattık.

Böylece kullanıcılar MOSS üzerinde odaklanabilirsiniz ve varlıkları üzerinde batağa değil kolayca anlaşılır ve ortak iş varlıkları model / kendilerini örnekler.

İş kullanıcıları "ödev tez oturumlarıyla yürüme" doldurun ve kendi ilk kesim içerik türleri tasarlamak için kullanmak yetkili oldukları excel belgelerinin şeklinde.

Nihayet, Biz zaman içinde demolar yapmak gibi, istemcinin ekip üyeleri kendilerini daha ileri taşımak mümkün hale, demo kendilerini Dünün ve genellikle daha karmaşık sorunlara çözüm bulmak için bize geri kalanı kadar boş, gibi genel sınıflandırma, karmaşık iş akışları, BDC ve benzeri.

YOSUN: İşlevsel örneği – özel veri türü

İş senaryosu:

MOSS kurumsal çapta uygulanması için üretim şirketi ile 30+ siteler ve birkaç düzine şirket bölümler.

İş hedefi:

Çok sayıda iş grupları rağmen (bölümler, Mekanlar, vb), belirli verileri genel bir düzeyde muhafaza edilmelidir. Örneğin, şirketin tüm fiziksel konumlar bir yetkili ana listesi (e.g. üretim tesisleri, ambar konumunuz, satış ofisleri) Merkezi bir konumda muhafaza edilmelidir.

Teknik bir sorun:

Kurumsal sınıflandırma kullanarak birden çok site koleksiyonlarındaki uygulanmıştır. Biz isterdi özel WSS liste içinde fiziksel konumlar yetkili listesi oluşturmak için. O zaman, Ne zaman biz bir içerik türüne sahip bir sütun için gerekli (veya bir liste veya doktor kütüphanesine eklenir sütun) Bu kurumsal yerlerde bulunan, "arama kullanarak bir sütun oluşturmak" veri türü ve nokta bu ana listesi.

Ne yazık ki, Arama veri türleri bir kaynak listesi "yerel olarak erişmeniz gerekir" yetkili listemize site koleksiyonları dağıtılamaz anlamı.

Teknik çözüm:

Yeni bir özel veri türü temel alınarak SPField hayata ve temsil edilen bir DropDownList kimin ListItems ana WSS listeden doldurmak UI alet.

Adı verilen yeni bir site koleksiyonu hazırlandı "http://localhost/EnterpriseData". Orada, "Kurumsal yerlerde" adında özel bir liste oluşturdu. Bu liste, sadece standart "başlığını kullanır" gerçek şirket konumların listesini içeren alan.

Bir WSS içindeki özel veri türü oluşturmak için birkaç ayrı adımları takip. Onlar:

  1. SPField devralan bir sınıf tanımlayın (bir ihtiyaç halinde diğer alanlardan miras).

İşte bunun için kod:

Genel sınıf XYZZYCorporateLocationField : SPFieldText
{
Genel XYZZYCorporateLocationField
(SPFieldCollection alanları, dize typeName, dize displayName)
: Bankası(alanları, typeName, displayName) { }

Genel XYZZYCorporateLocationField
(SPFieldCollection alanları, dize displayName)
: Bankası(alanları, displayName) { }

Genel geçersiz kılma BaseFieldControl FieldRenderingControl
{
Al
{
BaseFieldControl kontrol = Yeni XYZZYCorporateLocationFieldControl();
Denetim. FieldName = Bu.InternalName;
geri dönmek Denetim;
} //Al
} // fieldrenderingcontrol

Genel geçersiz kılma dize GetValidatedString(Nesne değer)
{
Eğer (Bu.Gerekli || değeri. ToString().Eşittir(Dize.Boş))
{
atmak Yeni SPFieldValidationException ("Bölümü atanmış değil.");
}
geri dönmek Bankası.GetValidatedString(değer);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Temel alan denetiminden devralan bir sınıf tanımlayın, olarak:

Genel sınıf XYZZYCorporateLocationFieldControl : BaseFieldControl
{
korumalı DropDownList XYZZYCorporateLocationSelector;

korumalı geçersiz kılma dize DefaultTemplateName
{
Al
{
geri dönmek "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

Genel geçersiz kılma Nesne Değer
{
Al
{
EnsureChildControls();
geri dönmek Bu.SelectedValue XYZZYCorporateLocationSelector.;
} // Al
ayarla
{
EnsureChildControls();
Bu.XYZZYCorporateLocationSelector.SelectedValue = (dize)Bu.ItemFieldValue;
} // ayarla
} // nesne değeri geçersiz

korumalı geçersiz kılma geçersiz CreateChildControls()
{

Eğer (Bu.Alan == NULL || Bu.ControlMode == SPControlMode.Görüntüleme)
geri dönmek;

Bankası.CreateChildControls();

Bu.XYZZYCorporateLocationSelector =
(DropDownList)FindControl TemplateContainer.("XYZZYCorporateLocationSelector");

Eğer (Bu.XYZZYCorporateLocationSelector == NULL)
atmak Yeni Özel durum("HATASI: Yüklenemiyor. ASCX dosya!");

Eğer (!Bu.IsPostBack sayfa.)
{

kullanma (SPSite Site = Yeni SPSite("http://localhost/enterprisedata"))
{
kullanma (SPWeb Web sitesi =. OpenWeb())
{

SPList.Update() currentList web =. Listeler["Kurumsal yerlerde"];

foreach (SPItem XYZZYCorporateLocation içinde currentList.Items)
{
Eğer (XYZZYCorporateLocation["Başlığı"] == NULL) devam etmek;

dize Title;
Title = XYZZYCorporateLocation["Başlığı"].ToString();

Bu.XYZZYCorporateLocationSelector.Items.Add
(Yeni ListItem(Title, Title));

} // foreach

} // SPWeb web kullanarak site.openweb =()
} // SPSite sitesini kullanarak yeni spsite =("http://localhost/enterprisedata")

} // Eğer değilse geri gönderme

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Yukarıdaki kod, temelde DropDownList WSS özel listesinde yer alan değer ile yerleştirmek için mantığını uygular http://localhost/enterprisedata ve adlandırılmış "Kurumsal bölümler".

Bir tek .cs dosyası her iki sınıf tanımlanan, Bu derlenmiş ve GAC içine koy (güçlü gerekli, Elbette).

  1. Denetim şablonu uygulamak (.ascx) görüldüğü gibi:

<%@ Denetim Dil"C# =" Devralır="Microsoft.SharePoint.Portal.serveradmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Sürüm 12.0.0.0, kültür = bağımsız =,PublicKeyToken = 71e9bce111e9429c" compilationMode"Her zaman =" %>
<%
@ Üye ol Tagprefix"wssawc =" Namespace="Microsoft.SharePoint.WebControls" Derleme="Microsoft.SharePoint, Sürüm 12.0.0.0 =, Kültür tarafsız =, PublicKeyToken = 71e9bce111e9429c" %> <%@ Üye ol Tagprefix"SharePoint =" Namespace="Microsoft.SharePoint.WebControls" Derleme="Microsoft.SharePoint, Sürüm 12.0.0.0 =, Kültür tarafsız =, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate KİMLİĞİ"XYZZYCorporateLocationFieldControl =" runat= "sunucu">
<Şablon>
<ASP:DropDownList KİMLİĞİ"XYZZYCorporateLocationSelector =" runat= "sunucu" />
</Şablon>
</
SharePoint:RenderingTemplate>

Yukarıda c kaydedilir:\Program filescommon filesmicrosoft sharedweb server extensions12controltemplates.

  1. Nihayet, Biz içine kaydetmek için bir XML dosyası oluşturmak..... 12XML dizini. Bu bizim özel veri türü tanımlar CAML olduğunu ve benim gibi, Bu gibi görünüyor:

<?XML Sürüm="1.0" kodlama="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Alan Adı="TypeName">CorporateLocations</Alan>
<
Alan Adı="ParentType">Metin</Alan>
<
Alan Adı="TypeDisplayName">Kurumsal yerlerde</Alan>
<
Alan Adı="TypeShortDescription">Üretim veya diğer özellikleri de dahil olmak üzere tüm XYZZY kurumsal yerlerde.</Alan>
<
Alan Adı="UserCreatable">GERÇEK</Alan>
<
Alan Adı="ShowInListCreate">GERÇEK</Alan>
<
Alan Adı="ShowInDocumentLibraryCreate">GERÇEK</Alan>
<
Alan Adı="ShowInSurveyCreate">GERÇEK</Alan>
<
Alan Adı="ShowInColumnTemplateCreate">GERÇEK</Alan>
<
Alan Adı="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Sürüm 1. 0 =, Kültür tarafsız =, PublicKeyToken = b0b19e85410990c4</Alan>
<
RenderPattern Adı="DisplayPattern">
<
Anahtarı>
<
İfade>
<
Sütun />
</
İfade>

<Dava Değer=""/>

<Varsayılan>
<
HTML>
<![CDATA[
<Stil span = "renk:Kırmızı"><b>]]>
</
HTML>

<
Sütun SubColumnNumber="0" HTMLEncode="GERÇEK"/>

<HTML><![CDATA[</b></yayılma>]]></HTML>

</
Varsayılan>
</
Anahtarı>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Bu XML dosyası özel veri türü WSS "kütüphane ekler." ve GAC karşı eşleşen derleme vardı.

Bu bitler yerine taşıdıktan sonra, iisreset server ve bu güzel çalışma tüm başlamak gerekir.

YOSUN: Özel bir liste güncelleştiriliyor

Orada birçok iyi örnek SDK ile özel listeleri güncelleme. İşte yeni bir.

İş sorunu: InfoPath formu online girmek için olanaklı kılmak kullanıcı talepleri satın tasarlanmıştır. PO sayı-meli var olmak geleneksel sıra talep tamsayı değerlerine dayalı ve otomatik olarak hesaplanan.

İş çözümü: İki sütun içeren özel bir yosun liste oluşturma: "ControlField" ve "ControlValue". Değer sütununda sonraki satın alma talep numarası içerir. Genel "kontrol unutmayın" gerektiğinde kullanılabilir gelecekteki denetim alanları için adlandırma kuralı sağlar.

Teknik çözüm: InfoPath istemci tarafından erişilen bir web servisi yaratmak. Web hizmeti bir sonraki satın alma talep numarası geri döndürür ve liste değerini güncelleştirir.

Öğrenilen dersler:

  • Bu web hizmeti veri kaynağı olarak InfoPath formu ekleyerek., Udc için dönüştürmek ve bir veri bağlantısı kitaplığında depolamak gerekli buldum.
  • Ayrıca üzerinden Merkezi Hizmetler Yönetim etki alanları arası komut dosyası çalıştırma etkinleştirmek gerekli bulundu // Uygulama Yönetimi // Form sunucu yapılandırması.
  • Formu web hizmetine erişmek için çalıştı ilk kez, bir süre alır ve zaman zaman, o zaman dışarı istiyorsunuz. Zaman aşımı ayarları'nı form sunucu yapılandırma ayarları ile oynuyordu ve yardımcı olacak gibiydi.

Kodu:

kullanma Sistem;
kullanma System.Web;
kullanma System.Web.Services;
kullanma System.Web.Services.Protocols;
kullanma Microsoft.SharePoint;
kullanma System.Configuration;

[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
Genel sınıf PoService : System.Web.Services.WebService
{
Genel PoService () {

//Eğer istimal ertesi gün içini kaplamak bileşenleri tasarlanmış uncomment
//InitializeComponent();
}

/// <Özet>
/// Sonraki PO numarası sharepoint po numarası kontrol listesi elde.
/// Bu listede artışı PO numarası.
/// </Özet>
/// <döndürür></döndürür>
[WebMethod]
Genel dize GetNextPoNumber()
{
dize SpPoControlSiteName; // PO denetim listesi ev sahipliği yapan gerçek MOSS sitenin adı.
dize SpPoControlListName; // Po denetimi içeren gerçek MOSS listesi adı.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

dize nextPoReqNumber = "xyzzy";

kullanma (SPSite Site = Yeni SPSite(SpPoControlSiteName))
{
kullanma (SPWeb Web sitesi =. OpenWeb())
{

SPList.Update() currentList web =. Listeler[SpPoControlListName];

foreach (SPItem controlItem içinde currentList.Items)
{

Eğer (((dize)controlItem["ControlField"]).Eşittir("NextPoNumber"))
{
nextPoReqNumber = (dize)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Dönüştürme.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] int_nextPoReqNumber =;
controlItem.Update();
}

} // Bulma, okuma ve listedeki PO numarası güncelleştirme.


} // SPWeb web kullanarak site.openweb =()
} // SPSite sitesini kullanarak yeni spsite =("http://localhost/mizuho")

geri dönmek nextPoReqNumber;

}
}