Categorie Archieven: InfoPath 2007 // Forms Server

Snelle Hit: InfoPath XML lezen vanuit een SPListItem in SharePoint

Ik ben al bezig met een project waar ik moet uitpakken van bijlagen van een InfoPath-formulier. Er zijn een aantal goede middelen voor het parsen van InfoPath-formulieren (die zijn alleen XML-bestanden, dus het is eigenlijk heel eenvoudig).

Terwijl ik was het opbouwen van het project, Ik begon door te downloaden van een InfoPath-formulier en op mijn lokale harde schijf opslaan. Was het lezen van mijn c#-code direct uit die sessie. Echter, de InfoPath-formulieren zijn echt leeft in een formulierenbibliotheek SharePoint. Ik heb een beetje half hearted zoeken als u wilt weten hoe om te lezen het rechtstreeks uit de bibliotheek en bijna gaf, in welk geval ik had het formulier opgeslagen naar een lokale map temp en lees het van daar. Echter, Er is geen behoefte om te gaan door de hoepels, zoals u het rechtstreeks uit de bibliotheek lezen kunt. Dit kleine fragment toont hoe:

/// Klasse definitie stuff hier, met inbegrip van:
privé SPFile mySharePointFile; /* Deel van een SPList */
// Meer code gaat hier en binnen een methode van de klasse die we hebben:
XmlTextReader textReader;
textReader = Nieuw XmlTextReader(mySharePointFile.OpenBinaryStream());

textReader.WhitespaceHandling = WhitespaceHandling.Geen;

textReader.Read();

// Als het knooppunt waarde heeft

terwijl (textReader.Read())
{

... enzovoort, enzovoort...

Ze bits toets hierboven is dat we de InfoPath rechtstreeks via de OpenBinaryStream lezen kunnen() methode opgeroepen op de SPFile als een parameter aan de constructor op XmlTextReader. Het werkt geweldig.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Technorati Tags:

Programmatisch uitpakken van bijlagen van InfoPath-formulieren (Met inbegrip van hun namen!)

Ik heb een last entry-oplossing voor een client die maakt gebruik van InfoPath en werkstroom. Op een gegeven moment tijdens het goedkeuringsproces, Moet ik een e-mail die alle van deze goede InfoPath gegevens, alsmede de bijlagen zelf heeft genereren zodat (zucht) iemand kan nemen die gegevens en het handmatig re-key in een Oracle database-toepassing.

Het is niet erg moeilijk te krijgen op of ontleden van het InfoPath-formulier. Ik wist niet hoe te te behandelen van de bijlagen, echter. Na een uur of twee van de Internets rondneuzen (een eeuwigheid!) Ik vond dit artikel: http://support.microsoft.com/kb/892730

Het verstrekt sommige handige code om uit te pakken van de bijlage van een knooppunt in de vorm. (U moet nog steeds vinden het knooppunt en alle die, maar dat is gewoon XML parsing).

Ik weet dat de bijlage base64-gecodeerd is en ik oorspronkelijk ging het pad van het net halen van de de base64-gegevens, het decoderen en op te slaan. Echter, Ik besefte al snel dat ik niet wist hoe om de bestandsnaam van het zelf tot ik vond het bovengenoemde artikel.

Ik had eigenlijk vond dat heel vroeg, maar ik werd uitgesteld door de gespleten persoonlijkheid. Aan de ene kant, het artikel * zegt * het is goed voor InfoPath 2007. Nog, de code en instructies zijn allemaal over Visual Studio 2003 en verwijzingen naar InfoPath 2003.

Bottom line, de code die artikel voorwaarde werkt goed voor mij (tot nu toe). Kan ik mijn InfoPath-formulier, Ik kan het parseren, Ik kan vinden en decoderen van de gehechtheid en ik weet dat de naam. Wat meer kan een vraag van iemands leven?

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Technorati Tags: ,,

Als u zich zorgen maakt dat uw SharePoint-omgeving een beetje ongezond worden kan, Ik help u dat bevestigen met een health check.

Goedkeuring groepen met InfoPath in een FBA omgeving beheren

Ik heb een goedkeuringsproces kosten die ik nodig heb om uit te voeren met behulp van InfoPath in een verificatie van formulieren die zijn gebaseerd (FBA) omgeving met behulp van formulierservices (webgebaseerde InfoPath).

Er zijn twee groepen van de goedkeuring en het proces werkt als volgt:

  • Gebruiker een onkostendeclaratie invult en verstuurt het voor goedkeuring.
  • Die gebeurtenis wordt een e-mail naar eerste niveau goedkeurder groep.
  • Eerste niveau fiatteur overzichten en goedkeurt of ontkent het verslag.
  • Als eerste niveau persoon hecht zijn goedkeuring aan het, systeem waarschuwt tweede niveau goedkeurder.

Op de InfoPath-kant van de dingen, Ik heb verschillende secties die verbergen/worden weergegeven op basis van de vraag of de gebruiker een lid van één van die goedkeuring-groepen is.

In de omgeving van een FBA de gebruikersnaam() functie retourneert altijd leeg, Helaas. Wat ik heb gedaan is ingesteld een een aangepaste lijst "Goedkeuring groepen" genoemd.

Ik toevoegen niet elke extra kolommen aan de lijst.

Wanneer het formulier opent, het heeft een regel als dit:

image

Hier is de "waarde van een veld instellen":

image

Dit is in feite te zeggen: Query de goedkeuring groep aangepaste lijst en filter dat door de query door op zoek naar een rij waar waarde van het Title = "NORDIC".

Als die een waarde retourneert, dan is de huidige gebruiker een lid van die groep. Ik weet dat het bevat die waarde omdat de lengte van de tekenreeks groter dan nul is.

Sluit de lus door het veiligstellen van de afzonderlijke items in de lijst met goedkeuring. Tijdens runtime, Als de huidige gebruiker heeft geen resultaat passende beveiligingsmaatregelen toegang tot dat item vervolgens de query niet het, tekenreeks met lengte nul zal worden en nu je de huidige gebruiker weet maakt geen deel uit van die groep. U kunt dit feit als nodig in de vorm.

Dit is een super korte write-up. Ik ben ingedrukt voor tijd of ik zou bieden meer detail.

Ik weet niet hoe relevant het is dat ik in een FBA omgeving ben. Dit zou waarschijnlijk werken goed in een niet-FBA omgeving maar ik kan me voorstellen gevallen waar dit nuttig zou zijn.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Technorati Tags: ,

InfoPath // Een verklaring voor de "niet-verwerkte uitzondering bij het formulier System.Xml.XmlException weergeven: Onverwacht einde van bestand terwijl parseren naam is opgetreden. “

Ik werkte op een formulier InfPath vandaag en liep tegen een oude vriend, "Niet-verwerkte uitzondering bij het formulier System.Xml.XmlException weergeven: Onverwacht einde van bestand terwijl parseren naam opgetreden."

Dit gebeurde aan me een lange tijd geleden en ik weet niet wat precies ik deed u kunt oplossen door het. Eerlijk gezegd, Ik denk dat ik had zijn overgang naar een nieuw project en nooit zag dit een opgelost (mijn vervangingen moest behandelen die hoofdpijn). Ik herinner me dat het was een duivel van een probleem. Ik heb verschillende mislukte dagen te maken hebben met het. Sindsdien, Ik heb dit op MSDN forums komen ten minste eenmaal in het afgelopen jaar en nooit echt zag een antwoord voor het.

Ik raakte het vandaag en gelukkig ditmaal , Ik had net een wijziging aangebracht in het formulier. Heb ik gesteund uit die verandering en het probleem ging weg. Het blijkt dat er mogelijk te maken een van sjabloon met behulp van InfoPath Designer op zodanige wijze dat het genereert een parse vergissing op de formulieren serverkant van het hek.

In mijn geval, het probleem werd veroorzaakt door deze stappen:

  1. Een nieuw element toevoegen aan een gegevensbron als een tekstveld.
  2. Zet het neer op het formulier.
  3. De weergave wijzigen in een drop-down lijst.
  4. Vertellen van de drop-down lijst te trekken van haar waarden uit een aangepaste SharePoint-lijst.

Ik weet niet als die stappen een probleem veroorzaken of misschien, een of andere manier is de gegevens in de lijst zelf een probleem. I 'm gonna een beetje experimenteren en zien als ik kan nagel downt hij parameters van dit met meer detail.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Technorati Tags:

Insluiten ontwikkelaar notities binnen uw InfoPath-formulieren

Ik ben nog steeds woonachtig in InfoPath-formulieren wereld en ik nodig had om een van deze "kleine" wijzigingen aanbrengen in een vorm die, Helaas, breekt een naamgevingsconventie die ik twee weken geleden hebben aangenomen met het. Ik dacht bij mezelf, "iemand gaat om te kijken naar dit ding een jaar vanaf nu en zeggen, ' Wat dacht Paul? Door Jove, zijn naamgevingsconventie maakt geen zin!”

Ik realiseerde me dat ik een weergave op het formulier voor dit maken kan en vervolgens, Nog een keer, besefte dat ik zou hebben gedaan iets dergelijks langs. Ik heb een weergave "Developer Notes" toegevoegd aan het InfoPath-formulier als zodanig:

image

Ik heb het formulier geconfigureerd zodat gebruikers niet op die bepaalde weergave krijgen en daarom, het is alleen zichtbaar met de InfoPath-client in de ontwerpweergave. Nu ik voel me een beetje geënte tegen sommige toekomstige onbekende ontwikkelaar kijken naar mijn formulier en de slechte gedachten denken over mij. Oef!

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Technorati Tags:

InfoPath-weergaven beheren

Ik lijken te gaan door InfoPath fasen waar, out of the blue, Ik ben het bewerken van een bos van formulieren. Mijn vingers leren hoe te gebruiken van het hulpprogramma goed en dan ik gaan via negen maand droogte en moet het helemaal opnieuw leren.

Ik ben in het midden van een InfoPath-fase en ik ben het creëren van InfoPath-formulieren met een heleboel keer bekeken. Één ding die u waarschijnlijk opmerken is dat de InfoPath 2007 client geeft weergaven in alfabetische volgorde. Dit is een echte overlast sommige tijden. Mijn beste techniek is deze dagen om een nummer aan de naam van de weergave prepend zodat ze altijd in de gewenste volgorde weergeven, zoals hier wordt geïllustreerd:

image

Ik wou dat ik had gedaan dit allen.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Technorati Tags:

InfoPath-formulier diensten, Formulieren gebaseerde verificatie (FBA) en unieke bestandsnamen

Ik heb het werken op sommige InfoPath-formulieren deze week in MOSS in een omgeving FBA en geleerde, Toen ik ging te zetten de formulieren naar een productieomgeving met een FBA zone die de gebruikersnaam() functie werkt niet. Ik gebruikte het voor het genereren van unieke bestandsnamen.

Goed, die functie werkt niet in een omgeving FBA (ten minste, niet uit de doos). En, na rijp beraad, met behulp van gebruikersnaam in de manier waarop die ik had gepland niet zou hebben gegarandeerd een unieke bestandsnaam in ieder geval.

Mijn oplossing was om te gebruiken het nu() functie en een regel die wordt geactiveerd bij het laden van het formulier. Ik toewijzen de bestandsnaam aan data-element wanneer het leeg is:

image

image

Het voordeel van deze aanpak is dat de naam van het bestand slechts eenmaal is ingesteld. (Ik weergeven niet het in het het schermschot, maar een voorwaarde zetten de regel alleen brand als "myFilename" leeg is). Ik gebruikte om de bestandsnaam op het bronniveau gegevens. Meestal, Ik doe iets (slechte) Als dit:

image

Het probleem met dat is dat als de gebruiker het formulier opent op maandag en de gebruiker B wijzigt het op dinsdag, u zult eindigen met twee verschillende vormen aangezien twee verschillende gebruikers met verschillende gebruikersnamen opgeslagen.

Dus, als vervelend als FBA in het algemeen en met InfoPath met name kunnen, het maakte me opnieuw na te denken een klein, maar echt belangrijke technische detail en de aanpak die ik anders niet zou hebben gedaan!

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Technorati Tags:

Snelle en eenvoudige: Een InfoPath-formulier alleen-lezen maken (InfoPath Forms Services in MOSS)

Er is een gemeenschappelijk bedrijfsscenario van het als dit:

  • Gebruiker invult een InfoPath-formulier.
  • Formulier indient.
  • Long-running workflowproces gaat van start.
  • Terwijl de werkstroom wordt uitgevoerd, We willen niet dat iedereen om de inhoud van het formulier te wijzigen.

In dit voorbeeld office.microsoft.com wordt beschreven hoe u een aparte weergave"" en markeer de hele weergave alleen-lezen. Dit is een werkbare aanpak maar heeft het nadeel dat u effectief twee volledige versies van hetzelfde formulier hebt gemaakt en nu hen in sync handmatig houden moet. Als u een veld aan de bewerkbare weergave toevoegen, u moet vervolgens toevoegen aan de niet-bewerkbare weergave zo goed. Na verloop van tijd, met verschillende ontwikkelaars, Er kunnen enkele verschillen.

Dit alternatief zou kunnen in sommige gevallen beter werken:

  • Een nieuw veld toevoegt aan het formulier met de naam "IsEditable".
  • De standaardwaarde instellen op true.
  • Bevorderen het wanneer u publiceert naar MOSS.
  • In de werkstroom, de waarde van IsEditble ingesteld op false.
  • Ga terug naar het formulier.
  • Een regel toevoegen die "bij het openen van het formulier", uitschakelen uw Opslaan knop als IsEditable false.

Het nadeel van deze aanpak is dat alle velden nog steeds bewerkt op het scherm worden zal. De gebruiker krijgt een verkeerde indruk te geven dat ze daadwerkelijk inhoud kunnen wijzigen. U kunt verhelpen die door de invoering in sommige tekst dat het formulier is uitgeschakeld, eventueel in grote rode letters over de bovenkant van de pagina.

In één project, Ik heb gemaakt een "Werkstroomstatus" weergave. Als de werkstroom vorderde, het zou specifieke status-velden die gepromoveerd uit het formulier bijwerken. Wanneer de gebruiker het formulier opent, de "open vorm" regel overgeschakeld automatisch naar dat weergave en de gebruiker had een mooie kleine samenvatting status.

</einde>

Abonneren op mijn blog.

Schakelaar weergave weergave op basis van gebruikers-ID In een InfoPath-formulier

We hadden een ontwikkelde een InfoPath-formulier met meerdere weergaven ter ondersteuning van een nieuwe huren / op-boarding proces. Wanneer de onderneming huurt een nieuwe persoon, de IT-afdeling en andere groepen nodig om actie te ondernemen (payroll instellen, toegang tot geschikte toepassingen inschakelen, Zoek een bureau, etc). We gebruiken op een formulier maar een andere weergave van het formulier voor elk van deze functies.

Bij dit bedrijf, de meeste van de mensen die betrokken zijn in het bedrijfsproces zijn IT-savvy, Zo wanneer zij het formulier openen, hun standaardweergave is een "menu" bekijken met knoppen die hen rechtstreeks naar hun specifieke functie. Echter, we nodig hadden om de dingen te vereenvoudigen voor de nieuwe huur directe manager. Deze persoon moet niet zien dat een van de IT-gerelateerd spul. Eigenlijk, ze moet slechts één weergave van het formulier zien en zelfs niet hebben een optie om te zien de andere weergaven.

In ons geval, dat directe manager van-account is direct gekoppeld aan het formulier hoffelijkheid van een Contactpersonen kiezen (die ik altijd wil noemen een "mensen picker" voor sommige reden).

De stappen zijn als volgt:

1. In de ontwerpmodus, Ga naar extra-> Formulieropties-> Openen en opslaan.

2. Selecteer "regels".

3. Maak een nieuwe regel waarvan actie is "schakelen als u wilt bekijken" en wiens toestand maakt gebruik van de gebruikersnaam() functie.

Gebruikersnaam() Deze eigenschap retourneert de eenvoudige"" gebruikersnaam zonder het domein. Als ik mij aanmeld in SharePoint met referenties "domainpagalvin", Gebruikersnaam() geeft als resultaat "pagalvin".

De contactpersonen kiezen biedt drie stukjes informatie voor een contactpersoon. De "AccountID" gedeelte is vooral handig voor dit scenario. Het enige ding dat dit zelfs een klein beetje maakt van uitdaging is dat de contactpersonen kiezen (in mijn omgeving toch) Deze eigenschap retourneert het domein en de gebruikersnaam ID, zoals in "domainpagalvin". Dit belet ons een voorwaarde rechttoe-rechtaan gelijkheid sinds AccountID ("domainpagalvin") nooit zal gelijk zijn aan gebruikersnaam() ("pagalvin").

We kunnen krijgen rond dit met behulp van de "bevat" exploitant: AccountID bevat gebruikersnaam().

We kunnen nemen het verder en pre-pend een hardcoded domein voor de gebruikersnaam() functie om onze gelijkheid controleren en elimineert het risico van te verkeerd stellig op de exploitant bevat.

We zouden moeten echt zoals automatisch naar een andere weergave voor andere gebruikers op basis van hun lidmaatschap van een beveiligingsgroep AD. Bijvoorbeeld, Wanneer een lid van de "het Analytics" groep opent het formulier, automatisch overschakelen naar de weergave IT Analytics. We had geen tijd om het te implementeren, maar mijn eerste gedachte is het creëren van een webservice die een methode als "IsMemberOfActiveDirectorySecurityGroup hadden", de gebruikersnaam doorgeven() en terug te keren terug waar of onwaar. Ieder doet zijn ieder andere, meer slim idee? Is er een SharePoint functie die we gebruik kunnen maken van InfoPath om die bepaling te maken?

</einde>

Technorati Tags: