Kategori Arkiv: InfoPath 2007 // Forms Server

Hurtig Hit: Læsning InfoPath XML direkte fra en SPListItem i SharePoint

Jeg er blevet arbejdet på et projekt, hvor jeg nødt til at ekstrakt vedhæftede filer fra en InfoPath-formular. Der er nogle gode ressourcer for parsing InfoPath-formularer (der er kun XML-filer, så det er faktisk ganske let).

Mens jeg opbygge projektet, Jeg startede ved at downloade en InfoPath-formular og gemme den til min lokale harddisk. Min c# kode var læse direkte fra denne instans. Dog, InfoPath-formularer virkelig bor inde i et SharePoint-formularbibliotek. Jeg har en lille halv hjerter søgning for at finde ud af at læse det direkte fra biblioteket og gav næsten op, i hvilket tilfælde jeg ville have gemt formen til en lokal temp-mappe og læse den derfra. Dog, der er ingen grund til at gå gennem disse tøndebånd, som du kan læse det direkte fra biblioteket. Denne lille kodestykke viser hvordan:

/// Klasse definition stuff her, herunder:
privat SPFile mySharePointFile; /* Del af en SPList */
// Mere kode går her og indvendige en metode af klasse vi har:
XmlTextReader textReader;
textReader = nye XmlTextReader(mySharePointFile.OpenBinaryStream());

textReader.WhitespaceHandling = WhitespaceHandling.Ingen;

textReader.Read();

// Hvis noden har værdi

mens (textReader.Read())
{

... og så videre...

De vigtigste bit frem er at vi kan læse InfoPath direkte via OpenBinaryStream() metoden kalder på SPFile som en parameter til entreprenøren på XmlTextReader. Det virker fint.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Technorati Tags:

Programmatisk udtrække vedhæftede filer fra InfoPath-formularer (Herunder deres navne!)

Jeg har en udgift løsning løsning for en klient, der udnytter InfoPath og arbejdsgang. På et tidspunkt under godkendelsesprocessen, Jeg har brug at generere en e-mail, der har alle god InfoPath dataene samt de vedhæftede filer, sig så (suk) en person kan tage disse data og manuelt indtaste igen det ind i en Oracle databaseprogram.

Det er ikke meget vanskeligt at få på eller parse InfoPath-formularen. Jeg vidste ikke, hvordan man håndterer de vedhæftede filer, dog. Efter en time eller to af poking omkring Internets (en evighed!) Jeg fandt denne artikel: http://support.microsoft.com/kb/892730

Det giver nogle smarte kode til at udtrække den vedhæftede fil fra en node i formen. (Du skal stadig finde noden og alt det der, men det er bare XML parsing).

Jeg ved, at den vedhæftede fil er base64-kodet og jeg oprindelig gik i retning af bare udpakning af base64-data, afkode det og gemme det. Dog, Jeg indså hurtigt, jeg ikke vidste, hvordan man får filen navnet i sig selv, indtil jeg fandt den ovennævnte artikel.

Jeg havde faktisk fandt det ganske tidligt, men jeg blev sat ud af sin personlighedsspaltning. På den ene side, artiklen * siger * det er godt for InfoPath 2007. Endnu, kode og instruktioner er alle om Visual Studio 2003 og henvisninger til InfoPath 2003.

Bundlinjen, den kode, som artikel forudsat fungerer godt for mig (hidtil). Jeg kan få mine InfoPath formularen, Jeg kan tolke det, Jeg kan finde og afkode den vedhæftede fil og jeg kende dens navn. Hvad mere kan man bede af ens liv?

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Technorati Tags: ,,

Hvis du er bekymret for, at dit SharePoint miljø kan være en tad usunde, Lad mig hjælpe dig lave at med et sundhedstjek.

Administration af godkendelsesgrupper med InfoPath i en FBA miljø

Jeg har en udgift godkendelsesproces, at jeg skal gennemføre ved hjælp af InfoPath i en formularer baseret godkendelse (FORMULARBASERET GODKENDELSE) miljøet ved hjælp af forms services (web baseret InfoPath).

Der er to godkendelsesgrupper og processen fungerer sådan her:

  • Brugeren udfylder en udgiftsrapport og sender den til godkendelse.
  • Der udløser en e-mail til første niveau godkender gruppe.
  • Første niveau godkender anmeldelser og godkender eller afviser betænkningen.
  • Hvis første niveau person godkender det, systemet giver besked om anden plan godkender.

I InfoPath side af tingene, Jeg har forskellige sektioner, der Skjul/vises baseret på, om brugeren er medlem af en af disse godkendelsesgrupper.

I en FBA miljø brugernavnet() funktionen returnerer altid tom, Desværre. Hvad jeg har gjort er oprettet en en brugerdefineret liste, der kaldes "Godkendelsesgrupper".

Jeg føje ikke ekstra kolonner til listen.

Når formen åbnes, Det har en regel som dette:

image

"Angive et felts værdi" er her:

image

Dette dybest set siger: Forespørgsel godkendelse gruppe brugerdefineret liste og filter der forespørger ved at kigge efter nogen række hvor titlens værdi = "Nordiske".

Hvis der returnerer en værdi, derefter er den aktuelle bruger medlem af denne gruppe. Jeg ved, det indeholder denne værdi, fordi strenglængde er større end nul.

Luk sløjfen ved at sikre de enkelte elementer på listen godkendelsesgruppe. I køre-tid, Hvis den aktuelle bruger ikke har vil ikke adgang til passende sikkerhed til at varen derefter forespørgslen returnere den, streng-længde vil være nul og nu du kender den aktuelle bruger er ikke en del af denne gruppe. Du kan bruge denne omstændighed efter behov i formen.

Dette er en super kort skrive-up. Jeg er presset for tid, eller jeg vil give nærmere.

Jeg ved ikke hvor relevant det er at jeg i en FBA miljø. Dette sandsynligvis ville arbejde godt i en ikke-FBA miljø men jeg kan forestille sig tilfælde, hvor det ville være nyttigt.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

InfoPath // En forklaring på "ikke-afviklet undtagelse når rendering form System.Xml.XmlException: Uventet slutningen af filen under parsing navn er opstået. “

Jeg arbejdede på en InfPath form i dag og løb ind i en gammel ven, "Ikke-afviklet undtagelse når rendering form System.Xml.XmlException: Uventet slutningen af filen under parsing navn opstod."

Dette er sket for mig længe siden og jeg ved ikke, hvad jeg gjorde for at løse det. Helt ærligt, Jeg tror, at jeg havde været overgang til et nyt projekt og har aldrig set denne ene løst (min udskiftninger måtte beskæftige sig med denne hovedpine). Jeg kan huske, det var en djævel af en problem. Jeg tilbragte flere mislykkede dage beskæftiger sig med det. Siden da, Jeg har set dette komme op på MSDN-foraene mindst én gang i det sidste år og aldrig rigtig så et svar til det.

Jeg ramte det i dag og heldigvis denne gang , Jeg havde bare lavet en ændring til formularen. Jeg bakket ud af denne ændring, og problemet gik bort. Det viser sig, at det er muligt at oprette en fra skabelon, bruger InfoPath Designer på en sådan måde, at det genererer en parsefejl i forms server side af hegnet.

I mit tilfælde, Problemet var forårsaget af disse trin:

  1. Tilføje et nyt element til en datakilde som et tekstfelt.
  2. Drop det ind på formen.
  3. Ændre den display i en drop-down listen.
  4. Fortælle drop down listen til at trække sine værdier fra en brugerdefineret SharePoint-liste.

Jeg ved ikke, hvis disse skridt forårsage et problem eller måske, en eller anden måde er dataene i listen over sig selv et problem. Jeg har tænkt mig at eksperimentere lidt og se, hvis jeg kan nagle nede han parametre af dette med flere detaljer.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Technorati Tags:

Integrere udvikler noter inde i dine InfoPath-formularer

Jeg stadig bor i InfoPath-formularer verden og jeg havde brug at gøre en af disse "små" ændringer til en form,, Desværre, bryder en navngivningskonvention jeg vedtaget med det for to uger siden. Jeg tænkte ved mig selv, "nogen kommer til at se på denne ting om året fra nu og sige, "Hvad tænkte Paul? Af Jove, hans navngivningskonvention giver ingen mening!”

Jeg indså, at jeg kunne skabe en visning i formularen for dette og derefter, En gang til, indså, at jeg kunne have gjort noget som dette hele tiden. Jeg har tilføjet "Udvikler noter" udsigt til InfoPath formularen som sådan:

image

Jeg har konfigureret formularen, så brugerne ikke kan komme til at se og derfor, Det er kun synlige med InfoPath-klienten i designvisning. Nu føler jeg mig lidt podede mod nogle fremtidige ukendt forfatter ser på min form og tænker dårlige tanker om mig. Pyha!

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Technorati Tags:

Administration af InfoPath-visninger

Jeg synes at gå gennem InfoPath faser hvor, ud af blå, Jeg skabelsen af en flok af formularer. Mine fingre lære at bruge værktøjet godt og derefter jeg gå gennem ni måneders tørke og nødt til at lære det hele igen.

Jeg er midt i en InfoPath-fase og jeg opretter InfoPath-formularer med masser af visninger. En ting du sikkert bemærke er, at InfoPath 2007 klienten viser visninger i alfabetisk rækkefølge. Dette er en reel gene nogle gange. Min bedste teknik er disse dage at prepend et tal til visningsnavnet, således at de altid vises i den ønskede rækkefølge, som illustreret her:

image

Jeg ville ønske, jeg havde gjort det hele tiden.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Technorati Tags:

InfoPath-formularen tilsagnsfaktura, Formularbaseret godkendelse (FORMULARBASERET GODKENDELSE) og unikke filnavne

Jeg har været arbejder på nogle InfoPath-formularer i en FBA miljø i denne uge i MOSS og lærde, da jeg gik til at installere formularer til et produktionsmiljø med en FBA zone som brugernavnet() funktionen funktion virker ikke. Jeg brugte det til at generere entydige filnavne.

Godt, Denne funktion virker ikke i en FBA miljø (mindst, ikke ud af boksen). Og, på refleksion, ved hjælp af brugernavnet på den måde, jeg havde planlagt ville have garanteret et entydigt filnavn under alle omstændigheder.

Min løsning var at bruge nu() funktion og en regel, der brande på indlæsning af formen. Jeg tildele filnavnet til dataelement, når den er tom:

image

image

Fordelen ved denne fremgangsmåde er, at filnavnet angives kun én gang. (Jeg vise ikke det i skærmbilledet, men sætte en betingelse i reglen kun brand når "myFilename" er tom). Jeg plejede at angive filnavnet på kildeniveau data. Typisk, Jeg ville gøre noget (Dårlig) Som dette:

image

Problemet med det er, at hvis bruger A åbner formen på mandag og bruger B ændrer det på tirsdag, du vil ende op med to forskellige former, da to forskellige brugerne gemte det med forskellige brugernavne.

Så, som irriterende da FBA kan være i almindelighed og med InfoPath navnlig, det fik mig til at genoverveje en lille, men virkelig vigtige tekniske detaljer og tilgang, som jeg ikke ville have gjort ellers!

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Technorati Tags:

Hurtig og enkel: Gøre en InfoPath-formular skrivebeskyttet (InfoPath danner Services i MOSS)

Der er en fælles virksomhed scenarie som dette:

  • Bruger udfylder en InfoPath-formular.
  • Sender formular.
  • Langvarige arbejdsgangsprocessen skydes i gang.
  • Mens arbejdsprocessen kører, Vi ønsker ikke nogen til at ændre indholdet af formularen.

Eksemplet office.microsoft.com beskriver, hvordan du opretter en separat "view" og markere den hele opfattelse som skrivebeskyttet. Dette er en brugbar metode, men har den ulempe, at du har effektivt oprettet to hele versioner af samme form og skal nu holde dem synkroniseret manuelt. Hvis du føjer et felt til visningen redigeres, Du skal derefter tilføje den til de ikke-redigerbare visning samt. Over tid, med forskellige udviklere, der kan være nogle divergens.

Dette alternativ kunne fungere bedre i nogle tilfælde:

  • Tilføje et nyt felt til formularen kaldet "IsEditable".
  • Angive standardværdien til true.
  • Fremme det, når du udgiver til MOSS.
  • I arbejdsprocessen, Angiv værdien af IsEditble til falsk.
  • Gå tilbage til formularen.
  • Tilføje en regel, at den "ved åbning af formen", Deaktiver din Gem knappen når IsEditable er false.

Ulempen at denne tilgang er at alle felterne stadig bliver redigerbare på skærmen. Brugeren kan få et falsk indtryk af at de faktisk kan ændre indhold. Du kan afhjælpe, ved at sætte i noget tekst, at formen er deaktiveret, eventuelt i store røde bogstaver hen over toppen af siden.

I et projekt, Jeg oprettet en "status for arbejdsproces" Se. Som arbejdsprocessen skred frem, det vil opdatere specifikke statusfelter, der var blevet forfremmet fra formen. Når brugeren åbnede formen, "open-form" reglen skiftede automatisk til at se og brugeren havde en dejlig lille summarisk status.

</slutningen>

Abonner på min blog.

Skifte visning visning baseret på bruger-ID i en InfoPath-formular

Vi havde en udviklede en InfoPath-formular med flere visninger til at støtte en ny leje / på boarding proces. Når virksomheden ansætter en ny person, IT-afdelingen og andre grupper skal handle (nedsat løn, Aktiver adgang til passende programmer, Find skrivebord, osv). Vi bruger på form, men en anden opfattelse af formen for hver af disse funktioner.

På dette selskab, de fleste af de mennesker, der er involveret i forretningsprocessen er IT-kyndige, så når de får adgang til formen, deres standard se på er en "menu" Se med knapper, der direkte dem til deres specifikke funktion. Dog, Vi havde brug at forenkle tingene for nye leje direkte manager. Denne person skal ikke se nogen af IT-relaterede ting. Faktisk, hun skal kunne se bare én visning af formularen og ikke selv har mulighed for at se de andre visninger.

I vores tilfælde, der direkte konto er direkte bundet til formularen høflighed af en Kontakt selector (som jeg altid ønsker at kalde en "mennesker picker" for anden grund).

Trinene er som følger:

1. I designtilstand, gå til værktøjer-> Formularindstillinger-> Åbne og gemme.

2. Vælg "regler".

3. Oprette en ny regel, hvis indsats er "skifte for at se" og hvis tilstand udnytter brugernavnet() funktion.

userName() Returnerer "simpelt" brugernavnet uden domænet. Hvis jeg logger på SharePoint med legitimationsoplysninger "domainpagalvin", userName() Returnerer "pagalvin".

Den kontakt selector giver tre bits af oplysninger for en kontaktperson. "AccountID" del er mest nyttige i dette scenarie. Det eneste, der gør det endda en lille smule af udfordring er, at den kontakt selector (i mit miljø alligevel) Returnerer det domæne og bruger-ID, som i "domainpagalvin". Dette forhindrer os i at gøre en straight-forward ligestilling tilstand siden AccountID ("domainpagalvin") vil aldrig være lig med brugernavnet() ("pagalvin").

Vi kan komme uden om dette ved hjælp af "indeholder" operatør: AccountID indeholder brugernavnet().

Vi kan tage det længere og pre-pend en hard-coded domæne foran brugernavnet() funktion til at få vores ligestilling check og fjerne risikoen for en falsk positiv på den indeholder operatør.

Vi havde virkelig gerne automatisk skifte visning for andre brugere baseret på deres annonce sikkerhedsgruppemedlemskab. For eksempel, Når et medlem af "det Analytics" Gruppen får adgang til formen, automatisk skifte til visningen IT Analytics. Vi har ikke haft tid til at gennemføre det, men min første tanke er at oprette en web-tjeneste, der ville have en metode, som "IsMemberOfActiveDirectorySecurityGroup", pass det Brugernavn() og vende tilbage sandt eller falsk. Er der nogen der har nogen andre, mere klog idé? Er der nogen SharePoint funktion vi kan udnytte fra InfoPath til at træffe denne afgørelse?

</slutningen>

Technorati Tags: