Kategoriarkiv: InfoPath 2007 // Forms Server

Rask Hit: Lese InfoPath XML direkte fra SPListItem i SharePoint

Jeg vært arbeider på et prosjekt der jeg trenger å ekstrakt vedlegg fra et InfoPath-skjema. Det er noen gode ressurser for analyse av InfoPath-skjemaer (hvilke er bare XML-filer, så det er faktisk ganske lett).

Mens jeg var å bygge opp prosjektet, Jeg startet med å laste ned et InfoPath-skjema og lagre den på harddisken min lokale. Leste meg c# koden direkte fra forekomsten. Men, skjemaene InfoPath virkelig lever i et SharePoint-skjemabibliotek. Jeg gjorde en liten halv hearted søke å finne ut hvordan å lese den direkte fra biblioteket og ga nesten opp, da jeg ville ha lagret skjemaet til en lokal temp-mappe og lese den der. Men, Det er ikke nødvendig å gå gjennom de ringer som du kan lese den direkte fra biblioteket. Denne lille kodebiten viser hvordan:

/// Klassen definisjon ting her, inkludert:
privat SPFile mySharePointFile; /* En del av en SPList */
// Mer kode her og inne en metode i klassen har vi:
XmlTextReader textReader;
textReader = nye XmlTextReader(mySharePointFile.OpenBinaryStream());

textReader.WhitespaceHandling = WhitespaceHandling.Ingen;

textReader.Read();

// Hvis noden har verdi

mens (textReader.Read())
{

... og så videre og så videre...

De viktig bit ovenfor er at vi kan lese i InfoPath direkte via OpenBinaryStream() metoden ringe på SPFile som en parameter til konstruktøren av XmlTextReader. Den arbeider stor.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Technorati Merkelapper:

Programmatisk utpakking vedlegg fra InfoPath-skjemaer (Inkludert deres navn!)

Jeg har en regning oppføring løsning for en klient som bruker InfoPath og arbeidsflyt. På et tidspunkt under godkjenningsprosessen, Jeg trenger å generere en e-post som har alle god InfoPath dataene samt vedleggene seg slik at (sukk) noen kan ta disse dataene og manuelt re nøkkel den inn et Oracle databaseprogram.

Det er ikke veldig vanskelig å få på eller analysere InfoPath-skjemaet. Jeg visste hvordan å håndtere vedlegg, men. Etter en time eller to av poking rundt Internets (en evighet!) Jeg fant denne artikkelen: http://support.microsoft.com/kb/892730

Det gir noen praktisk koden pakke ut vedlegget fra en node i skjemaet. (Du fortsatt trenger å finne noden og alle som, men det er bare XML parsing).

Jeg vet at vedlegget er base64-kodet og jeg opprinnelig gikk nedover stien av bare trekke ut av base64-data, dekoding av det og lagre det. Men, Jeg skjønte raskt jeg visste hvordan å få navnet selv før jeg fant nevnte artikkelen.

Jeg hadde faktisk funnet som ganske tidlig, men jeg ble skremt av dens splittet personlighet. På den ene siden, artikkelen * sier * det er bra for InfoPath 2007. Ennå, koden og instruksjoner er om Visual Studio 2003 og referanser til InfoPath 2003.

Bunnlinjen, koden artikkel forutsatt fungerer bra for meg (så langt). Jeg kan få min InfoPath-skjema, Jeg kan analysere den, Jeg kan finne og dekode vedlegget og vet navnet. Hva mer kan man be for livet?

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Technorati Merkelapper: ,,

Hvis du er bekymret for at SharePoint-miljøet kan være en tad usunn, La meg hjelpe deg fikse det med en helsesjekk.

Administrere godkjenningsgrupper med InfoPath i et FBA-miljø

Jeg har en regning godkjenningsprosess som jeg trenger å implementere bruke InfoPath i et skjemabasert godkjenning (FBA) miljø med skjematjenester (Web basert InfoPath).

Det er to godkjenningsgrupper og prosessen fungerer som dette:

  • Brukeren fyller ut reiseregninger og sender den til godkjenning.
  • Som utløser en epost til første nivå godkjenner gruppen.
  • Første nivå godkjenner av og godkjenner eller avviser rapporten.
  • Hvis første nivå person godkjenner det, system varsler nivå godkjenner.

På siden InfoPath ting, Jeg har ulike deler som Skjul/vises basert på enten brukeren er medlem av en av disse godkjenningsgrupper.

I et FBA miljø brukernavnet() funksjonen returnerer alltid tomt, Dessverre. Hva jeg har gjort er satt opp en en liste kalt "Godkjenningsgrupper".

Jeg ikke legge til flere kolonner i listen.

Når skjemaet åpnes, den har en regel som dette:

image

"Angi en feltverdi" er her:

image

Dette er i utgangspunktet si: Spørringen listen godkjenning egendefinerte og filter som spør etter noen p hvor tittelen verdi = "Nordisk".

Hvis som returnerer en verdi, gjeldende bruker er medlem av gruppen. Jeg vet den inneholder verdien fordi streng er større enn null.

Fullfør sirkelen ved å sikre enkeltelementene i listen godkjenning. Under kjøring, Hvis gjeldende bruker ikke har returnerer riktig tilgang til elementet deretter spørringen ikke det, Strenglengde være null og nå vet du gjeldende bruker er ikke en del av gruppen. Du kan bruke dette faktum som nødvendig i skjemaet.

Dette er en super kort skrive opp. Jeg er presset for tid eller jeg ville gi flere detaljer.

Jeg vet ikke hvor relevant det er at jeg er i et FBA-miljø. Dette vil sannsynligvis fungere i et ikke-FBA-miljø, men jeg kan forestille tilfeller der dette ville være nyttig.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Technorati Merkelapper: ,

InfoPath // En forklaring for "ubehandlet unntak ved gjengivelse av skjemaet System.Xml.XmlException: Det oppstod en uventet slutt på filen under analyse av navn. “

Jeg jobbet på et InfPath-skjema i dag og løp opp mot en gammel venn, "Ubehandlet unntak ved gjengivelse av skjemaet System.Xml.XmlException: Uventet slutt på filen under analyse av navnet har oppstått."

Denne skjedd å meg for lenge siden og jeg vet ikke hva jeg gjorde for å løse det.. Ærlig, Jeg tror at jeg hadde vært overgangen til et nytt prosjekt, og aldri så denne en løst (min erstatninger fikk å beskjeftige seg med hodepine). Jeg husker det var en djevel problem. Jeg tilbrakte flere mislykkede dager håndtere det.. Siden da, Jeg har sett dette kommer opp på MSDN-foraene minst én gang i løpet av det siste året og aldri virkelig så et svar for det..

Jeg traff det i dag, og heldigvis nå , Jeg hadde bare gjort en endring i skjemaet. Jeg rygget ut endringen og problemet gikk fjerne. Det viser seg at det er mulig å opprette en mal ved hjelp av InfoPath Designer slik at den genererer en analysefeil på serversiden former av gjerdet.

I mitt tilfelle, problemet var forårsaket av disse trinnene:

  1. Legge til et nytt element til en datakilde som et tekstfelt.
  2. Slipp den på skjemaet.
  3. Endre det er visningen i en rullegardinliste.
  4. Fortelle rullegardinlisten til å trekke sine verdier fra en egendefinert SharePoint-liste.

Jeg vet ikke om disse trinnene forårsake et problem eller kanskje, noe er dataene i selve listen et problem. Jeg skal eksperimentere litt og se om jeg kan spikeren ned han parametere dette med flere detaljer.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Technorati Merkelapper:

Bygge inn Developer Merknader I InfoPath-skjemaer

Jeg fortsatt bor i InfoPath-skjemaer verden og jeg trengte å gjøre en av disse "små" endringene i et skjema som, Dessverre, bryter en navnekonvensjon jeg adoptert med den to uker siden. Tenkte jeg, "noen kommer til å se på denne ting et år fra nå og si, ' Hva tenkte Paul? Av Jove, hans navnekonvensjon gir ingen mening!”

Jeg innså at jeg kunne lage en visning i skjemaet for dette og deretter, nok en gang, innså at jeg kunne ha gjort noe slikt langs. Jeg har lagt en "utvikler"-notatvisning til InfoPath-skjemaet slik:

image

Jeg har konfigurert skjemaet slik at brukere ikke kan komme til denne visningen og derfor, Det er bare synlig med InfoPath klienten i utformingsvisning. Nå føler jeg litt inokulerte mot noen fremtidige ukjente utvikleren ser på min form og tenkning dårlige tanker om meg. Phew!

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Technorati Merkelapper:

Administrere InfoPath-visninger

Jeg synes å gå gjennom InfoPath faser der, Out of the blue, Jeg er å lage en samling av skjemaer. Fingrene Lær hvordan du bruker verktøyet godt og da jeg gå gjennom ni måneders tørke og må lære det over igjen.

Jeg er i midten av fase en InfoPath og jeg oppretter InfoPath-skjemaer med en rekke visninger. En ting du sannsynligvis legge merke til er at InfoPath 2007 klient viser visningene i alfabetisk rekkefølge. Dette er en reell plage noen ganger. Min beste teknikken er disse dager å sette et tall til visningen slik at de alltid vises i rekkefølgen jeg vil, som vist her:

image

Jeg skulle ønske jeg hadde gjort dette hele tiden.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Technorati Merkelapper:

InfoPath-skjema Sevices, Skjemaer basert godkjenning (FBA) og unikt filnavn

Jeg har vært arbeids på noen InfoPath-skjemaer denne uken i MOSS i et FBA-miljø- og lært, Når jeg gikk til å distribuere skjemaer til et produksjonsmiljø med en FBA sone som brukernavnet() funksjonen funksjon fungerer ikke. Jeg brukte det til å generere unike filnavn.

Brønnen, Denne funksjonen virker ikke i et FBA-miljø (minst, ikke ut av esken). Og, etter, ved hjelp av brukernavn i måten jeg hadde planlagt ville ikke har garantert et unikt filnavn under enhver omstendighet.

Løsningen min var å bruke nå() funksjonen og en regel som branner på innlastingen av skjemaet. Jeg tilordne navnet på dataelementet når det er tomt:

image

image

Fordelen med denne tilnærmingen er at filnavnet er angitt bare én gang. (Jeg vise ikke det på skjermen skudd, men sette en betingelse på regelen skal bare brann når "myFilename" er tomt). Jeg pleide å sette navnet på kildenivå dataene. Vanligvis, Jeg ville gjøre noe (dårlig) som dette:

image

Problemet med det er at hvis bruker a åpner skjemaet på mandag og bruker b endrer den tirsdag, du vil ende opp med to ulike utgåver siden to forskjellige brukere lagret den med forskjellige brukernavn.

Så, som irriterende som FBA kan være generelt og med InfoPath spesielt, det gjorde meg tenke en liten, men veldig viktig tekniske detaljer og tilnærming som jeg ikke ville ha gjort ellers!

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Technorati Merkelapper:

Rask og enkel: Gjøre et InfoPath-skjema skrivebeskyttet (InfoPath-skjematjenester i MOSS)

Det er et vanlig virksomhet scenario som dette:

  • Bruker fyller ut et InfoPath-skjema.
  • Sender skjema.
  • Langvarige arbeidsflytprosessen starter.
  • Mens arbeidsflyten pågår, Vi ønsker ikke noen å endre innholdet i skjemaet.

Denne office.microsoft.com eksempel beskriver hvordan du oppretter en egen "visning" og merke hele visningen som skrivebeskyttet. Dette er en praktisk tilnærming, men har ulempen at du effektivt har opprettet to hele versjoner av samme form og må nå synkronisere dem manuelt. Hvis du legger til et felt i visningen redigerbare, du må deretter legge den til skrivebeskyttet visningen. Over tid, med forskjellige utviklere, Det kan være noen forskjeller.

Dette alternativet kan fungere bedre i noen tilfeller:

  • Legge til et nytt felt i skjemaet kalt "IsEditable".
  • Angi standardverdien til true.
  • Fremme det når du publiserer til MOSS.
  • I arbeidsflyten, Angi verdien for IsEditble til Usann.
  • Gå tilbake til skjemaet.
  • Legge til en regel som "på åpne skjemaet", Deaktiver spare knappen når IsEditable er USANN.

Ulempen til denne tilnærmingen er at alle feltene kan fremdeles redigeres på skjermen. Brukeren får et falskt inntrykk at de faktisk kan endre innhold. Du kan begrense som ved å sette inn litt tekst at skjemaet er deaktivert, muligens i store røde bokstaver øverst på siden.

I ett prosjekt, Jeg laget en "arbeidsflytstatus" Vis. Som arbeidsflyten forløp, den ville oppdatere bestemte felt som hadde blitt forfremmet fra skjemaet. Når brukeren åpnet skjemaet, det "open form" regel byttet automatisk til at visningen og brukeren hadde en fin liten Sammendrag status.

</slutten>

Technorati Merkelapper: ,

Abonner på bloggen min.

Bytt visning basert på bruker-ID i et InfoPath-skjema

Vi hadde en utviklet et InfoPath-skjema med flere visninger til å støtte nye leie / på-boarding prosess. Når firmaet ansetter en ny person, IT-avdelingen og andre grupper må handle (Definer lønn, Aktiver tilgang til aktuelle programmer, Finn et skrivebord, osv.). Vi bruker på skjemaet, men en annen visning av skjemaet for hver av disse funksjonene.

På dette selskapet, de fleste av involverte i forretningsprosessen er IT-kyndige, så når de åpner skjemaet, deres standardvisningen er en "meny" Vis med knapper som henvise dem til deres spesifikke funksjon. Men, vi trengte å forenkle ting for den nye leie direkte manager. Denne personen bør ikke se noen av IT-relaterte ting. faktisk, hun bør ser bare én visning av skjemaet og ikke har et alternativ for å se de andre visningene.

I vårt tilfelle, som direkte administratorens konto er direkte knyttet til skjemaet høflighet av en Kontakt velgeren (som jeg alltid ønsker å kalle en "people picker" for noen grunn).

Trinnene er som følger:

1. I utformingsmodus, gå til verktøy-> Alternativer for skjema-> Åpne og lagre.

2. Velg "regler".

3. Opprette en ny regel som er «bytte for å se" og hvis tilstanden benytter brukernavn() funksjonen.

Brukernavn() Returnerer enkle"" brukernavn uten domene. Hvis jeg logger inn på SharePoint med legitimasjon "domainpagalvin", Brukernavn() Returnerer "pagalvin".

Kontakt velgeren gir tre biter av kontaktinformasjon. "AccountID" delen er mest nyttig for dette scenariet. Det eneste som gjør dette enda litt av utfordringen er at kontakt velgeren (i mine omgivelser allikevel) Returnerer IDen domene og brukernavn, som "domainpagalvin". Dette hindrer oss fra å gjøre en rett fram likestilling tilstand siden AccountID ("domainpagalvin") vil aldri lik brukernavn() ("pagalvin").

Vi kan få rundt dette ved hjelp av "inneholder" operatør: AccountID inneholder brukernavn().

Vi kan ta det videre og pre-pend en hardkodet domenenavn foran brukernavnet() funksjonen for å få våre likestilling sjekk og eliminere risikoen for feil på den inneholder.

Vi måtte virkelig som automatisk bytter visning for andre brukere basert på deres annonse sikkerhetsgruppemedlemskapet. For eksempel, Når et medlem av "det Analytics" gruppen får tilgang til skjemaet, automatisk Bytt til visningen IT Analytics. Vi hadde ikke tid å implementere det, men min første tanke er å lage en webtjeneste som ville ha en metode som "IsMemberOfActiveDirectorySecurityGroup", gi det brukernavnet() og returnere tilbake sann eller USANN. Har noen andre, flere Smart idé? Er det noen SharePoint-funksjonen kan vi utnytte fra InfoPath til gjør at besluttsomhet?

</slutten>

Technorati Merkelapper: