Archiv der Kategorie: InfoPath 2007 // Formularserver

Schnelle Hit: Lesen von InfoPath XML direkt über ein SPListItem in SharePoint

Ich bin schon an einem Projekt, wo ich aus einem InfoPath-Formular Anlagen extrahieren müssen, arbeiten. Es gibt einige guten Ressourcen für die Analyse von InfoPath-Formularen (die sind nur XML-Dateien, So ist es eigentlich ganz einfach).

Während ich des Projekts Aufbau war, Ich begann, indem Sie ein InfoPath-Formular herunterladen und auf meine lokale Festplatte speichern. Mein c#-Code Las direkt aus dieser Instanz. Jedoch, die InfoPath-Formulare sind innerhalb einer SharePoint-Formularbibliothek wirklich Leben.. Ich habe ein wenig halben Herzens suchen, um herauszufinden, wie es direkt aus der Bibliothek zu lesen und fast aufgegeben, in diesem Fall ich hätte die Form auf eine lokale temp-Verzeichnis gespeichert und von dort zu lesen. Jedoch, Es gibt keine Notwendigkeit, durch diese Reifen zu gehen, wie Sie es direkt aus der Bibliothek zu lesen. Dieser kleine Ausschnitt zeigt wie:

/// Klasse Definition Zeug hier, einschließlich:
Privat SPFile mySharePointFile; /* Teil von einem SPList */
// Mehr Code geht hier und wir haben innerhalb einer Methode der Klasse:
XmlTextReader textReader;
TextReader = Neu XmlTextReader(mySharePointFile.OpenBinaryStream());

textReader.WhitespaceHandling = WhitespaceHandling.Keine;

textReader.Read();

// Wenn der Knoten Wert hat

während (textReader.Read())
{

... und so weiter und so fort...

Sie wichtige Bit oben ist, dass wir, die InfoPath direkt über die OpenBinaryStream lesen können() Methodenaufruf für die SPFile als Parameter an den Konstruktor XmlTextReader. Es funktioniert super.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Technorati Tags:

Extrahieren programmgesteuert Anlagen von InfoPath-Formularen (Einschließlich ihre Namen!)

Ich habe eine Kosten-Einstiegslösung für einen Client, der InfoPath und Workflow nutzt. An einem Punkt während des Genehmigungsprozesses, Ich brauche eine Email generieren, die alle guten InfoPath Daten sowie die Anlagen selbst hat damit (Seufzer) jemand, dass Daten und es manuell in eine Oracle-Datenbank-Anwendung überflüssig.

Es ist nicht schwer zu bekommen oder analysiert das InfoPath-Formular. Ich wusste nicht, wie die Anlagen behandelt, jedoch. Nach einer Stunde oder zwei stochern des Internets (eine Ewigkeit!) Ich habe diesen Artikel: http://support.microsoft.com/kb/892730

Es bieten einige praktischen Code um die Anlage von einem Knoten in der Form zu extrahieren. (Sie müssen noch die Knoten und alle, die finden, aber das ist nur zum XML-Parsen).

Ich weiß, dass die Anlage base64-codiert und ursprünglich ging ich hinunter den Pfad nur extrahieren die base64-Daten, decodieren und speichern. Jedoch, Ich merkte schnell, dass ich nicht weiß, wie man den Dateinamen selbst, bis ich im oben erwähnten Artikel gefunden.

Ich hatte eigentlich schon früh festgestellt, dass, aber ich war durch ihre gespaltene Persönlichkeit. Auf der einen Seite, Artikel * sagt * es ist gut für InfoPath 2007. Noch, den Code und Anweisungen sind alle über Visual Studio 2003 und Verweise auf InfoPath 2003.

Fazit, der Code, der sofern Artikel funktioniert gut für mich (bisher). Ich bekomme meine InfoPath-Formular, Ich kann es analysieren, Ich finde und die Anlage zu decodieren können und ich weiß seinen Namen. Was kann man mehr Fragen des Lebens?

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Technorati Tags: ,,

Wenn Sie besorgt sind, dass Ihre SharePoint-Umgebung ein bisschen ungesund sein kann, lassen Sie mich Hilfe, die Sie reparieren mit einem Gesundheits-check.

Genehmigungsgruppen mit InfoPath in einer FBA-Umgebung verwalten

Ich habe ein Genehmigungsverfahren für Kosten, die ich implementieren, mithilfe von InfoPath eine formularbasierte Authentifizierung müssen (FBA) Umgebung mit Forms services (webbasierte InfoPath).

Es gibt zwei Genehmigungsgruppen und der Prozess funktioniert wie folgt:

  • Benutzer einer Spesenabrechnung ausfüllt und abschickt es zur Genehmigung.
  • Das löst eine e-Mail an erste Ebene genehmigende Person-Gruppe.
  • Erste Ebene Genehmiger Bewertungen und genehmigt oder verweigert den Bericht.
  • Es billigt erste Ebene person, System benachrichtigt zweite Ebene Genehmiger.

Auf der InfoPath-Seite der Dinge, Ich habe verschiedene Abschnitte, die ausblenden/angezeigt werden basierend auf, ob der Benutzer Mitglied einer dieser Gruppen Genehmigung ist.

In einer Umgebung FBA der Benutzername() Funktion gibt immer leer, Leider. Was ich getan habe eingerichtet ist eine eine benutzerdefinierte Liste namens "Genehmigungsgruppen".

Ich hinzuzufügen keine zusätzlichen Spalten zur Liste..

Wenn das Formular öffnet sich, Es hat eine Regel wie diese:

image

Hier ist die "legen Sie den Wert eines Felds":

image

Dies ist im Grunde sagen: Abfrage der benutzerdefinierten Gruppe-Freigabeliste und Filter, die Abfragen, indem Sie auf der Suche nach jeder Zeile wo der Titel Wert = "NORDIC".

Wenn, die einen Wert zurückgibt, dann ist der aktuelle Benutzer ein Mitglied der Gruppe. Ich weiß, dass es diesen Wert enthält, da die Länge der Zeichenfolge größer als NULL ist.

Schließen Sie die Schleife durch die Sicherung der einzelnen Elemente in der Liste Genehmigungsgruppe. Zur Laufzeit, Wenn der aktuelle Benutzer keine wird nicht entsprechenden Sicherheitszugriff auf das Element dann die Abfrage es zurück, Länge der Zeichenfolge wird gleich NULL sein, und jetzt weißt du, den aktuellen Benutzer ist nicht Teil dieser Gruppe. Diese Tatsache können Sie nach Bedarf in form.

Dies ist eine super kurze Zuschreibung. Ich bin unter Zeitdruck oder ich würde detaillierter.

Ich weiß nicht, wie wichtig es ist, dass ich in einer FBA-Umgebung. Dies wohl auch in einer nicht-FBA-Umgebung funktionieren würde aber ich kann mir vorstellen, Fällen, wo dies sinnvoll wäre.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Technorati Tags: ,

InfoPath // Eine Erklärung für "nicht behandelte Ausnahme beim Rendern von Form System.Xml.XmlException: Unerwartetes Dateiende beim Parsen Name ist aufgetreten. “

Ich war werktätig fort ein InfPath Form heute und lief gegen einen alten Freund, "Unbehandelte Ausnahme beim Rendern von Form System.Xml.XmlException: Unerwartetes Dateiende beim Parsen Name ist aufgetreten."

Dieses geschah mir vor langer Zeit und ich weiß nicht, was genau ich getan habe, um es zu beheben. Ehrlich gesagt, Ich denke, dass ich ein neues Projekt Übergang wurde hatte und nie diesein gelöst sah (Ersatztypen hatten mit diesem Kopfschmerz zu tun). Ich erinnere mich, dass es ein Teufel ein Problem war. Ich verbrachte mehrere erfolglose Tage Umgang mit ihr. Seitdem, Ich habe gesehen, dass dies mindestens einmal während des letzten Jahres auf MSDN-Foren kommen und sah es nie wirklich eine Antwort.

Ich traf es heute und zum Glück diesmal , Ich hatte nur die Form geändert. Ich zurückgezogen, dass der Wandel und das Problem ging. Es stellt sich heraus, dass es schaffen kann eine Vorlage mithilfe von InfoPath-Designer in einer Weise, dass es einen Parser-Fehler auf der Serverseite Formen des Zauns generiert.

In meinem Fall, verursacht wurde das Problem durch diese Schritte:

  1. Hinzufügen eines neuen Elements zu einer Datenquelle als Textfeld.
  2. Legen Sie es auf das Formular.
  3. Ändern Sie es ist Anzeige in einer Dropdown-Liste.
  4. Sagen Sie die Dropdown-Liste, seine Werte aus einer benutzerdefinierten SharePoint-Liste zu ziehen.

Ich weiß nicht, ob diese Schritte zu Problemen führen, oder vielleicht, irgendwie sind die Daten in die Liste selbst ein problem. Ich werde ein bisschen experimentieren und sehen, ob ich Downt Nagel kann He Parameter dieser mit jedem Detail.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Technorati Tags:

Hinweise für Entwickler innerhalb von InfoPath-Formularen einbetten

Ich lebe noch in InfoPath-Formulare-Welt und ich brauchte, um diese "kleinen" Änderungen zu einem Formular zu machen,, Leider, bricht eine Benennungskonvention, die ich mit ihm vor zwei Wochen verabschiedet. Ich dachte mir, "jemand geht zu betrachten diese Sache ein Jahr ab jetzt und sagen, "Was war Paul denken.? Durch Jove, seine Namenskonvention macht keinen Sinn!”

Ich erkannte, dass ich einen Blick auf das Formular dafür schaffen könnte und dann, Noch einmal, erkannte, dass ich etwas davon ganze Zeit getan haben könnte. Das InfoPath-Formular als solche hinzugefügt eine "Hinweise für Entwickler" Ansicht:

image

Ich habe das Formular so konfiguriert, so dass Nutzer auf diese Ansicht nicht möglich und daher, Es wird nur mit dem InfoPath-Client in der Entwurfsansicht angezeigt. Jetzt fühle ich mich ein wenig beimpfte gegen einige zukünftige unbekannte Entwickler betrachten meine Form und denken schlechte Meinung über mich. Puh!

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Technorati Tags:

Verwalten von InfoPath-Ansichten

Ich scheine zu InfoPath Phasen durchlaufen,, Out of the blue, Ich bin eine Reihe von Formen basteln.. Meine Finger erfahren Sie, wie gut das Tool zu verwenden und dann ich neun Monate Dürre durchlaufen und es über und über wieder lernen.

Ich bin mitten in einer InfoPath-Phase und ich erstelle InfoPath-Formulare mit vielen Ansichten. Eine Sache, die Sie wahrscheinlich feststellen, dass die InfoPath ist 2007 Client zeigt Ansichten in alphabetischer Reihenfolge. Dies ist eine echte Plage einige Male. Meine beste Technik ist in diesen Tagen zu den Ansichtsnamen Zahl voranstellen, so dass sie immer in der Reihenfolge zeigen, was, die ich will, wie hier dargestellt:

image

Ich wünsche, dass ich diese ganze Zeit getan hatte.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Technorati Tags:

InfoPath-Formular Sevices, Formularbasierte Authentifizierung (FBA) und eindeutige Dateinamen

Ich habe einige InfoPath-Formulare diese Woche in MOSS in einer FBA-Umgebung arbeiten und gelernt, als ich zum Bereitstellen ging die Formen in einer Produktionsumgebung mit einer FBA zone, die den Benutzernamen() Funktion-Funktion funktioniert nicht. Ich benutzte es zum Generieren eindeutiger Dateinamen.

Gut, Diese Funktion funktioniert nicht in einer FBA-Umgebung (mindestens, nicht Out of the box). Und, bei der Reflexion, mit Username in der Weise, die ich geplant hatte einen eindeutigen Dateinamen und würde nicht in jedem Fall gewährleisten.

Meine Lösung war, das jetzt zu nutzen() Funktion und eine Regel, die beim Laden des Formulars ausgelöst wird. Ich zuweisen den Dateinamen Datenelement, wenn es leer ist:

image

image

Der Vorteil dieses Ansatzes ist, dass der Dateiname nur einmal festgelegt ist. (Ich nicht mehr es in der Bildschirmabbildung anzeigen, aber eine Bedingung auf die Regel nur ausgelöst, wenn "MyFilename" leer ist). Früher habe ich den Dateinamen auf der Ebene der Datenquelle festlegen. In der Regel, Ich würde etwas tun (schlecht) So:

image

Das Problem mit diesem ist, dass wenn Benutzer A öffnet das Formular am Montag und der Benutzer B ändert es am Dienstag, Sie werden mit zwei verschiedenen Formen Ende seit zwei verschiedene Benutzer mit unterschiedlichen Benutzernamen speichern.

Also, als ärgerlich FBA im allgemeinen und mit InfoPath vor allem sein kann, Es hat mich ein kleines, aber wirklich wichtige technische Detail und Ansatz, den ich sonst getan würde nicht zu überdenken!

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Technorati Tags:

Schnell und einfach: Ein InfoPath-Formular schreibgeschützt machen (InfoPath Forms Services in MOSS)

Es gibt ein gemeinsame Business-Szenario wie folgt:

  • Benutzer ausfüllt eine InfoPath-Formular.
  • Formular sendet.
  • Lang andauernde Workflow-Prozess startet.
  • Während der Workflow ausgeführt wird, Wir wollen nicht jeder den Inhalt des Formulars ändern.

In diesem Beispiel office.microsoft.com Beschreibt das Erstellen einer separaten "Ansicht" und die ganze Sicht als schreibgeschützt markieren. Dies ist eine praktikable Vorgehensweise aber hat den Nachteil, dass Sie effektiv zwei komplette Versionen desselben Formulars erstellt haben und jetzt sie synchron manuell halten müssen. Wenn Sie ein Feld der editierbaren Ansicht hinzufügen, Sie müssen es auch nicht editierbaren Ansicht hinzufügen. Im Laufe der Zeit, mit verschiedenen Entwicklern, gibt es einige Unterschiede.

Diese Alternative könnte in einigen Fällen besser funktionieren.:

  • Hinzufügen eines neuen Felds auf dem Formular mit dem Namen "IsEditable".
  • Legen Sie den Standardwert auf true.
  • Fördern sie beim Veröffentlichen auf MOSS.
  • Im workflow, den Wert des IsEditble auf False festgelegt..
  • Gehen Sie zurück zum Formular.
  • Hinzufügen einer Regel, dass "beim Öffnen des Formulars", Deaktivieren Schaltfläche Ihr speichern Wenn IsEditable den Wert false festgelegt ist.

Der Nachteil dieses Ansatzes ist, dass alle Felder noch auf dem Bildschirm bearbeitet werden können. Der Benutzer kann einen falschen Eindruck erhalten, dass sie tatsächlich ändern können. Sie können das verringern, indem man in einem Text, dass das Formular deaktiviert ist, möglicherweise in großen roten Buchstaben über der Oberseite der Seite.

In einem Projekt, Ich habe einen Workflow-Status"" Ansicht. Im weiteren Verlauf des Workflows, Es würde Beamtenstatus Felder zu aktualisieren, die aus dem Formular aufgestiegen war. Wenn der Benutzer das Formular geöffnet, die "offene form" Regel wechselte automatisch zu, dass anzeigen und der Benutzer eine nette kleine Statuszusammenfassung hatte.

</Ende>

Onnieren Sie meinen Blog ab.

Switch-Ansicht basierend auf Benutzer-ID In einem InfoPath-Formular

Wir hatten eine entwickelte ein InfoPath-Formular mit mehreren Ansichten zu unterstützen, eine neue Mitarbeiter / auf-Boarding-Prozess. Wenn das Unternehmen eine neue Person beauftragt, die IT-Abteilung und andere Gruppen müssen handeln (Einrichten von Lohn-und Gehaltsabrechnung, ermöglichen Sie den Zugriff auf entsprechende Anwendungen, Suchen Sie einen Schreibtisch, usw.). Wir verwenden auf Form, sondern eine andere Ansicht des Formulars für jede dieser Funktionen.

Bei dieser Firma, die meisten der betroffenen Menschen im Geschäftsprozess sind IT-versierte, Also, wenn sie auf das Formular zugreifen, die Standardansicht ist ein "Menü" mit Schaltflächen, die sie an ihre spezifische Funktion direkt anzeigen. Jedoch, Wir brauchten, um Dinge für die neue Miete direkten Vorgesetzten zu vereinfachen. Diese Person sollte nicht sehen, jeder der IT Zeug verbunden ist. Tatsächlich, Sie sollten nur eine Ansicht des Formulars zu sehen und nicht einmal haben die Möglichkeit, die anderen Ansichten finden Sie unter.

In unserem Fall, die direkten Vorgesetzten Konto direkt an das Formular mit freundlicher Genehmigung von gebunden ist ein Kontakt-Selektor (Das bin ich immer wollen, rufen Sie eine Personenauswahl"" aus irgendeinem Grund).

Die Schritte sind wie folgt:

1. Im Entwurfsmodus, gehen Sie zu Extras-> Formularoptionen-> Öffnen und speichern.

2. Wählen Sie "Regeln".

3. Erstellen Sie eine neue Regel, deren Aktion ist "wechseln Sie zum Anzeigen" und deren Zustand nutzt der Benutzername() Funktion.

Benutzername() Gibt die "einfache" Benutzername ohne Domäne. Wenn ich in SharePoint melden Sie sich mit Anmeldeinformationen "Domainpagalvin", Benutzername() gibt "Pagalvin".

Die Kontakte-Auswahl bietet drei Bits von Informationen für einen Kontakt. Die AccountID"" Teil eignet sich am besten für dieses Szenario. Das einzige, das macht auch ein bisschen, was von Herausforderung ist, dass der Kontakt-Auswahl (in meinem Umfeld sowieso) Gibt die Domäne und Benutzer-ID, wie in "Domainpagalvin". Dies verhindert, dass uns dabei ein geradlinig Gleichheitsbedingung seit AccountID ("Domainpagalvin") UserName wird nie gleich.() ("Pagalvin").

Wir bekommen können, um diese mit der "enthält" Operator: AccountID enthält Benutzername().

Wir können es weiter und Pre-Pend eine hartcodierte Domäne vor dem Benutzernamen nutzen() Funktion um unsere Überprüfung auf Gleichheit und beseitigen das Risiko der falsch-positiven auf die enthält Operator.

WIRKLICH müssten wie wir Ansicht für andere Benutzer auf ihre AD Sicherheitsgruppen-Mitgliedschaft automatisch wechseln. Zum Beispiel, Wenn ein Mitglied des "es Analytics" Gruppe greift auf das Formular, automatisch auf die IT-Analytics-Ansicht wechseln. Wir hatten keine Zeit, sie umzusetzen, aber mein erste Gedanke ist einen Webdienst erstellen, der eine Methode wie "IsMemberOfActiveDirectorySecurityGroup" hätte, übergeben sie den Benutzernamen() und wieder zurück true oder false. Jemand hat anderen?, weitere clevere Idee? Gibt es SharePoint-Funktion, die wir, von InfoPath nutzen können zu machen, dass die Bestimmung?

</Ende>

Technorati Tags: