Arsip Kategori: SharePoint

Bagaimana memecahkan masalah kesalahan SharePoint misterius.

Sekilas pandang:

Debugging sulit ketika mengembangkan fungsionalitas kustom untuk Windows SharePoint Services 3.0 (WSS) atau Microsoft Office SharePoint Server (MOSS). Penyebab utama adalah bahwa SharePoint biasanya permukaan sangat sedikit informasi diagnostik pada web browser ketika sebuah kesalahan terjadi. Blog entry ini menjelaskan cara untuk menemukan sistem yang dihasilkan diagnostik informasi tambahan yang sering dapat memberikan tambahan yang sedikit detail yang satu kebutuhan untuk mengidentifikasi akar penyebab. Hal ini kemudian dapat mengakibatkan pemecahan masalah.

Saya telah menggunakan teknik ini dengan sukses besar untuk memecahkan kesalahan sebaliknya misterius.

Pendekatan:

SharePoint menyimpan banyak informasi ke log diagnostik dalam file log dalam 12 sarang.

"12 Sarang" biasanya terletak di "C:\Program FilesCommon program SharedWeb Server Extensions12 ". (Saya tidak yakin jika dimungkinkan untuk 12 sarang untuk tinggal di mana saja lain, Sebenarnya).

Idenya adalah untuk mencari file log saat ini, memaksa kesalahan dan kemudian dengan cepat membuka log file. File log ini ditandai dengan:

  • Jumlah informasi yang berlebihan. SharePoint menghasilkan jumlah yang sangat besar informasi diagnostik dan menulis ke file log yang sangat cepat. Anda harus cepat dengan jari-jari untuk menangkap itu.
  • Multiplisitas. SharePoint tidak menulis ke file log satu tapi agak menghasilkan beberapa file log dalam urutan.
  • Copy dan paste baik ke MS Excel.

Metode favorit saya:

  1. Buka windows explorer menunjuk ke 12 hivelogs.
  2. Semacam pandangan untuk menunjukkan dengan tanggal modifikasi (Grup yang terbaru dahulu).
  3. Sorot file log terkini.
  4. Di jendela browser web, memaksa kesalahan terjadi.
  5. Dengan cepat membuka file log saat ini dan menyalin isinya ke MS Excel.
  6. Melompat ke akhir dan menganalisis masukan yang relevan.

Catatan lain:

Secara default, log diagnostik terletak di 12 hiveLOGS direktori.

MS Best practices (seperti Mike T. Microsoft) menyatakan bahwa file log harus disimpan ke hard drive terpisah. Salah satu hal ini melalui Pusat admin. Administrator sistem dapat melakukan ini, dalam hal ini Anda akan jelas perlu untuk menemukan file log tidak bukan default 12 lokasi sarang).

Catatan ini membahas masalah-masalah seperti:

  • Alur kerja SharePoint gagal untuk memulai karena adanya kesalahan internal.
  • (lagi yang bisa ditambahkan dari waktu ke waktu)
  • Catatan ini telah membantu mendiagnosa kesalahan alur kerja (misalnya. "Alur kerja gagal untuk memulai karena adanya kesalahan internal").

MOSS: Pengantar organisasi yang efektif

(Catatan ini salib diposting antara http://paulgalvin.spaces.live.com/blog/ dan http://blogs.conchango.com)

Posting di situs ini saya sendiri dan tidak selalu mewakili posisi Conchango's, strategi atau pendapat.

Sekilas pandang:

Catatan ini menjelaskan beberapa informasi latar belakang pada besar (3,000 pengguna) Microsoft Office SharePoint Server (MOSS) peluncuran dan apa yang kita lakukan untuk mendapatkan proyek bergulir sedemikian rupa bahwa klien bahagia dan tegas jalan yang berakhir dengan penuh adopsi dari set fitur MOSS. Seperti menulis entri, Kami adalah sekitar 50% lengkap dengan fase pertama proyek. Sebagai hal-hal kemajuan, Aku akan memperbarui entri ini dan/atau menulis entri baru.

Dalam kasus khusus ini, perusahaan sudah terinstal SharePoint Portal Server 2003. Kelompok itu diinstal produk di semacam "Mari kita lihat jika setiap orang peduli" mode. Ini dengan cepat diadopsi oleh banyak pengguna bisnis dan menjadi sangat populer di perusahaan besar. Dapat Anda bayangkan, ini bukanlah strategi peluncuran terbaik (yang klien mengakui) dan ketika MOSS tiba di tempat kejadian, klien memutuskan untuk "melakukannya dengan benar" menyewa kita untuk membantu mereka.

Salah satu pertanyaan yang tengah dihadapi kita ketika kita mulai melaksanakan proyek ini adalah: Bagaimana kami memperkenalkan MOSS untuk klien ini? Mengingat bahwa klien telah memiliki pengalaman dengan SharePoint, kami bertanya-tanya — kita harus lakukan "diferensial" pelatihan atau apakah kita mulai dari tanah up? Setelah bekerja dengan kunci pengguna, kami bertekad bahwa memperlakukan ini sebagai proyek lapangan hijau yang membuat lebih masuk akal.

Keputusan itu memberikan titik awal tetapi masih meninggalkan kami dengan kebutuhan utama mengetahui strategi yang baik untuk menggelar MOSS perusahaan. MOSS adalah hewan besar … ini mencakup manajemen konten, manajemen dokumen, pencarian, keamanan, target audiens, manajemen proyek, "empat Hebat" template, alur kerja, Bisnis data konektor, dll. Pasangan ini dengan fakta bahwa itu adalah organisasi besar yang dapat benar-benar membuat penggunaan MOSS utama hampir setiap fitur dan Anda memiliki bakat besar proyek dengan jangkauan perusahaan dan banyak hal baik yang terjadi.

Kita dihadapkan dengan masalah ini berkali-kali … MOSS telah perusahaan mencapai dengan perusahaan fitur-set, Namun bahkan agak canggih klien memiliki waktu sulit mental menyerap fitur tersebut, Biarkan sendirian memasukkan sebagian kecil cukup besar dari mereka ke dalam rutinitas sehari-hari.

Saya tidak punya solusi ajaib untuk masalah. Sebaliknya alamat saya hanya langkah pertama yang kita telah diambil dengan klien untuk memimpin mereka menyusuri jalan untuk sukses jangka panjang adopsi.

Ruang lingkup:

Sebanyak yang saya ingin tim untuk menyusun rencana proyek yang termasuk tonggak seperti itu sebagai "PoepleSoft integrasi via BDC Completed", "Baru produk Departemen salib peluncuran alur kerja lengkap" dan "Manajemen Eksekutif KPI's diterima", Aku harus menetap untuk sesuatu yang kurang. Hal ini bukan untuk mengatakan bahwa "kurang" buruk. Sebenarnya, "kurang" adalah bahwa kami memutuskan untuk peluncuran awal mil di depan di mana mereka tidak sebelum kita mulai. Dalam kasus kami, "kurang" berubah menjadi:

  • Manajemen dokumen yang sederhana dengan menggunakan dokumen Perpustakaan, Versi kontrol dan konten jenis.
  • Efektif pencarian berdasarkan jenis konten dan disesuaikan pencarian terlebih dahulu (melalui properti yang dikelola, XSLT untuk menghasilkan hasil yang cantik, dll).

Selain fitur perusahaan-lebar di atas (berarti bahwa mereka untuk memutar untuk semua Departemen dan pengguna), Kami menambahkan berikut singleton dalam lingkup mini-proyek:

  • Bukti dari konsep BDC integrasi.
  • Proses alur kerja multi-langkah dan multi cabang yang diciptakan melalui SPD.
  • Bentuk InfoPath kompleks.
  • KPI permukaan untuk beberapa proses bisnis (mungkin HR akuisisi bakat dalam kasus kami, Meskipun itu mungkin berubah).

Cakupan di sini bukanlah 100% akurat tetapi mewakili pendekatan kami, dan cukup untuk tujuan saya di sini, yang adalah untuk menjelaskan apa yang saya anggap sebagai "efektif" Pengenalan Lumut yang akan mengatur klien tegas menyusuri jalan emas untuk penuh MOSS adopsi.

Aku tidak akan menulis lebih banyak tentang singleton dalam entri ini. Saya ingin menunjukkan bahwa ini adalah bagian dari strategi kami over arching. Idenya adalah untuk menerapkan dokumen manajemen dan Cari fitur inti bagi semua pengguna namun menyediakan sangat fungsional, contoh-contoh nyata dan sangat perwakilan tinggi inti MOSS fitur-fitur lainnya yang hanya di luar kemampuan sebagian besar pengguna untuk menyerap pada tahap awal ini. Namun, mereka akan "out there" dan satu harapan bahwa unit bisnis lain akan tahu atau belajar tentang mereka dan ingin fitur tersebut untuk diri mereka sendiri, mengarah ke lebih besar adopsi. Kisah sukses singleton ini juga berfungsi untuk memberikan tim penjualan kami "amunisi" untuk berhasil memenangkan kedua, ketiga dan n-fase proyek.

Apa yang menurut kami memperkenalkan dan mengapa?

Memiliki diselesaikan pada manajemen dokumen dan pencarian sebagai dasar perusahaan-lebar persyaratan, kami perlu mulai mengumpulkan rincian. Sebagai masalah praktis, ini berkisar pada pemahaman dokumen mereka dan yang akhirnya dipetakan untuk memahami jenis konten.

Saya telah menemukan sangat sulit untuk menjelaskan jenis konten tanpa ajudan visual. Rakyat yang lebih teknis dapat berjalan dari sebuah diskusi tentang jenis konten ketika CT dijelaskan dalam istilah database. "A CT mirip dengan tabel database, ini memiliki kolom dan kolom didefinisikan dalam istilah tipe data, tetapi CT jenis data mencakup lebih dari bulat/tanggal sederhana, tetapi juga "pilihan" dan "lookup" dan sejenisnya." Kita bisa bicara tentang "memperluas" jenis konten, banyak seperti dapat mewarisi fungsionalitas dari kelas dasar dalam bahasa berorientasi objek. Namun hal ini jelas tidak berguna untuk orang admin Departemen transportasi yang memiliki latar belakang teknis yang tidak. Yaitu, hampir semua orang yang penting dalam peluncuran MOSS.

Menggunakan papan putih rapuh. Saya telah disajikan ide jenis konten dan ditarik brilian (atau sehingga mereka tampak) gambar jenis konten dan apa yang mereka lakukan untuk Anda dalam pencarian dan bagaimana mereka dapat diperluas, dll. Di ujung, itu tidak merasa seperti beberapa lampu telah menghidupkan, tapi gambar papan putih yang dihasilkan kekacauan.

Ini membawa kita ke tempat pendaratan saat ini dan jadi jauh paling efektif kami: sebuah MOSS sandbox situs dikonfigurasi untuk menunjukkan fitur-fitur ini.

Menggunakan situs sandbox, kami menunjukkan:

  • Jenis konten:
    • Menciptakan CT dengan beberapa tipe data (teks, tanggal, pilihan, Boolean, lookup, dll).
    • Memperluas CT dengan menciptakan CT baru berdasarkan orangtua.
    • Mencari dokumen menggunakan CT metadata.
  • Dokumen perpustakaan:
    • Bergaul CT tunggal dengan Perpustakaan.
    • Apa yang terjadi ketika kita meng-upload dokumen untuk perpustakaan yang?
    • Bergaul beberapa CT dengan perpustakaan doc.
    • Apa yang terjadi ketika kita meng-upload dokumen untuk perpustakaan yang?
    • Penyaringan dan pengurutan melalui kepala kolom di doc lib.
    • Dokumen perpustakaan dilihat:
      • Menyortir
      • Pengelompokan
      • "Catatan cepat" (Tampilan lembar data)
      • "Data ditandai" (untuk membantu dengan migrasi untuk MOSS dari sumber lain konten; lebih di bawah ini).

Situs Sandbox:

Kami merancang situs sandbox kami untuk merupakan fitur permanen di lingkungan pengembangan untuk digunakan untuk tujuan pelatihan lama setelah kami selesai proyek dan termasuk beberapa artefak seperti yang dijelaskan:

Jenis konten:

Kita mendefinisikan jenis konten berikut: Faktur, Order Pembelian, Layanan faktur.

Kami memilih faktur dan pembelian urutan karena mereka lebih atau kurang universal di bawah
entitas berdiri. Semua orang dalam bisnis mengerti bahwa faktur adalah permintaan untuk pembayaran untuk Pelanggan untuk jumlah dikeluarkan pada tertentu tanggal harus dibayar sesuai dengan beberapa syarat-syarat pembayaran. Hal ini menyebabkan definisi alam CT yang kami sebut "pelatihan faktur" (untuk membedakannya dari jenis lain faktur). Order pembelian demikian pula dengan mudah didefinisikan. Kami juga membuat "pelatihan Layanan faktur" dengan menciptakan CT baru berdasarkan "pelatihan faktur" CT dan ditambahkan hanya satu kolom, "Layanan diberikan".

Dengan di atas, kita dapat tunjukkan beberapa fitur kunci dari CT sekarang tanpa mendapatkan macet mencoba untuk menjelaskan konsep pertama; Semua orang sudah mengerti apa yang kita maksud dengan "faktur" dan "order pembelian" dan bukannya mampu fokus pada mekanisme CT sendiri.

Daftar kustom:

CT dengan kolom jenis "lookup" Arahkan ke kustom daftar atau dokumen Perpustakaan. Kami menggunakan ini secara ekstensif dan untuk sandbox, kami menciptakan satu mendukung daftar kustom yang berisi pelanggan. Kami memilih pelanggan karena itu adalah sebuah konsep yang mudah untuk memahami dan mudah untuk menunjukkan. CT faktur memiliki sebuah kolom, "pelanggan" yang didefinisikan jenis "lookup" yang menunjukkan daftar ini.

Kami membuat daftar kustom serupa untuk mengelola "vendor" untuk Order Pembelian"" CT.

Dokumen perpustakaan:

Kami membuat dua dokumen Perpustakaan: "Faktur" dan "Campuran dokumen".

Kita mengkonfigurasi faktur dokumen perpustakaan untuk mengelola dokumen-dokumen hanya jenis CT "Faktur".

Kita mengkonfigurasi "campuran dokumen" Perpustakaan untuk mengelola semua tiga CT.

Membuat beberapa pandangan yang menunjukkan penyortiran, penyaringan, Lembar data dan pengelompokan.

Pencarian:

Kami ditetapkan dua baru properti dikelola dan dipetakan mereka ke nomor Invoice dan pelanggan.

Kami menciptakan situs pencarian disesuaikan muka baru dan dimodifikasi untuk memungkinkan pengguna untuk mencari "faktur" menggunakan mereka dua sifat dipetakan.

Memodifikasi XSLT sehingga nomor invoice dan pelanggan, ketika hadir, muncul dalam tabel HTML di warna cerah. Tujuan di sini adalah untuk menunjukkan bahwa format tersebut mungkin.

Puting ini semua bersama:

Kami mengatur kunci pengguna untuk berpartisipasi dalam demo.

Kami mengikuti script sederhana ini:

  1. Menjelaskan arti dan tujuan CT, menggunakan faktur dan pesanan pembelian sebagai contoh.
  2. Menunjukkan definisi CT faktur sementara secara bersamaan meyakinkan mereka bahwa mereka tidak perlu menggunakan layar tersebut sendiri, hanya mengambil konsep-konsep.
  3. Pergi ke perpustakaan dokumen faktur.
  4. Meng-upload dokumen.
  5. Menunjukkan bahwa pelanggan tarik-turun benar-benar bersumber dari daftar kustom.
  6. Menambah pelanggan baru ke daftar pelanggan dan kemudian memperbarui faktur baru saja upload meta data dengan pelanggan baru dibuat.
  7. Beralih ke "campuran dokumen" Perpustakaan dan meng-upload dokumen. Menjelaskan bagaimana sistem petunjuknya untuk jenis dokumen.
  8. Pergi kembali ke pustaka dokumen faktur dan menunjukkan bagaimana mengklik pada nama kolom mengubah urutan.
  9. Menunjukkan tingkat kolom penyaringan.
  10. Menunjukkan pandangan yang berbeda yang menunjukkan multi-level penyortiran, penyaringan dan pengelompokan.
  11. Tampilkan tampilan lembar data.
  12. Menjelaskan tujuan dari "ditandai dokumen" Lihat.
  13. Beralih ke pencarian lanjutan disesuaikan.
  14. Sekarang, Baru saja upload dokumen harus telah dirayapi dan diindeks, Jadi melakukan pencarian yang menunjukkan kemampuan untuk menemukan bahwa faktur melalui properti dipetakan.
  15. Kami menunjukkan perbedaan antara mencari melalui vs dipetakan properti. hanya teks pencarian.

Pada titik ini, kita lebih atau kurang selesai dengan demo. Tampaknya mengambil sekitar 30 untuk 45 menit, tergantung pada berapa banyak orang pertanyaan bertanya.

Kami kemudian mengirim mereka kembali ke meja mereka dengan "PR". Ini terdiri dari sederhana excel spreadsheet di mana kita meminta mereka untuk menentukan bagi kita apa yang mereka pikirkan mereka butuhkan dalam hal CT, baik di tingkat tinggi (tujuan hanya nama dan bisnis) kolom dan jenis data yang akan mereka menyimpan di kolom. Kami tidak meminta mereka untuk menentukan tipe data kolom di Lumut persyaratan, tetapi istilah bisnis.

Dalam ringkasan:

Kami telah menciptakan sebuah lingkungan bak pasir yang bisa kita gunakan untuk menunjukkan beberapa inti MOSS fitur yang menarik perusahaan-lebar.

Kami memiliki model entitas bisnis yang mudah dipahami dan umum sehingga pengguna dapat fokus pada MOSS dan tidak terjebak pada entitas / contoh diri.

Pengguna bisnis berjalan menjauh dari sesi tesis dengan "PR" dalam bentuk excel dokumen yang mereka sekarang kompeten untuk mengisi dan menggunakan untuk merancang sendiri jenis konten pertama-potong.

Akhirnya, Ketika kita melakukan demo dari waktu ke waktu, anggota tim klien sendiri menjadi lebih mampu untuk membawa ke depan, melakukan demo sendiri dan umumnya membebaskan kita naik untuk bekerja pada isu-isu yang lebih kompleks, seperti taksonomi global, kompleks Workflow, BDC dan sejenisnya.

MOSS: Contoh fungsional-jenis Data kustom

Bisnis skenario:

Perusahaan-lebar pelaksanaan MOSS untuk perusahaan manufaktur dengan 30+ situs dan beberapa lusin Departemen.

Tujuan bisnis:

Meskipun banyak kelompok bisnis (Departemen, Lokasi, dll), data tertentu harus dipelihara di tingkat global. Misalnya, Daftar master otoritatif semua lokasi fisik perusahaan (misalnya. Fasilitas manufaktur, lokasi gudang, kantor penjualan) harus dipelihara dalam lokasi.

Masalah teknis:

Taksonomi enterprise dilaksanakan menggunakan situs beberapa koleksi. Kami akan senang untuk membuat daftar otoritatif lokasi fisik di WSS daftar kustom. Kemudian, Ketika kita diperlukan untuk memiliki sebuah kolom di jenis konten (atau kolom yang ditambahkan ke daftar atau doc Perpustakaan) yang berisi lokasi perusahaan, kita akan menciptakan sebuah kolom yang menggunakan "lookup" DataType dan titik ini master daftar.

Sayangnya, lookup datatypes harus mengakses sumber daftar "lokal" berarti bahwa daftar otoritatif kami tidak meliputi koleksi situs.

Solusi teknis:

Menerapkan tipe data kustom baru dilaksanakan berdasarkan SPField dan diwakili sebagai DropDownList di UI ListItems yang mengisi dari daftar WSS master.

Kami membuat kumpulan situs baru yang disebut "http://localhost/EnterpriseData". Ada, kami membuat daftar kustom bernama "Perusahaan lokasi". Daftar ini hanya menggunakan standar "judul" bidang berisi daftar lokasi perusahaan aktual.

Seseorang mengikuti beberapa langkah diskrit untuk membuat kustom data jenis di WSS. Mereka:

  1. Mendefinisikan kelas yang mewarisi SPField (satu mungkin mewarisi dari bidang lain jika diperlukan).

Berikut adalah kode untuk itu:

Umum kelas XYZZYCorporateLocationField : SPFieldText
{
Umum XYZZYCorporateLocationField
(SPFieldCollection bidang, string typeName, string displayName)
: Base(bidang, typeName, displayName) { }

Umum XYZZYCorporateLocationField
(SPFieldCollection bidang, string displayName)
: Base(bidang, displayName) { }

Umum override BaseFieldControl FieldRenderingControl
{
mendapatkan
{
BaseFieldControl kontrol = baru XYZZYCorporateLocationFieldControl();
kontrol. Nama field tidak dikenal = ini.InternalName;
kembali kontrol;
} //mendapatkan
} // fieldrenderingcontrol

Umum override string GetValidatedString(objek nilai)
{
Jika (ini.Diperlukan || nilai. ToString().Sama dengan(String.Kosong))
{
melempar baru SPFieldValidationException ("Departemen tidak diberikan.");
}
kembali Base.GetValidatedString(nilai);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Mendefinisikan kelas lain yang mewarisi dari kontrol dasar bidang, seperti dalam:

Umum kelas XYZZYCorporateLocationFieldControl : BaseFieldControl
{
dilindungi DropDownList XYZZYCorporateLocationSelector;

dilindungi override string DefaultTemplateName
{
mendapatkan
{
kembali "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

Umum override objek Nilai
{
mendapatkan
{
EnsureChildControls();
kembali ini.XYZZYCorporateLocationSelector.SelectedValue;
} // mendapatkan
set
{
EnsureChildControls();
ini.XYZZYCorporateLocationSelector.SelectedValue = (string)ini.ItemFieldValue;
} // set
} // menimpa objek nilai

dilindungi override Batal CreateChildControls()
{

Jika (ini.Bidang == null || ini.ControlMode == SPControlMode.Tampilan)
kembali;

Base.CreateChildControls();

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

Jika (ini.XYZZYCorporateLocationSelector == null)
melempar baru Pengecualian("KESALAHAN: Tidak dapat memuat. ASCX file!");

Jika (!ini.Halaman IsPostBack.)
{

menggunakan (SPSite situs = baru SPSite("http://localhost/enterprisedata"))
{
menggunakan (SPWeb Web = site. OpenWeb())
{

SPList currentList = web. Daftar["Lokasi perusahaan"];

foreach (SPItem XYZZYCorporateLocation dalam currentList.Items)
{
Jika (XYZZYCorporateLocation["Judul"] == null) «««;

string theTitle;
theTitle = XYZZYCorporateLocation["Judul"].ToString();

ini.XYZZYCorporateLocationSelector.Items.Add
(baru ListItem(theTitle, theTitle));

} // foreach

} // menggunakan spweb web = site.openweb()
} // menggunakan spsite site = new spsite("http://localhost/enterprisedata")

} // Jika tidak postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Kode di atas pada dasarnya mengimplementasikan logika untuk mempopulasikan DropDownList dengan nilai-nilai dari daftar kustom WSS terletak di http://localhost/enterprisedata dan bernama "Departemen perusahaan".

Aku didefinisikan kedua kelas dalam file tunggal dialokasikan, ini dikompilasi dan memasukkannya ke dalam GAC (kuat diperlukan, Tentu saja).

  1. Menerapkan template kontrol (.ascx) seperti yang ditunjukkan:

<%@ Kontrol Bahasa= "C#" Mewarisi="Microsoft.SharePoint.portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.portal,Versi = 12.0.0.0, Culture = neutral,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Selalu" %>
<%
@ Daftar Tagprefix= "wssawc" Namespace="Microsoft.SharePoint.WebControls" Majelis="Microsoft.SharePoint, Versi = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Daftar Tagprefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" Majelis="Microsoft.SharePoint, Versi = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID= "XYZZYCorporateLocationFieldControl" runat= "server">
<Template>
<ASP:DropDownList ID= "XYZZYCorporateLocationSelector" runat= "server" />
</Template>
</
SharePoint:RenderingTemplate>

Atas disimpan ke c:\Program filescommon program sharedweb server extensions12controltemplates.

  1. Akhirnya, kami menciptakan sebuah file XML untuk menyimpan ke... 12XML direktori. Ini adalah CAML yang mendefinisikan tipe data kustom kami dan sebagai contoh saya, terlihat seperti ini:

<?XML Versi="1.0" encoding="utf-8" ?>
<
FieldTypes>
<
FieldType>
<
Bidang Nama="TypeName">CorporateLocations</Bidang>
<
Bidang Nama="ParentType">Teks</Bidang>
<
Bidang Nama="TypeDisplayName">Lokasi perusahaan</Bidang>
<
Bidang Nama="TypeShortDescription">Semua perusahaan tidak ada lokasi termasuk fasilitas manufaktur atau lainnya.</Bidang>
<
Bidang Nama="UserCreatable">BENAR</Bidang>
<
Bidang Nama="ShowInListCreate">BENAR</Bidang>
<
Bidang Nama="ShowInDocumentLibraryCreate">BENAR</Bidang>
<
Bidang Nama="ShowInSurveyCreate">BENAR</Bidang>
<
Bidang Nama="ShowInColumnTemplateCreate">BENAR</Bidang>
<
Bidang Nama="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Versi = 1.0.0.0, Culture = neutral, PublicKeyToken = b0b19e85410990c4</Bidang>
<
RenderPattern Nama="DisplayPattern">
<
Switch>
<
Expr>
<
Kolom />
</
Expr>

<Kasus Nilai=""/>

<Standar>
<
HTML>
<![CDATA[
<span gaya = "warna:Merah"><b>]]>
</
HTML>

<
Kolom SubColumnNumber="0" HTMLEncode="BENAR"/>

<HTML><![CDATA[</b></rentang>]]></HTML>

</
Standar>
</
Switch>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
File XML ini menambah tipe data kustom WSS "Perpustakaan" dan pertandingan melawan GAC telah Majelis.

Setelah semua bit ini pindah ke tempatnya, iisreset pada server dan itu harus semua mulai bekerja dengan baik.

MOSS: Memperbarui daftar kustom

Ada banyak contoh yang baik dari memperbarui daftar kustom melalui SDK. Di sini adalah lain.

Masalah bisnis: Bentuk InfoPath telah dirancang yang memungkinkan pengguna untuk memasukkan online membeli requisitions. PO permintaan nomor harus tradisional urutan berdasarkan nilai-nilai integer dan dihitung secara otomatis.

Solusi bisnis: Membuat daftar MOSS kustom yang mengandung dua kolom: "ControlField" dan "ControlValue". Nilai kolom berisi nomor permintaan pembelian berikutnya. Perhatikan bahwa generik "kontrol" Konvensi penamaan menyediakan untuk mengendalikan masa depan bidang yang dapat digunakan sebagai diperlukan.

Solusi teknis: Membuat layanan web diakses oleh klien InfoPath. Layanan web kembali kembali nomor permintaan pembelian berikutnya dan update nilai dari daftar.

Pelajaran:

  • Ketika menambahkan ini layanan web sebagai sumber data untuk bentuk InfoPath, Saya merasa perlu untuk mengubahnya menjadi udc dan menyimpannya ke Perpustakaan sambungan data.
  • Saya juga merasa perlu untuk mengaktifkan skrip lintas domain melalui layanan pusat administrasi // aplikasi manajemen // bentuk konfigurasi server.
  • Pertama kalinya bentuk mencoba untuk mengakses layanan web, Butuh waktu dan kadang-kadang, itu akan waktu. Saya fiddled dengan pengaturan dalam bentuk konfigurasi server untuk memperluas pengaturan timeout dan yang tampak untuk membantu.

Kode:

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

[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
Umum kelas PoService : System.Web.Services.WebService
{
Umum PoService () {

//Tanda komentar baris berikut jika menggunakan dirancang komponen
//InitializeComponent();
}

/// <Ringkasan>
/// Mendapatkan nomor PO berikutnya dari po nomor kontrol daftar sharepoint.
/// Kenaikan PO nomor dalam daftar itu.
/// </Ringkasan>
/// <kembali></kembali>
[WebMethod]
Umum string GetNextPoNumber()
{
string SpPoControlSiteName; // Nama sebenarnya MOSS situs yang host daftar kontrol PO.
string SpPoControlListName; // Nama daftar MOSS yang sebenarnya yang berisi kontrol Po.

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

string nextPoReqNumber = "xyzzy";

menggunakan (SPSite situs = baru SPSite(SpPoControlSiteName))
{
menggunakan (SPWeb Web = site. OpenWeb())
{

SPList currentList = web. Daftar[SpPoControlListName];

foreach (SPItem controlItem dalam currentList.Items)
{

Jika (((string)controlItem["ControlField"]).Sama dengan("NextPoNumber"))
{
nextPoReqNumber = (string)controlItem["ControlValue"];

Int int_nextPoReqNumber;
int_nextPoReqNumber = Mengkonversi.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

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

} // Mencari, membaca dan memperbarui nomor PO dalam daftar.


} // menggunakan spweb web = site.openweb()
} // menggunakan spsite site = new spsite("http://localhost/mizuho")

kembali nextPoReqNumber;

}
}