Archiv der Kategorie: SharePoint-Workflow

Erstellen von Websites (SPWeb) über SharePoint Designer-Workflows

Dieser Blog-Eintrag ist eher ein "im Bereich des möglichen" Eintrag vs. konkrete info.

Wir haben ein technisches Design, das fordert uns zum Erstellen einer Website in einer Websitesammlung über eine manuell gestartete Workflow-Prozess. Im Grunde, Benutzer geben Sie Daten in einen "neuen Kunden" benutzerdefinierte Liste und dann, wenn sie beendet haben, und überprüft die Dateneingabe, Wir müssen zum Erstellen einer Website für diesen Kunden.

Ich bin ein großer Fan von deklarativen Workflows sowie eine schwache visual Studio-Workflow-Programmierer, also ich die Anforderungen mithilfe von SharePoint Designer wollte.

Ich plane, ausführlicher darüber zu schreiben (und hoffentlich eine Benutzergruppe oder zwei im kommenden Jahr vorlegen), aber hier ist die Gesamtlösung:

  • Erstellen einer benutzerdefinierten Aktion, die mit SPD integriert.
  • Die benutzerdefinierte Aktion ermöglicht die SPD auf einen Webdienst aufrufen, und übergeben sie einen XML-string.
  • Webdienst sucht die Zeile in der benutzerdefinierten Liste und erstellt eine neue Site wie pro die Daten für den neuen Client mithilfe einer benutzerdefinierten Websitedefinition.
  • Web-Service aktualisiert dann die benutzerdefinierte Liste mit einigen Informationen wie z. B. einen Link zur neuen Website.

Wir als andere Ansätze, wie Event-Handler und visual Studio basierend workflow. Der SPD-Ansatz ermöglicht unseren Endkunden ein wenig mehr Kontrolle über den Prozess. Erteilt, Es gibt eine Menge von C#-Code in dieser Lösung, aber es ist verpackt in einem deklarativen workflow, So bekommen wir einige der Vorteile der deklarativen Workflows beim Einhängen in die Site-Erstellung Dienst.

Alles, was wir jetzt brauchen, ist ein einfaches Tool, um SPD-Workflows so einfach wie möglich für Visual Studio-Workflows automatisch zu migrieren, und wir werden wirklich mit Gas kochen 🙂 Ich verstehe, dass einige Leute da draußen an diesem Problem arbeiten und ich hoffe, sie haben es getan bald viel erfolg damit.

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags: ,

Integrieren von SharePoint Designer-Workflows mit Webservices

Ich habe mit benutzerdefinierten Aktionen für SharePoint Designer für einige Zeit spielen rund um (siehe hier für einige detaillierte Sachen, Wenn Sie interessiert).

In meinem aktuellen Projekt, Wir tun einige ziemlich schweres Heben müssen und wollen wir deklarativen SPD Workflow verwenden, um die entsprechenden Geschäftsprozess zu verwalten.

Lange Rede, kurzer Sinn, Dies ist durchaus möglich. Ich erweiterte meine Codeplex-Projekt zum Hilfsdienst"aufrufen" und jetzt können wir direkt von einem SPD-Workflow einen Webdienst aufrufen.

Hier ist die Signatur:

 öffentliche Zeichenfolge Verteiler(
        GUID WebID, // Übergeben von der Laufzeitumgebung
        GUID SiteID, // Übergeben von der Laufzeitumgebung
        Zeichenfolge ListID, // Der RTE übergebener (weiß nicht, warum das eine Zeichenfolge ist, keine GUID)
        int ListItemID, // Der RTE übergebener.
        Zeichenfolge XmlMessage) // Vom Benutzer im SPD übergeben.

Dies nutzt die Tatsache, die wir an wichtigen Workflow-Informationen erhalten können, wie die Website, Listen-ID, usw.. Dies wird auch an mehreren Stellen für die von Ihnen beim Erstellen Ihrer eigenen benutzerdefinierten Aktionen interessierte dokumentiert. Die Idee ist, die XML-Zeichenfolge zu extrahieren, wie seitens des Nutzers, ein geeignetes Verfahren zu versenden. Witziges!

Leider, Dies ist natürlich eine einfache Fahrkarte nach unten zu "Goosey Loosey" Anti-Pattern-land, but it’s better than hitting a brick wall 🙂

Ist es ein Anti-Pattern, wenn Sie es tun, obwohl Sie wissen, dass es ein Anti-Pattern ist?

Ich hoffe, dass dies in naher Zukunft innerhalb Codeplex umbrechen. Wenn Sie mich dabei interessiert sind, Gib mir Sack (E-Mail oder einen Kommentar hinterlassen) and I’ll be that more enthusiastic about doing it 🙂

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags: ,

SPD Workflow “Sammeln von Daten von einem Benutzer”: Ändern der generierten Vorgang: Maske

Ich arbeite an einem Projekt, die fünf verschiedenen SharePoint Designer Workflows verwendet, einige Zulassungen Dokument behandeln. SPD stellt die "Sammeln von Daten von einem Benutzer" Aktion so, dass wir den Benutzer für verschiedene Bits von Informationen auffordern können, z. B., ob sie es genehmigen, einige Kommentare und vielleicht fragen, was sie zum Abendessen die andere Nacht hatte.

Die Formen sind vollkommen funktionsfähig. Sie sind an einer Aufgabenliste als Inhaltstyp gebunden.. Sie sind 100% systemgenerierte. Dies ist ihre Stärke und Schwäche. Wenn wir mit dem Standardformular leben können, dann sind wir gut zu gehen. Jedoch, Wir haben nicht zu viel Steuern wie SPD Form erstellt. Wenn wir nicht das Standardverhalten wie, Wir müssen zu verschiedenen Tricks, um es zu greifen (zum Beispiel, Festlegen der Priorität einer Aufgabe).

Ich brauchte, um einen Link auf diese Aufgabe-Formen bereitzustellen, die die Eigenschaften der Ansicht geöffnet (DispForm.ASXP) des zugehörigen Elements"" in einem neuen Fenster. Dies bietet ein-Klick-Zugriff auf die Meta-Daten des entsprechenden Elements. Dies ist, was ich meine:

Bild

Zum Glück, Wir können dies und es ist nicht sehr schwer. Im großen und ganzen, Starte SPD, Navigieren Sie zu dem Verzeichnis, das die Workflowdateien Häuser und öffnen Sie die ASPX-Datei, die Sie ändern möchten.. Dies sind nur klassische XSL Transform Anweisungen und wenn Sie mit itemstyle.xsl, über mucked habe, Suche oder anderen XSL-Szenarien, Das wird leicht für Sie sein. Tatsächlich, Ich fand es im Allgemeinen einfacher, da das generierte Formular etwas leichter im Vergleich zu einem Webpart Suche Folgen ist (oder die Alptraum CWQP).

Natürlich, Es ist eine große Falle. Workflow-Editor von der SPD erwartet Vollzugriff auf die Datei. Sie verändern, SPD wird gerne Ihre Änderungen geben überschreiben das Recht der Umstände festgelegt. Ich habe zwei schnelle Tests um zu sehen, wie schlimm diese bekommen könnte. Beide setzen voraus, dass Sie einen gültigen SPD Workflow gefertigt habe, der die "Sammeln von Daten von einem Benutzer verwendet" Schritt.

Test 1:

  • Ändern Sie die ASPX-Datei von hand.
  • Testen Sie es (Stellen Sie sicher, dass die Änderungen ordnungsgemäß gespeichert wurden und nicht nichts brechen).
  • Öffnen Sie den Workflow und fügen eine unabhängige Aktion hinzu (wie "Log Geschichte").
  • Speichern Sie den workflow.

Ergebnis: In diesem Fall, SPD nicht die Form neu zu erstellen.

Test 2:

  • Das gleiche wie #1 außer direkt ändern Sie die "Sammeln von Daten von einem Benutzer" Aktion.

Ergebnis: Dies erstellt das Formular von Grund auf neu, überschreibt Ihre Änderungen.

Abschliessende Hinweise:

  • Mindestens zwei SPD-Aktionen erstellen Formulare wie dieses: "Daten von einem Benutzer sammeln" und "Weisen Element zu tun". Beide dieser Aktionen’ Formulare können manuell geändert werden.
  • Ich konnte meinen Link zu dispform.aspx weil erzeugen, in diesem Fall, das Verknüpfen-Element hat immer seine ID in dem entsprechenden Punkt URL eingebettet. Ich konnte es zu extrahieren und erstellen Sie anschließend eine <ein href> auf der Grundlage von die Einklick Meta-Daten-Access-Funktion bereitgestellt.. Es ist unwahrscheinlich, dass Ihre URL dieser Regel folgt. Möglicherweise gibt es andere Möglichkeiten die Kennung des zugehörigen Elements aber ich habe nicht die Brücke überqueren, also ich weiß nicht, ob auf die andere Seite der Kluft Ruft.
  • Ich habe nicht untersuchen, aber ich wäre nicht überrascht, wenn es eine Art von Vorlage-Datei in gibt der 12 Bienenkorb, die ich ändern könnte, um zu beeinflussen, wie die SPD Standardformulare generiert (wie wir Sie Benachrichtigungsvorlagen ändern können).

</Ende>

Onnieren Sie meinen Blog ab!

Technorati Tags: ,

Lösung (Art der): Festlegen der Priorität einer Aufgabe mithilfe von SharePoint Designer

Ich habe eine Business-Szenario wie folgt:

  • Ein Benutzer lädt ein Dokument in einer Dokumentbibliothek.
  • Sie wählt einen Inhaltstyp und Meta-Daten eingibt, nach Bedarf. Die Meta-Datenfelder gehört ein flag, "Dringend".
  • Dies löst einen SharePoint Designer-Workflow, die, unter anderem, verwendet die "sammeln Daten von ein Nutzer" Aktion.

"Daten von einem Benutzer sammeln" erstellt ein Element in einer Aufgabenliste, die Genehmigung für dieses Dokument anfordern.

Ich brauchte, um eine Ansicht der Aufgabenliste erstellen, die in dringenden Fällen zur Genehmigung zeigte.

Lösung: Setzen Sie das Wort "dringend:" in den Titel dieser Aufgaben.

Ich hätte es vorgezogen das Feld Priorität direkt angeben. Jedoch, Ich war nicht in der Lage zu tun, die aus verschiedenen Gründen:

  1. Die Sammeln von Daten-Aktion bietet keinen Mechanismus zum Aktualisieren von Feld Titel (und diese zusätzliche Felder, für die Sie Daten sammeln möchten).
  2. Die "Zuweisen einer zu Punkt" Aktion hat das gleiche problem.
  3. Es ist möglich, ein Element in einer Liste einfügen (dh. Einfügen eines Elements in der Aufgabenliste direkt) aber dieses keine Sperraktion. Das bedeutet, dass der Workflow nicht für den Benutzer, um diese Aufgabe abzuschließen wartet.

Als ich ein paar Ansätze vor (zum Glück) erkennen, dass wir einfach setzen "dringend" im Titel.

  1. Starten eines Workflows für die Taskliste selbst, so dass wenn eine neue Aufgabe erstellt wird, es irgendwie cross verweisen zurück zu dem Dokument, das den ersten Workflow gestartet, Ziehen Sie den dringenden Flagwert und aktualisieren Priorität nach Bedarf.
  2. Etwas ähnliches mit einen Ereignisempfänger. An der Aufgabe erstellen, Suchen Sie die zugeordnete Dokument und Update-Priorität nach Bedarf.
  3. Verwenden Sie die "Listenelement erstellen" Maßnahmen in Verbindung mit der "Wartezeit für Feldänderung" Aktion und einen Ereignisempfänger. Wenn wir ein Listenelement erstellen, Wir können alle Felder angeben, was, die wir wollen. Verwenden Sie einen Ereignisempfänger das ursprüngliche Element aktualisieren, wenn der Benutzer die Aufgabe und das "warten auf Feldänderung abgeschlossen hat" Aktion-Bedingung erfüllt sein würde und der Workflow Vorgehen. (Aus irgendeinem Grund, Ich hatte mehr oder weniger auf diesen Ansatz besiedelt, bevor Sie klug entscheiden, für eine Weile wegzugehen).

Gibt es ein Nachteil für meine Lösung (Abgesehen von der offensichtlichen Tatsache, dass nur der Text des Titels Dringlichkeit angibt). Seit "Feedback sammeln" akzeptiert nur hartcodierte Titelnamen, Ich muss zwei verschiedene Feedback sammeln Aktionen verwenden, deren einzige Unterschied, dass hart codierten Titel ist.

Aber, zumindest gibt es eine Lösung, die keine Ereignisempfänger oder benutzerdefinierte Aktionen der SPD erfordert.

Wenn jemand dies in schlauer Weise gelöst hat, Bitte lassen Sie mich wissen.

</Ende>

Schnell und einfach: InfoPath-Formular automatisch von SharePoint Designer Email öffnen

UPDATE: Madjur Ahuja unterstreicht diesen Link von einem Newsgroup-Diskussion: http://msdn2.microsoft.com/en-us/library/ms772417.aspx. Es ist ziemlich definitive.

===

Oft wollen wir Hyperlinks zu InfoPath-Formularen in e-Mails aus SharePoint Designer-Workflows einbetten. Wenn der Benutzer diese e-Mails empfangen, Sie können klicken Sie auf den Link der e-Mail und gehen direkt zum InfoPath-Formular.

Diese Monster-URL-Konstruktion funktioniert für mich:

http://server/sites/departments/Technical Services/InformationTechnology/HelpDesk/_layouts/FormServer.aspx?XmlLocation=/sites/departments/Technical Services/InformationTechnology/HelpDesk/REC REM RED Forms/REC2007-12-18T11_33_48.XML&Quelle = http % 3A % 2F % 2Fserver % 2Ecorp % 2Edomain % 2Ecom % 2Fsites % 2Fdepartments % 2FTechnical % 2520Services % 2FInformationTechnology % 2FHelpDesk % 2FREC % 2520REM % 2520RED % 2520Forms % 2FForms % 2FAllItems % 2Easpx&DefaultItemOpen = 1

Ersetzen Sie den Fett rot-Text mit dem Namen des Formulars, wie im folgenden Screenshot gezeigt:

Bild

Es gibt eine Menge von hartcodierten Pfad in dieser URL, sowie eine URL-codierte Komponente. Wenn das zu hart, um Ihre spezifische Situation zu übersetzen ist, Schalten Sie auf Warnungen für die Formularbibliothek. Post ein Formular und wenn man die e-Mail, die Quelle der e-Mail anzeigen und sehen Sie alles was Sie brauchen, um einzuschließen.

Aufmerksame Leser werden feststellen, dass die oben genannten e-Mail-Text zeigt auch einen Link, der die Aufgabe über eine gefilterte Ansicht direkt zugreift. Ich plane zu erklären, dass in einem zukünftigen Beitrag ausführlich.

</Ende>

Technorati Tags:

Moos sagt mir “Zugriff verweigert” Bearbeiten Sie eine Workflow-Aufgabe, Aber ich habe wirklich Zugriff

Ich habe ein Workflows mit SharePoint Designer in eine Website, die auf "NT_AUTHORITYAuthenticated Benutzer hauptsächlich schreibgeschützt ist implementiert" (dh. Alle). Es gibt eine Formularbibliothek für ein InfoPath-Formular. Es gibt einen zugeordneten Workflow-Aufgabenliste damit wann der Workflow funktioniert, Es kann Vorgänge Menschen zuordnen.

Ich breche Berechtigung für die Formulare Bibliothek und Task-Liste, so dass jeder authentifizierter Benutzer kann Formulare erstellen und ihre zugewiesenen Aufgaben aktualisieren.

Ich testen mit meinem niedrig-Privilegien-Test-Konto.

Ich kann aus und speichern Sie ein Formular an die Bibliothek füllen? –> JA

Ich kann die Aufgabe aus einem e-Mail-Link zugreifen? –> JA

Sehe ich, dass ein Edit Workflow Vorgangsverknüpfung –> JA

Ich kann auf diesen Link klicken? –> NR. … Zugriff verweigert.

Warum sehe ich einen Link bearbeiten, der mir Erlaubnis verweigert, wenn ich darauf klicke? Das ist nicht wie es soll's arbeiten…

Ich gehe durch die Sicherheitskonfiguration wieder, sehr eng. Ich tun es wieder. Ich halte diesen Beitrag löschen weil ich natürlich nicht nichts über Sicherheit weiß.

Schließlich, Ich Suche den Internets. Ich finde diese höchst unwahrscheinlich MSDN-Forum-thread: http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1838253&SiteID=17

Die Poster scheinen vorgeschlagen werden, dass der einfache Akt des Exports des Workflows in einer Platte mit dem MOSS Sicherheitsproblem beheben? Ich kann es kaum glauben, dass ich gerade eingegeben haben, die. Erinnert mich an die South Park-Episode über die 9/11 Stan wo unsere Preznit fragt Verschwörung, "Wirklich?" immer und immer wieder.

Also, nichts zu verlieren, Ich starte SPD, der rechten Maustaste auf den Workflow und speichern Sie es auf mein c:\ Laufwerk. Das wäre die c:\ Laufwerk auf meinem laptop. Ich Suche über meine Schulter die ganze Zeit so dass niemand mich Fragen, "Warum sind Sie diesen Workflow auf Ihren Laptop sparen?"

Unglaublich, das löst mein problem. Ich kann die Aufgabe bearbeiten..

Ich nominiere hiermit dies für die meisten Bizarre Workflow Abhilfe von 2007.

</Ende>

Technorati Tags:

SharePoint Designer, Aktuelle Artikel “Absolute URL codierte” und HTTPS

Oft wollen wir eine e-Mail zu senden, die enthält einen Hyperlink auf das Element oder Dokument, das den Workflow ausgelöst. Wir können aktuelle Element "codierte Absolute URL verwenden." zu diesem Zweck. Jedoch, Es scheint immer zu "http verwenden" für die URL-Protokoll. Wenn Ihre Website auf HTTPS läuft funktioniert es für Sie nicht.

Bild

Soweit ich weiß, Es gibt keine Out-of-Box-Lösung für dieses problem. Wenn Sie HTTPS verwenden müssen, Sie haben keine von die Option Feld.

Um es zu lösen, Erstellen einer benutzerdefinierten Aktion, die eine Zeichenfolge Replace-Funktion in Ihrem Workflow verwendet bereitstellt. Alternativ, Verwenden Sie eine 3rd-Party-Tool wie das ausgezeichnete Paket hier: http://www.codeplex.com/spdwfextensions 🙂

</Ende>

Technorati Tags: ,

SharePoint Designer Email sendet ???? in einer E-Mail

Forum-Benutzer Fragen gelegentlich: Warum setzt SharePoint Designer ???? in meiner Email statt einen Feldwert?

Ein Grund, warum dies passiert ist, weil die Variable, auf die Sie verweisen, null ist.

Dies kann geschehen, weil Sie versuchen, ein Feld aus dem aktuellen Element"verweisen" aber der Benutzer nie einen Wert in dieses Formularfeld eingegeben.

<Ende />

Technorati Tags:

Vergleichen / Test für leere Daten in SharePoint Designer-Workflows

Szenario: In einer SharePoint Designer-Workflows, Sie müssen bestimmen, ob ein Datumsfeld leer ist.

Problem: SPD bietet keine direkte Methode für Datumsangaben auf etwas anderes als ein Datum vergleichen. Eine solche Bedingung z. kann nicht erstellt werden.: "If [DateField] gleich leer".

Lösung: Das Datum in eine Zeichenfolge konvertieren. Verwenden Sie Zeichenfolgenvergleich, um festzustellen, ob das Datum leer ist.

Screenshots:

Die folgenden Screenshots zeigen, wie Sie dies tun. In diesem Szenario, ein Feld für ein Element, "Umweltgenehmigungen:Erste Genehmigung Erinnerungsdatum", ist eingereicht und der Workflow als Reaktion auslöst.

Bild

Bild

Hinweise:

Als ich versuchte, dies, Ich war angenehm überrascht, zu erfahren, dass es funktioniert. Ich war besorgt, dass SharePoint Designer die Zeichenfolge Zuordnung unterbinden könnte (Variable:StringReminderDateDate) aber es war es möglich.

Ich war auch besorgt, so dass sie, der Wert kann Null und entweder sprengen die WF zur Laufzeit oder vielleicht die globale Temperatur erhöhen 1/2 eine gewisse, aber diese Bedenken waren unbegründet.

</Ende>

Technorati Tags:

SharePoint Designer Workflows benutzerdefinierte Aktion — Beobachtung über <FieldBind Designer-Typ =”StringBuilder” … />

Nur eine schnelle Beobachtung, dass es ein sehr wichtiger Unterschied zwischen diesen zwei Definitionen ist:

<FieldBind Feld "InParam1 =" DesignerType = "StringBuilder" ID = "2" Text = "Input Parameter # 1" />

im Vergleich:

<FieldBind Feld "InParam1 =" ID = "2" Text = "Input Parameter # 1" />

Die erste zeigt, wie dies in der SPD:

Bild

während die letzteren zeigt wie folgt:

Bild

Ich bin nicht sicher, wie hilfreich diese Screenshots sind aber ich habe in der Anstrengung, sie zu machen, damit Sie sie sehen haben 🙂

Die Beobachtung ist dies: StringBuilder ermöglicht es Ihnen, eine Zeichenfolge erstellen (offensichtlich) durch das Mischen von Zeichenfolgenliteralen und Workflow-Daten (über die "hinzufügen Lookup" Schaltfläche in der linken unteren Ecke). Wenn Sie die Schaltfläche Hinzufügen Lookup verwenden, Es fügt ein Token in der Form"[%Token %]". Wenn SharePoint Ihre benutzerdefinierte Aktion aufruft, (C#-Code in meinem Fall), SharePoint übergibt das Token selbst, nicht der Wert des Tokens. Wenn Sie den Standard-Designer-Typ verwenden (der zweite Typ), SharePoint erweitert das Token und Istwert des Tokens an Ihrer Aktion.

StringBuilder = schlecht, Standard Designertyp = gut.

Natürlich, Das ist nicht das, was ich wirklich meine. Eben nicht versuchen und einen Parameter an Ihre benutzerdefinierte Aktion übergeben, wenn der Designer geben = StringBuilder. Verwenden Sie der Standardtyp Designer und Kette ein StringBuilder-Objekt darauf nach vorne, wenn Sie komplexe Zeichenfolgen in Ihrem Workflow erstellen müssen (Das ist übrigens genau das, was man tut, um einen dynamischen Betreff für die e-Mail-Aktion erstellen, aber das ist ein Thema für einen anderen Blogeintrag, Har har).

<Ende />