Я написав статтю для SharePointBriefing.com і вони терплять це живий сьогодні.
Ось тизер:
</кінець>
Йди за мною на Twitter в http://www.twitter.com/pagalvin
Я написав статтю для SharePointBriefing.com і вони терплять це живий сьогодні.
Ось тизер:
</кінець>
Йди за мною на Twitter в http://www.twitter.com/pagalvin
Я був роботи над проектом, де мені потрібно витягувати вкладення з форми InfoPath. Є деякі хороші ресурси для розбору форм InfoPath (які є лише XML-файли, так що це насправді досить легко).
Хоча я був створення проекту, Я почав, завантаживши форми InfoPath і зберігши її в мій місцевий жорсткий диск. Мій код c# читав безпосередньо з цього екземпляра. Однак, форм InfoPath дійсно живуть всередині форми бібліотеці SharePoint. Я трохи пошуку half серцем щоб дізнатися як це читати безпосередньо з бібліотеки і ледве не віддав, При цьому я б зберегти форму до локальної папки temp і читати його звідти. Однак, немає необхідності їхати через ці обручі, як ви можете прочитати його безпосередньо з бібліотеки. Цього невеликого фрагмента показує як:
/// Клас визначення речі тут, у тому числі:
приватні Файл SPFile mySharePointFile; /* Частиною SPList */ // Більше кодексу йде тут і всередині метод класу у нас: textReader = нові XmlTextReader(mySharePointFile.OpenBinaryStream()); textReader.WhitespaceHandling = WhitespaceHandling.Жоден; textReader.Read(); // Якщо вузол має значення під час (textReader.Read()) { |
Вони ключові трохи вище є, що ми можемо прочитати InfoPath безпосередньо через на OpenBinaryStream() метод закликати на файл SPFile як параметр в конструктор на XmlTextReader. Він чудово працює.
</кінець>
Йди за мною на Twitter в http://www.twitter.com/pagalvin
У мене є рішення про витрати запис для клієнта, який використовує InfoPath і робочого процесу. В одній точці під час процесу затвердження, Мені потрібно для отримання електронної пошти, який має все, що гарні InfoPath дані, а також вкладення себе так, що (зітхання) хтось може прийняти ці дані та вручну re-key в застосунку бази даних Oracle.
Це не дуже важко отримати у або розібрати форм InfoPath. Я не знаю, як поводитися з вкладень, Однак. Після години або двох колупатися Інтернет (вічність!) Я знайшов цю статтю: http://support.microsoft.com/kb/892730
Вона забезпечує зручний код, щоб витягувати вкладення з вузла у вигляді. (Потрібно знайти вузол і все, що, але це просто розбору XML).
Я знаю, що вкладення кодуванням base64 і спочатку я пішов по шляху зі всього витягу в base64 даних, декодування його і його збереження. Однак, Я швидко зрозумів, що я не знаю, як отримати ім'я файлу, сама, поки я не знайшов вищезазначених статті.
Я насправді виявили, що досить рано, але я був відкладений з її роздвоєння особистості. З одного боку, у статті * каже * це добре для InfoPath 2007. Ще, код та інструкції є все про Visual Studio 2003 і посилання на InfoPath 2003.
Нижній рядок, код, що в статті умови, працює добре для мене (до цих пір). Я можу отримати мій форми InfoPath, Я може проаналізувати його, Можна знайти й декодувати вкладення, і я знаю своє ім'я. Що більше можемо один Запитайте свого життя?
</кінець>
Йди за мною на Twitter в http://www.twitter.com/pagalvin
Якщо ви турбуєтеся, що середовища SharePoint може бути трохи нездорову, Дозвольте мені допомогти вам виправити, що з перевіркою справності.
У мене є рахунок процес затвердження, що мені потрібно впровадити використанням InfoPath у автентифікації на основі форм (FBA) середовища, за допомогою служб форм (веб-InfoPath).
Є дві групи затвердження і процес працює наступним чином:
На боці InfoPath речей, У мене є різні розділи, які з'являються сховати/засновані на те, чи користувач є членом однієї з цих груп затвердження.
В умовах FBA ім'я користувача() завжди повертає порожній, на жаль. Те, що я зробив настроєно за настроюваним списком під назвою «Групами схвалення».
Я не додавати будь-які додаткові стовпці до списку.
Коли форма відкриється, вона має правило наступним чином:
"Установити значення поля", тут:
Це в основному говорять: Запит затвердження Група настроюваним списком та фільтр надсилання запитів, дивлячись для будь-якого рядки де значення заголовок = "СКАНДИНАВСЬКИЙ".
Якщо це повертає будь-яке значення, потім поточний користувач є членом цієї групи. Я знаю, він містить значення тому, що довжина рядка більше за нуль.
Закрити петлі, забезпечення окремих елементів у списку груп затвердження. Під час роботи, Якщо поточний користувач не має відповідних безпеки доступ до цього пункту, то запит не повернеться, довжина рядка, будуть дорівнюють нулю, і тепер ви знаєте, поточного користувача не є частиною цієї групи. Цей факт можна використовувати, якщо необхідно у формі.
Це супер короткий письмовий звіт. Я впевнений, цейтнот або я хотів би представити більш докладно.
Я не знаю, як відповідні це, що я в FBA середовищі. Це, можливо, буде працювати добре у середовищі FBA, але я можу собі уявити випадків, де це було б корисно.
</кінець>
Йди за мною на Twitter в http://www.twitter.com/pagalvin
Я працював над InfPath формі сьогодні і зіткнулися з старий друг, "Вийнятки при наданні форму System.Xml.XmlException: Неочікуваний кінець файлу час аналізу ім'я сталася."
Це трапилося зі мною довгий час тому, і я не знаю, що точно, що я зробив, щоб вирішити її. Чесно, Я думаю, що я був перехід до нового проекту і ніколи не бачив цього вирішені (мій замін доводилося мати справу з цієї головний біль). Я пам'ятаю це диявол проблема. Я провів кілька невдалих днів справу з ним. З тих пір, Я бачив це прибути на MSDN форумах принаймні один раз протягом останнього року і ніколи не бачив відповіді за це.
Я вдарив його сьогодні і на щастя на цей раз , Я просто вніс зміни до форми. Я підтримали, що зміна і проблема пішов. Виявляється, що це можливо для створення від шаблону за допомогою InfoPath Designer таким чином, що вона генерує Помилка аналізу на стороні сервера форм забору.
У моєму випадку, проблема була викликана такі дії.:
Я не знаю, якщо ці кроки викликати проблеми або, може бути, так чи інакше дані у списку, сама є проблемою. Я збираюся трохи поекспериментувати і подивитися, якщо я можу нігтів downt він параметрів цього з будь-якої більш докладно.
</кінець>
Йди за мною на Twitter в http://www.twitter.com/pagalvin
Я все ще живуть у світі форм InfoPath, і мені потрібно, щоб один з цих "малих" змін до форми,, на жаль, перерви іменуванні я прийняв з ним два тижні тому. Я подумав про себе, "хтось збирається дивитися на те, що на рік і сказати, ' Що думав Пол? Оглянуто Jove, його іменуванні немає сенсу!”
Я зрозумів, що я міг би створити подання у формі для цього і потім, Знову, зрозумів, що я міг були робити щось на зразок цього все, уздовж. Подання «Розробник записки», додане до форми InfoPath як такої:
Мною було настроєно у формі, так що користувачі не можуть отримати до цього подання і, отже,, це видно тільки з клієнтом InfoPath у режимі конструктора. Тепер я відчуваю себе трохи Прищеплені проти деяких майбутніх невідомий розробник, дивлячись на мою форму і мислення поганих думок про мене. Тьху!
</кінець>
Йди за мною на Twitter в http://www.twitter.com/pagalvin
Я, здається, проходити через фази InfoPath де, ясного, Я впевнений, crafting купу форм. Мої пальці, дізнатися, як використовувати засіб добре, і тоді я пройти через дев'ять місяців посухи і вивчити її знову і знову.
Я перебуваю в середині InfoPath фази і я створюю форм InfoPath з великою кількістю переглядів. Одна річ, ви напевно помітили, що в тому, що InfoPath 2007 клієнт показує переглядів за алфавітом. Це реальною неприємністю кілька разів. Мій найкращий метод у ці дні є prepend номер на ім'я подання, так що вони завжди показувати у порядку, я хочу, як показано тут:
Шкода, що я робив це весь час.
</кінець>
Йди за мною на Twitter в http://www.twitter.com/pagalvin
Я був роботи на деякі форми InfoPath на цьому тижні в MOSS в середовищі FBA і дізнався, Коли я підійшов до розгортання форм на виробничому середовищі з послугами FBA зони, що ім'я користувача() функція функція не працює. Я використовував його для створення унікальні імена.
Ну, Ця функція не працює в середовищі FBA (по крайней мере, не з коробки). І, після деяких роздумів, за допомогою імені користувача в тому, як я планував б не мати гарантований унікального імені файлу у будь-якому випадку.
Моє рішення було використовувати в даний час() функції та правила, що пожежі на завантаження форми. Я призначити ім'я файлу даних-елементом при пусте:
Перевага такого підходу полягає в тому, що ім'я файлу встановлено лише один раз. (Не показувати в знімок екрану, але покласти умова потрібно тільки вогонь, коли "myFilename" пусте правило). Я використав, щоб встановити ім'я файлу на рівні джерело даних. Зазвичай, Зробити щось (Поганий) Ось так:
Проблема в тому, що якщо в понеділок відкриття форми користувачем A і B зміни його у вівторок, в кінцевому підсумку з двома різними формами так як дві різні користувачі зберегли його з іншого користувача імена.
Так, як дратує, як FBA може бути в цілому і з InfoPath зокрема, Він змусив мене переосмислити невеликий, але дуже важливий технічних деталей і підхід, який я б не зробити інакше!
</кінець>
Йди за мною на Twitter в http://www.twitter.com/pagalvin
Існує загальний сценарій бізнес, як це:
У цьому прикладі office.microsoft.com описує як створити окремий вигляд"" і позначити весь погляд, лише для читання. Це є працездатним підхід, але має недолік, що ви ефективно створив дві версії весь ж форми і повинен тепер забезпечити їх синхронізацію вручну. Якщо поле додається до подання для редагування, Ви повинні додати до незмінюваних зору, як добре. З часом, з різними розробниками, Там можуть бути деякі розбіжність.
Ця альтернатива може працювати краще, в деяких випадках:
Недолік цього підходу, що всі поля як і раніше буде можна редагувати на екрані. Користувач може отримати помилкове враження, що вони дійсно можуть змінити зміст. Ви можете пом'якшити це, поставивши якийсь текст, що вигляді відключена, Можливо, у великі червоні літери у верхній частині сторінки.
В одному проекті, Я створив на "стан робочого циклу" подання. Як прогресувала робочого циклу, Це буде оновлювати особливий статус поля, які дослужився із форми. Коли користувач відкрив у формі, "Відкрити форму" правило автоматично переключився подання та користувач мав nice мало статус резюме.
</кінець>
Ми мали розвиненою InfoPath форми з кількома поданнями для підтримки нового Прокат / процес-інтернат. Коли компанія наймає новою людиною, відділ інформаційних технологій та інші групи потрібно вжити (Настроювання заробітної плати, Дозволити доступ до відповідних програм, Знайдіть на обслуговування, д). Ми використовуємо на формі, але інше подання форми для кожного з цих функцій.
У цій компанії, Більшість людей, що беруть участь в бізнес-процесу, ІТ підкований, тому, коли вони отримати доступ до форми, їх подання за промовчанням є "меню" Перегляд за допомогою кнопки, яка направляти їх певну функцію. Однак, нам необхідно спростити речі для нових прокат безпосередній керівник. Ця людина не повинні бачити будь-якої з ІТ пов'язані речі. Насправді, вона повинна переглянути лише одне подання, форми і навіть не параметр, щоб побачити інші переглядів.
У нашому випадку, що прямі, керівника обліковий запис безпосередньо пов'язана з форми люб'язно надані до засіб вибору контактів (який я завжди бажаючі називати "люди палітра" з різних причин).
Кроки є наступні:
1. У режимі конструктора, Виберіть сервіс-> Параметри форми-> Відкриття та збереження.
2. Виберіть "правила".
3. Створити нове правило, дія якої є "Перейти до перегляду" і чий умова використовує ім'я користувача() функція.
ім'я користувача() Повертає «простий" ім'я користувача без домену. Якщо я увійти в SharePoint з даними для "domainpagalvin", ім'я користувача() Повертає "pagalvin".
Контактна селектор надає три біта інформації контакту. "AccountID" частина є найбільш корисним для цього сценарію. Єдина річ, яка робить це ще трохи проблемою є те, що селекторі контактів (в моєму оточенні все одно) Повертає домену та користувача Ідентифікатор, як і в "domainpagalvin". Це заважає нам робити прямий рівності умову з AccountID ("domainpagalvin") ніколи не буде дорівнює ім'я користувача() ("pagalvin").
Ми може обійти це, використовуючи до "містить" Оператор: AccountID містить ім'я користувача().
Ми можемо прийняти його далі і pre панда жорстко домену перед ім'я користувача() функцію, щоб отримати наші рівності виїзду і виключити ризик помилкове спрацьовування на що містить оператор.
Ми б дійсно як автоматичне переключення подання для інших користувачів на основі їх оголошення групи безпеки членство. Наприклад, Коли член "це аналітика" Група отримує доступ до форми, автоматичне переключення до подання ІТ аналітика. У нас не було часу для його здійснення, але моя перша думка, щоб створити веб-служби, яка є метод, як "IsMemberOfActiveDirectorySecurityGroup", передати його ім'я користувача() і повернутися назад true або false. Хто-небудь є будь-який інший, більш розумна ідея? Чи є будь-яка функція SharePoint, ми можемо використовувати з InfoPath прийняти таке рішення?
</кінець>