Arsip Kategori: InfoPath 2007 // Microsoft Office Forms Server

Hit cepat: Membaca InfoPath XML langsung dari objek SPListItem di SharePoint

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:
XmlTextReader textReader;
textReader = baru XmlTextReader(mySharePointFile.OpenBinaryStream());

textReader.WhitespaceHandling = WhitespaceHandling.Tidak ada;

textReader.Read();

// Jika simpul memiliki nilai

Sementara (textReader.Read())
{

... dan seterusnya dan sebagainya...

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>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Technorati Tags:

Pemrograman mengekstrak lampiran dari bentuk-bentuk InfoPath (Termasuk nama-nama mereka!)

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>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Technorati Tags: ,,

Jika Anda khawatir bahwa lingkungan SharePoint Anda mungkin anak laki-laki tidak sehat, Biarkan saya membantu Anda memperbaikinya dengan cek kesehatan.

Mengelola kelompok persetujuan dengan InfoPath di lingkungan FBA

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:

  • Pengguna mengisi laporan pengeluaran dan menyampaikannya untuk persetujuan.
  • Yang memicu email ke kelompok approver tingkat pertama.
  • Approver tingkat pertama ulasan dan menyetujui atau menyangkal laporan.
  • Jika orang tingkat pertama menyetujuinya, sistem akan memberitahu approver tingkat kedua.

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:

image

"Menetapkan nilai bidang" ada di sini:

image

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>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Technorati Tags: ,

InfoPath // Satu penjelasan atas "Unhandled pengecualian ketika rendering bentuk System.Xml.XmlException: Tak terduga end of file sementara parsing nama telah terjadi. “

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:

  1. Menambahkan unsur baru ke sumber data sebagai lapangan teks.
  2. Jatuhkan ke bentuk.
  3. Mengubah tampilan itu ke dalam daftar drop-down.
  4. Kirim daftar drop-down untuk menarik nilai-nilai dari daftar SharePoint kustom.

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>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Technorati Tags:

Menanamkan pengembang catatan dalam bentuk InfoPath

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:

image

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>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Technorati Tags:

Mengelola InfoPath Views

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:

image

Saya berharap saya telah melakukan ini semua bersama.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Technorati Tags:

Bentuk InfoPath Sevices, Bentuk-bentuk otentikasi berbasis (FBA) dan nama berkas unik

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:

image

image

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:

image

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>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Technorati Tags:

Cepat dan sederhana: Membuat hanya membaca bentuk InfoPath (InfoPath bentuk layanan di MOSS)

Ada skenario bisnis umum seperti ini:

  • Pengguna mengisi formulir InfoPath.
  • Menyerahkan formulir.
  • Lama proses alur kerja dimulai.
  • Sementara alur kerja berjalan, kita tidak ingin orang untuk mengubah isi formulir.

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:

  • Tambahkan sebuah field baru ke dalam formulir yang disebut "IsEditable".
  • Set nilai default untuk true.
  • Mempromosikannya ketika penerbitan untuk MOSS.
  • Dalam alur kerja, menetapkan nilai IsEditble ke false.
  • Kembali ke bentuk.
  • Tambah aturan bahwa "setelah buka formulir", menonaktifkan menyimpan tombol ketika IsEditable palsu.

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>

Berlangganan ke blog saya.

Beralih View pemandangan berdasarkan ID pengguna dalam bentuk InfoPath

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>

Technorati Tags: