Archivy kategorií: Aplikace InfoPath 2007 // Forms Server

Rychlý zásah: Čtení XML aplikace InfoPath přímo Z SPListItem služby SharePoint.

Já jsem byl pracuje na projektu, kde jsem třeba extrahovat přílohy z formuláře aplikace InfoPath. Existují některé dobré zdroje pro analýzu formuláře aplikace InfoPath (které jsou jen soubory XML, Takže je to vlastně docela snadné).

Zatímco byl stavební projekt, Začal jsem stažením formulář aplikace InfoPath a uložit na místní pevný disk. Můj c# kód byl čtení přímo z této instance. Avšak, formuláře aplikace InfoPath jsou opravdu žijící uvnitř knihovna formulářů SharePoint. Jsem trochu poloviny srdce hledání zjistit, jak číst přímo z knihovny a málem vzdala, v takovém případě bych formulář uložili do místního adresáře temp a ji přečíst odtud. Avšak, není třeba projít těmito obručemi, jak si můžete přečíst přímo z knihovny. Tento malý úryvek ukazuje jak:

/// Třídy definice věci zde, včetně:
soukromé Soubor SPFile mySharePointFile; /* Část k seznamu SPList */
// Zde bude více kódu a uvnitř metody třídy máme:
XmlTextReader textReader;
textReader = nové XmlTextReader(mySharePointFile.OpenBinaryStream());

textReader.WhitespaceHandling = WhitespaceHandling.Žádný;

textReader.Read();

// Je-li uzel má hodnotu

Zatímco (textReader.Read())
{

... a tak dále a tak dále...

Klíč kousek výše je, že můžeme číst aplikace InfoPath přímo přes OpenBinaryStream() volání metody na soubor SPFile jako parametr do konstruktoru na XmlTextReader. Funguje to skvěle.

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Doplněk Technorati značky:

Programově extrahování přílohy z formulářů aplikace InfoPath (Včetně jejich jména!)

Mám náklad vstupní řešení pro klienta, který využívá aplikace InfoPath a workflow. V jednu chvíli během procesu schvalování, Potřeba generovat e-mailu, všechny dobré dat aplikace InfoPath, jakož i přílohy, sami se tak, aby (vzdech) někdo může mít tato data a ručně změny klíče do databázové aplikace Oracle.

To není příliš obtížné dostat nebo analyzovat formulář aplikace InfoPath. Nevěděl jsem, jak zacházet přílohami, Avšak. Po hodině nebo dvou Postrkování kolem internety (věčnost!) Našel jsem tento článek: http://support.microsoft.com/kb/892730

Poskytnout nějaké užitečné kód extrahovat přílohy z uzlu v podobě. (Potřebujete najít uzel a tak, ale to je jen analýzy XML).

Já vím, že je příloha kódování base64 a původně jsem šel na cestě jen extrakce base64 data, dekódování a uložení. Avšak, Rychle jsem si uvědomil, že jsem nevěděl jak se dostat samotný název souboru, dokud jsem nenašel na výše uvedený článek.

Jsem skutečně zjistil, že poměrně brzy, Ale já byl podle jeho rozpolcená osobnost. Na jedné straně, článek * říká * je to dobré pro aplikaci InfoPath 2007. Přesto, kód a pokyny jsou o Visual Studio 2003 a odkazy na aplikace InfoPath 2003.

Čára dole, kód, který článek pokud pracuje dobře pro mě (zatím). Můžete získat formuláře aplikace InfoPath, Lze ji analyzovat, Můžete najít a dekódovat přílohu a vím, že jeho název. Co víc může člověk zeptat svého života?

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Doplněk Technorati značky: ,,

Pokud máte obavy, že vaše prostředí SharePoint může být trošku nezdravé, Pomohu vám opravit, že s kontrolou zdraví.

Správa skupin schválení s aplikací InfoPath v prostředí FBA

Mám proces schvalování výdajů, které je třeba realizovat pomocí ověřování na základě formulářů aplikace InfoPath (FBA) prostředí pomocí forms services (na webu aplikace InfoPath).

Existují dvě skupiny schválení a proces funguje jako:

  • Uživatel vyplní vyúčtování a předloží jej ke schválení.
  • To aktivuje e-mail na první úrovni schvalovatel skupiny.
  • První úroveň schvalovatel hostů a schválí nebo popírá zprávy.
  • Je-li první úrovně člověk jej schválí, systém upozorní schvalovatel druhé úrovně.

Na straně aplikace InfoPath věcí, Mám různé oddíly, které skrýt/zobrazit založené na tom, zda uživatel je členem jedné z těchto skupin schválení.

V prostředí FBA uživatelské jméno() funkce vždy vrátí prázdné, Bohužel. Co jsem udělal je nastaveno vlastní seznam nazvaný "Skupiny schválení".

Já Nepřidávat žádné další sloupce do seznamu.

Když se formulář otevírá, má podobné pravidlo:

image

"Nastavit hodnotu pole" je zde:

image

To je v podstatě říká: Dotaz vlastní seznam skupin schválení a filtru, které dotaz tím, že hledal řádku kde je název hodnota = "NORDIC".

Je-li libovolnou hodnotu, která vrací, pak je aktuální uživatel členem této skupiny. Já vím, že to obsahuje hodnotu, protože délka řetězce je větší než nula.

Ukončit smyčky zajištěním jednotlivých položek v seznamu Skupina schválení. V době běhu, Pokud aktuální uživatel nemá příslušná bezpečnostní přístup k této položce pak dotaz nevrátí ji, Délka řetězce bude nula a teď víte, že aktuální uživatel není součástí této skupiny. Můžete použít tuto skutečnost podle potřeby v podobě.

To je super krátké Write-nahoru. Mě tlačí čas nebo by poskytnout více podrobností.

Nevím, jak důležité je, že jsem v prostředí, FBA. To by pravděpodobně dobře fungovat v prostředí FBA, ale dovedu si představit případy, kde by to bylo užitečné.

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Doplněk Technorati značky: ,

Aplikace InfoPath // Jedno vysvětlení pro "neošetřenou výjimku při zobrazování formulářů System.Xml.XmlException: Neočekávaný konec souboru při analýze názvu došlo. “

Pracoval na formuláři InfPath dnes a narazil na starého přítele, "Neošetřená výjimka při zobrazování formulářů System.Xml.XmlException: Neočekávaný konec souboru při analýze názvu došlo k chybě."

To se mi stalo už dávno a já nevím, co přesně jsem se to vyřešit. Upřímně řečeno, Myslím, že jsem měl přechod do nového projektu a nikdy neviděl tohle vyřešit (Moje posily se musel vypořádat s bolesti hlavy). Pamatujte si, že to byl ďábel problému. Strávil jsem několik neúspěšných dnů zabývají. Od té doby, Viděl jsem to přijít na fóra MSDN alespoň jednou za poslední rok a nikdy skutečně viděl odpověď pro něj.

Trefil jsem ho dnes a naštěstí tentokrát , Právě jsem udělal změnu ve formuláři. Vycouval jsem tuto změnu a tento problém šel pryč. Ukazuje se, že je možné vytvořit ze šablony pomocí aplikace InfoPath Designer v takovým způsobem, že to generuje chyba na straně serveru formy plotu.

V mém případě, problém byl způsoben následovně:

  1. Přidání nového prvku do zdroje dat jako textové pole.
  2. Umístěte jej na formulář.
  3. Změnit to je zobrazení v rozevíracím seznamu.
  4. Řekněte v rozevíracím seznamu tahat své hodnoty ze seznamu služby SharePoint vlastní.

Já nevím, jestli tyto kroky způsobit potíže nebo možná, nějak data v seznamu, sama je problém. Budu trochu experimentovat a zjistit, jestli dostanu downt on parametry tohoto s blíže.

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Doplněk Technorati značky:

Vložit vývojář Notes uvnitř formuláře aplikace InfoPath

Já jsem stále žijí v světě formuláře aplikace InfoPath a potřeboval jsem si jednu z těch "malé" změn do podoby, která, Bohužel, rozdělí konvence, jsem přijala s tím před dvěma týdny. Myslel jsem si, "Někdo jde se podívat na tuto věc za rok od teď a říct, "Co si myslela Paul? Probůh, jeho pojmenování nemá smysl!”

Uvědomil jsem si, že bych mohl vytvořit pohled na formuláři pro tento a pak, Znovu, uvědomil si, že jsem mohl dělal něco takového po celou dobu. Přidal jsem "Developer poznámky" pohled do formuláře aplikace InfoPath jako takové:

image

Já jsem nakonfigurován formulář tak, aby uživatelé nemohou dostat do tohoto zobrazení a proto, je to pouze viditelné s klientem aplikace InfoPath v návrhovém zobrazení. Teď se cítím trochu naočkovat proti nějaké budoucí neznámý vývojář pohledu na mé formě a myšlení špatné myšlenky o mně. Uf!

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Doplněk Technorati značky:

Správa aplikace InfoPath názory

Zdá se, že jsem projít fází aplikace InfoPath kde, z ničeho, Já jsem vyráběli spoustu formulářů. Moje prsty naučit, jak používat nástroj dobře a pak jít přes devět měsíců sucho a musí se učit vše znovu.

Jsem uprostřed fáze aplikace InfoPath a já tvořím formulářů aplikace InfoPath s mnoha názory. Jedna věc, kterou si pravděpodobně všimnete, je, že aplikace InfoPath 2007 klient zobrazí pohledy v abecedním pořadí. To je opravdový otrava některé časy. Můj nejlepší techniku v těchto dnech je předřazení číslo k názvu zobrazení tak, aby vždy zobrazovala v požadovaném pořadí, jak je znázorněno na obrázku:

image

Škoda, že jsem dělal to po celou dobu.

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Doplněk Technorati značky:

Formuláře aplikace InfoPath drátovny, Ověřování na základě formulářů (FBA) a jedinečné názvy souborů

Byl jsem pracující na některých formulářů aplikace InfoPath tento týden v MECHU v prostředí FBA a učených, Když jsem šel nasadit formuláře k provozním prostředí se FBA zóna že uživatelské jméno() funkce funkce nefunguje. Byl jsem pomocí generování jedinečných názvů souborů.

No., Tato funkce nefunguje v prostředí FBA (nejméně, Ne z krabice). A, po zralé úvaze, použití uživatelského jména tak, jak jsem měl v plánu by měl zaručit jedinečný název souboru v každém případě.

Moje řešení bylo použití nyní() funkce a pravidlo, které požáry na načtení formuláře. Přiřadit název souboru datový prvek, když je prázdná:

image

image

Výhodou tohoto přístupu je, že název souboru je jen jednou. (Já nezobrazovat v snímku obrazovky, ale podmínku na pravidlo, které jen oheň, když "méskvìlévyspekulovanéjménosouboru" je prázdné). Použil jsem k nastavení názvu souboru na úrovni zdroje dat.. Obvykle, Já bych něco (Špatné) Nějak tak:

image

Problém s tímto je, že pokud uživatel A otevře formulář v pondělí a uživatel B se změní v úterý, skončíš s dvěma různými formami vzhledem k tomu, že dva různí uživatelé uložili ji s různými uživatelskými jmény.

Tak, jako otravné jako FBA lze obecně a s aplikací InfoPath zejména, To se mi znovu malé, ale důležité technické detaily a přístup, který by udělal jinak!

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Doplněk Technorati značky:

Rychlé a jednoduché: Učinit jen pro čtení aplikace InfoPath formulář (Služby InfoPath Forms Services v MECHU)

Existuje společný obchodní scénář takhle:

  • Uživatel vyplní formulář aplikace InfoPath.
  • Odešle formulář.
  • Dlouhotrvající workflow proces startuje.
  • Při spuštění pracovního postupu, Nechceme, aby někdo změnit obsah formuláře.

Tento příklad office.microsoft.com Popisuje, jak vytvořit samostatné zobrazení"" a označte celý pohled jako jen pro čtení. To je proveditelný přístup, ale má nevýhodu, že účinně vytvořili dvě celé znění ve stejném formuláři a musí teď je synchronizovat ručně. Pokud přidáte pole do upravitelných zobrazení, pak jej musíte přidat do zobrazení upravovat. V průběhu času, s odlišnými vývojáři, mohou existovat určité rozdíly.

Tato alternativa by mohlo lépe fungovat v některých případech:

  • Přidání nového pole do formuláře, nazvaný "IsEditable".
  • Nastavte výchozí hodnotu na true.
  • Podporovat ji při publikování do MECHU.
  • V pracovním postupu, Nastavte hodnotu IsEditble na false.
  • Vraťte se k formuláři.
  • Přidat pravidlo, že "po otevření formuláře", zakázat ukládání tlačítka při IsEditable je false.

Nevýhodou tohoto přístupu je, že všechna pole budou stále upravitelné na obrazovce. Uživatel může získat mylný dojem, že mohou skutečně změnit obsah. Lze zmírnit tak, že tím, že část textu, že formulář je zakázán, Možná v velkými červenými písmeny v horní části stránky.

V jednom projektu, Vytvořil jsem "stav pracovního postupu" pohled. Jak postupovala pracovního postupu, To by aktualizovat pole specifické postavení, propagující z formuláře. Když uživatel otevřel formulář, "otevřený formulář" pravidlo automaticky přepnut do zobrazení a uživatel měl pěkný malý souhrnný stav.

</Konec>

Doplněk Technorati značky: ,

Přihlásit se na mém blogu.

Přepnout zobrazení na základě ID uživatele ve formuláři aplikace InfoPath

Měli jsme rozvinutých formulář aplikace InfoPath s více pohledů na podporu nového pronájmu / proces zadávání. Když společnost najímá nové osoby, oddělení IT a další skupiny je třeba podniknout kroky (Nastavit výplatní listinu, Povolit přístup k vhodných aplikací, Najděte stůl, atd). Používáme na formě, ale jiné zobrazení formuláře pro každou z těchto funkcí.

V této společnosti, Většina lidí zapojených do obchodního procesu je IT-důvtipný, Takže když budou přistupovat k formuláři, jejich puvodni je "menu" Zobrazit tlačítka, která přímo jim na jejich specifické funkce. Avšak, Potřebovali jsme zjednodušit věci pro nové pronájem přímého nadřízeného. Tato osoba by neměl vidět, že IT související věci. Vlastně, měla jen jedno zobrazení formuláře a dokonce mají možnost vidět jiné názory.

V našem případě, přímé správce účtu je přímo vázána k formuláři zdvořilost Výběr kontaktů (což jsem vždycky chtěla volat "výběr osob" z nějakého důvodu).

Kroky jsou následující:

1. V návrhovém režimu, Přejděte na nástroje-> Možnosti formuláře-> Otevřít a uložit.

2. Zvolte "pravidla".

3. Vytvořit nové pravidlo, jejíž činnost je "přepnout zobrazení" a jehož stav využívá uživatelské jméno() funkce.

uživatelské jméno() Vrátí "jednoduché" uživatelské jméno bez domény. Když jsem se přihlásit do služby SharePoint s pověřením "domainpagalvin", uživatelské jméno() Vrátí "pagalvin".

Výběr kontaktů poskytuje tři bitů informací o kontaktu. "AccountID" část je nejužitečnější pro tento scénář. Jediná věc, která dělá to i tak trochu problém je, že výběr kontaktů (v mém prostředí stejně) Vrátí domény a ID uživatele, stejně jako v "domainpagalvin". To nám brání dělat podmínku rovnosti rovný dopředu od AccountID ("domainpagalvin") nikdy stejné uživatelské jméno() ("pagalvin").

Můžeme dostat kolem tohoto použití "obsahuje" operátor: AccountID obsahuje uživatelské jméno().

Můžeme vzít to dále a pre-pend pevně domény před uživatelské jméno() dostat naše kontrola rovnosti a eliminovat riziko falešně pozitivní na funkci obsahuje operátor.

Budeme muset opravdu jako automaticky přepínat zobrazení pro ostatní uživatele, založené na jejich členství ve skupinách zabezpečení AD. Například, Když člen "to Analytics" Skupina má přístup k formuláři, automaticky přepne do pohledu IT Analytics. Neměli jsme čas k provedení, ale moje první myšlenka je vytvořit webovou službu, která by měla metodu jako "IsMemberOfActiveDirectorySecurityGroup", předat uživatelské jméno() a vrátit zpět true nebo false. Má někdo jiný, Další chytrý nápad? Je tam nějaké funkce SharePoint, kterou můžeme využít z aplikace InfoPath učinit toto rozhodnutí?

</Konec>

Doplněk Technorati značky: