Saya menulis sebuah artikel untuk SharePointBriefing.com dan mereka memasukkannya hidup hari ini.
Di sini adalah teaser:
</akhir>
Ikuti saya di kegugupan di http://www.twitter.com/pagalvin
Saya menulis sebuah artikel untuk SharePointBriefing.com dan mereka memasukkannya hidup hari ini.
Di sini adalah teaser:
</akhir>
Ikuti saya di kegugupan di http://www.twitter.com/pagalvin
Aku telah bekerja pada sebuah proyek di mana saya perlu untuk mengekstrak lampiran dari sebuah bentuk InfoPath. Ada beberapa sumber yang baik untuk parsing bentuk InfoPath (yang hanya file XML, Jadi itu benar-benar sangat mudah).
Sementara aku sedang membangun proyek, Aku mulai dengan men-download sebuah bentuk InfoPath dan menyimpannya ke hard drive lokal. C# kode membaca langsung dari contoh. Namun, bentuk InfoPath benar-benar hidup dalam sebuah SharePoint formulir Perpustakaan. Aku melakukan sedikit setengah hati mencari untuk mengetahui bagaimana untuk membacanya secara langsung dari perpustakaan dan hampir menyerah, dalam hal ini saya akan disimpan bentuk ke direktori temp lokal dan membacanya dari sana. Namun, tidak perlu untuk pergi melalui lingkaran orang-orang seperti Anda dapat membacanya secara langsung dari Perpustakaan. Potongan kecil ini menunjukkan bagaimana:
/// Kelas definisi hal di sini, termasuk:
swasta SPFile mySharePointFile; /* Bagian dari SPList */ // Kode lebih pergi di sini dan di dalam metode kelas kami memiliki: textReader = baru XmlTextReader(mySharePointFile.OpenBinaryStream()); textReader.WhitespaceHandling = WhitespaceHandling.Tidak ada; textReader.Read(); // Jika simpul memiliki nilai Sementara (textReader.Read()) { |
Mereka kunci sedikit di atas adalah bahwa kita dapat membaca InfoPath langsung melalui OpenBinaryStream() metode memanggil SPFile sebagai parameter ke konstruktor pada XmlTextReader. Karya besar.
</akhir>
Ikuti saya di kegugupan di http://www.twitter.com/pagalvin
Aku punya solusi entri biaya untuk klien yang memanfaatkan InfoPath dan alur kerja. Pada satu titik selama proses persetujuan, Saya perlu untuk menghasilkan email yang memiliki semua data InfoPath yang baik serta lampiran sendiri sehingga (napas) seseorang dapat mengambil data dan secara manual re-key ke aplikasi database Oracle.
Hal ini tidak sangat sulit untuk mendapatkan atau parse bentuk InfoPath. Saya tidak tahu bagaimana untuk menangani lampiran, Namun. Setelah satu jam atau dua mengaduk Internets (keabadian!) Saya menemukan artikel ini: http://support.microsoft.com/kb/892730
Ini memberikan beberapa kode yang berguna untuk ekstrak lampiran dari sebuah node dalam bentuk. (Anda masih perlu untuk menemukan node dan semua itu, tapi itu hanya XML parsing).
Aku tahu bahwa lampiran dikodekan base64 dan aku awalnya turun jalan hanya mengekstrak base64 data, decoding dan menyimpannya. Namun, Aku segera sadar aku tidak tahu bagaimana untuk mendapatkan nama file itu sendiri sampai aku menemukan Pasal.
Saya telah benar-benar menemukan yang cukup awal, tapi saya menunda oleh kepribadian split. Di satu sisi, Artikel * mengatakan * baik untuk InfoPath 2007. Namun, kode dan petunjuk adalah semua tentang Visual Studio 2003 dan referensi ke InfoPath 2003.
Garis bawah, kode artikel disediakan bekerja baik bagi saya (sejauh). Saya bisa mendapatkan bentuk InfoPath saya, Saya dapat mengurai, Saya dapat menemukan dan men-decode lampiran dan aku tahu namanya. Apa lagi yang bisa salah satu meminta salah satu kehidupan?
</akhir>
Ikuti saya di kegugupan di http://www.twitter.com/pagalvin
Jika Anda khawatir bahwa lingkungan SharePoint Anda mungkin anak laki-laki tidak sehat, Biarkan saya membantu Anda memperbaikinya dengan cek kesehatan.
Aku punya biaya proses persetujuan bahwa saya perlu untuk mengimplementasikan menggunakan InfoPath di otentikasi berbasis bentuk (FBA) lingkungan yang menggunakan formulir layanan (Web berbasis InfoPath).
Ada dua kelompok persetujuan dan proses bekerja seperti ini:
Pada sisi InfoPath hal, Saya memiliki bagian yang berbeda yang menyembunyikan/muncul berdasarkan apakah pengguna adalah anggota dari salah satu kelompok-kelompok persetujuan.
Dalam lingkungan FBA username() fungsi selalu kembali kosong, Sayangnya. Apa yang saya lakukan adalah mengatur daftar kustom disebut "Persetujuan grup".
Aku tidak menambahkan kolom tambahan apapun ke daftar.
Ketika bentuk membuka, ini memiliki aturan seperti ini:
"Menetapkan nilai bidang" ada di sini:
Ini pada dasarnya mengatakan: Permintaan persetujuan kelompok daftar kustom dan filter yang query dengan mencari setiap baris di mana judul di nilai = "NORDIK".
Jika yang mengembalikan nilai apapun, kemudian pengguna saat ini adalah anggota dari grup itu. Aku tahu itu mengandung nilai karena panjang string lebih besar dari nol.
Tutup loop dengan mengamankan setiap item dalam daftar Grup persetujuan. Pada saat run-time, Jika pengguna saat ini tidak memiliki akses keamanan yang tepat ke item kemudian query tidak akan kembali, panjang string akan nol dan sekarang Anda tahu pengguna saat ini bukan merupakan bagian dari kelompok yang. Anda dapat menggunakan fakta yang diperlukan dalam bentuk.
Ini adalah super singkat write-up. Aku 'm terdesak waktu atau aku akan memberikan lebih detail.
Aku tidak tahu bagaimana relevan adalah bahwa saya dalam lingkungan FBA. Ini mungkin akan bekerja juga di lingkungan bebas-FBA tapi aku bisa membayangkan kasus-kasus yang mana ini akan berguna.
</akhir>
Ikuti saya di kegugupan di http://www.twitter.com/pagalvin
Aku sedang mengerjakan sebuah bentuk InfPath hari ini dan berlari melawan seorang teman lama, "Unhandled pengecualian ketika rendering bentuk System.Xml.XmlException: Tak terduga end of file sementara parsing nama telah terjadi."
Ini terjadi kepada saya lama waktu yang lalu dan aku tidak tahu apa yang sebenarnya saya lakukan untuk mengatasinya. Jujur, Saya berpikir bahwa saya telah transisi ke sebuah proyek baru dan tidak pernah melihat satu ini diselesaikan (pengganti saya harus berurusan dengan sakit kepala yang). Saya ingat itu setan masalah. Saya menghabiskan beberapa hari berhasil berurusan dengan itu. Sejak itu, Aku pernah melihat ini datang di Forum MSDN setidaknya sekali selama setahun terakhir dan tidak pernah benar-benar melihat jawaban untuk itu.
Aku memukul hari ini dan untungnya saat ini , Saya baru saja membuat perubahan ke bentuk. Saya mundur perubahan itu dan masalah pergi. Ternyata bahwa mungkin untuk membuat dari template menggunakan desain InfoPath sedemikian rupa bahwa itu menghasilkan kesalahan parse pada sisi server bentuk pagar.
Dalam kasus saya, masalah disebabkan oleh langkah:
Aku tidak tahu jika langkah-langkah tersebut menimbulkan masalah atau mungkin, entah bagaimana data dalam daftar itu sendiri adalah masalah. Aku akan sedikit bereksperimen dan melihat jika saya dapat kuku downt ia parameter ini dengan lebih detail.
</akhir>
Ikuti saya di kegugupan di http://www.twitter.com/pagalvin
Aku masih tinggal di bentuk-bentuk InfoPath dunia dan saya perlu untuk membuat salah satu perubahan "kecil" ke bentuk yang, Sayangnya, melanggar konvensi penamaan aku mengadopsi dengan dua minggu yang lalu. Saya berpikir sendiri, "seseorang akan melihat hal ini satu tahun dari sekarang dan berkata, ' Apa yang Paulus berpikir? Oleh Jupiter, Konvensi penamaan tidak masuk akal!”
Saya menyadari bahwa saya dapat membuat tampilan pada formulir ini dan kemudian, Sekali lagi, menyadari bahwa aku bisa melakukan sesuatu seperti ini sepanjang. Saya menambahkan pandangan "Pengembang catatan" ke bentuk InfoPath seperti:
Saya telah mengkonfigurasi bentuk sehingga pengguna tidak bisa untuk pandangan itu dan karena itu, Hal ini hanya terlihat dengan klien InfoPath dalam design view. Sekarang aku merasa sedikit terlepas beberapa pengembang tidak diketahui masa depan yang memandang saya bentuk dan memikirkan pikiran buruk tentang saya. Fiuh!
</akhir>
Ikuti saya di kegugupan di http://www.twitter.com/pagalvin
Sepertinya aku pergi melalui fase InfoPath di mana, out of the blue, Aku sedang menyusun sekelompok bentuk. Jari-jari saya belajar bagaimana menggunakan alat yang baik dan kemudian aku pergi melalui sembilan bulan kekeringan dan harus belajar seluruh lagi.
Aku di tengah-tengah InfoPath fase dan saya menciptakan bentuk-bentuk InfoPath dengan banyak dilihat. Satu hal yang Anda mungkin melihat bahwa InfoPath 2007 klien menunjukkan pemandangan dalam urutan abjad. Ini adalah gangguan yang nyata beberapa kali. Teknik terbaik saya hari ini adalah untuk menambahkan sejumlah nama tampilan sehingga mereka selalu menunjukkan dalam urutan yang saya inginkan, seperti digambarkan di sini:
Saya berharap saya telah melakukan ini semua bersama.
</akhir>
Ikuti saya di kegugupan di http://www.twitter.com/pagalvin
Aku sudah bekerja pada beberapa bentuk InfoPath minggu ini di MOSS di lingkungan FBA dan belajar, Ketika saya pergi untuk menyebarkan formulir lingkungan produksi dengan FBA zona yang username() fungsi fungsi tidak bekerja. Saya menggunakan ini untuk menghasilkan nama file yang unik.
Yah, fungsi tidak bekerja dalam lingkungan FBA (setidaknya, tidak keluar dari kotak). Dan, Setelah refleksi, menggunakan nama pengguna dalam cara yang aku telah merencanakan tidak memiliki dijamin nama berkas unik dalam setiap peristiwa.
Solusi saya adalah untuk menggunakan sekarang() fungsi dan aturan yang kebakaran pemuatan bentuk. Saya menetapkan nama file ke unsur data ketika itu kosong:
Keuntungan dari pendekatan ini adalah bahwa nama file diatur hanya sekali. (Aku tidak menunjukkan hal itu di screen shot, Tapi meletakkan kondisi pada aturan untuk hanya api ketika "myFilename" kosong). Aku digunakan untuk menetapkan nama file di tingkat sumber data. Biasanya, Aku akan melakukan sesuatu (Buruk) Seperti ini:
Masalah dengan itu adalah bahwa jika pengguna a membuka formulir pada hari Senin dan pengguna b perubahan itu pada hari Selasa, Anda akan berakhir dengan dua bentuk yang berbeda karena dua pengguna yang berbeda disimpan dengan nama-nama pengguna yang berbeda.
Jadi, sebagai annoying karena FBA dapat secara umum dan dengan InfoPath khususnya, itu membuat saya berpikir ulang kecil tapi benar-benar penting detail teknis dan pendekatan yang saya tidak akan dilakukan jika tidak!
</akhir>
Ikuti saya di kegugupan di http://www.twitter.com/pagalvin
Ada skenario bisnis umum seperti ini:
Contoh office.microsoft.com ini menjelaskan cara membuat sebuah terpisah "Lihat" dan menandai seluruh tampilan sebagai baca-saja. Ini adalah pendekatan yang bisa diterapkan tetapi memiliki kelemahan yang secara efektif telah membuat dua versi seluruh bentuk yang sama dan harus sekarang menjaga mereka sinkron secara manual. Jika Anda menambahkan sebuah field ke tampilan diedit, Anda kemudian harus menambahkannya ke tampilan bebas-diedit serta. Dari waktu ke waktu, dengan berbagai pengembang, ada beberapa perbedaan.
Alternatif ini mungkin bekerja lebih baik dalam beberapa kasus:
Kekurangannya pendekatan ini adalah bahwa semua bidang masih akan diedit pada layar. Pengguna bisa mendapatkan kesan palsu bahwa mereka benar-benar dapat mengubah konten. Anda dapat mengurangi bahwa dengan menempatkan dalam beberapa teks bahwa bentuk dinonaktifkan, mungkin dalam huruf merah besar di bagian atas halaman.
Dalam satu proyek, Saya membuat sebuah "alur kerja status" Lihat. Berjalannya alur kerja, ini akan memperbarui status tertentu bidang yang telah dipromosikan dari bentuk. Ketika pengguna membuka formulir, "formulir terbuka" aturan secara otomatis beralih ke bahwa pandangan dan pengguna memiliki status ringkasan kecil yang bagus.
</akhir>
Kami telah mengembangkan sebuah bentuk InfoPath dengan beberapa pemandangan untuk mendukung menyewa baru / proses kesiapan. Ketika perusahaan mempekerjakan orang baru, Departemen TI dan kelompok lain perlu mengambil tindakan (mengatur penggajian, mengaktifkan akses ke aplikasi yang sesuai, mencari sebuah meja, dll). Kami menggunakan formulir tetapi pandangan yang berbeda dari bentuk untuk masing-masing fungsi-fungsi.
Di perusahaan ini, sebagian besar orang yang terlibat dalam proses bisnis yang cerdas IT, Jadi, ketika mereka mengakses formulir, tampilan default mereka adalah "menu" Lihat dengan tombol yang mengarahkan mereka ke fungsi spesifik mereka. Namun, kita butuh untuk menyederhanakan hal-hal untuk Penyewaan baru langsung manager. Orang ini seharusnya tidak melihat salah satu itu terkait hal-hal. Sebenarnya, Dia harus melihat hanya satu pandangan dari bentuk dan bahkan tidak punya pilihan untuk melihat pemandangan lainnya.
Dalam kasus kami, yang langsung manajer akun secara langsung terikat bentuk milik Hubungi pemilih (yang saya selalu ingin untuk memanggil "people picker" untuk beberapa alasan).
Langkah-langkah adalah sebagai berikut:
1. Dalam mode desain, pergi ke Tools-> Pilihan formulir-> Membuka dan menyimpan.
2. Pilih "aturan".
3. Membuat aturan baru tindakan yang adalah "beralih untuk melihat" dan kondisi yang memanfaatkan userName() fungsi.
nama pengguna() kembali "sederhana" nama pengguna tanpa domain. Jika saya log in ke SharePoint dengan mandat "domainpagalvin", nama pengguna() kembali "pagalvin".
Pemilih kontak menyediakan tiga bit informasi kontak. "AccountID" Bagian paling berguna untuk skenario ini. Satu-satunya hal yang membuat ini meskipun sedikit tantangan adalah bahwa pemilih kontak (di lingkungan saya tetap) mengembalikan ID domain dan pengguna, seperti dalam "domainpagalvin". Ini mencegah kita dari melakukan kesetaraan lurus ke depan kondisi sejak AccountID ("domainpagalvin") tidak pernah akan sama dengan userName() ("pagalvin").
Kami bisa mendapatkan sekitar ini menggunakan "berisi" operator: AccountID berisi nama pengguna().
Kita dapat mengambil lebih lanjut dan pra-pend keras-kode domain di depan nama pengguna() fungsi untuk mendapatkan kami cek kesetaraan dan menghilangkan risiko positif palsu pada mengandung operator.
Kami akan benar-benar seperti untuk secara otomatis beralih tampilan untuk pengguna lain berdasarkan keanggotaan grup keamanan iklan mereka. Misalnya, Ketika seorang anggota "itu Analytics" kelompok mengakses formulir, secara otomatis beralih ke tampilan IT Analytics. Kita tidak punya waktu untuk mengimplementasikan hal ini, tapi saya pikir pertama adalah untuk menciptakan sebuah layanan web yang akan memiliki sebuah metode seperti "IsMemberOfActiveDirectorySecurityGroup", lulus userName() dan kembali kembali true atau false. Apakah ada yang punya yang lain, ide cerdas lain? Ada fungsi SharePoint apapun kita dapat memanfaatkan dari InfoPath untuk membuat tekad?
</akhir>