SharePointCommunity
Die deutschsprachige Community für SharePoint, Office 365 und mit Azure

Sharepoint Workflow per Button/Hyperlink aufrufen

bewertet von 0 Usern
Nicht beantwortet Dieser Beitrag hat 0 Geprüfte Antworten | 6 Antworten | 1 Follower

Top-50-Beitragsschreiber
Weiblich
259 Beiträge
ExpoIT erstellt in 10 Apr 2017 16:05

Hallo liebes Forum, 

nun sitze ich an der Aufgabe, mein mühselig erstelltes Workflow per Button (oder Hyperlink) starten zu lassen, statt den mühsamen Weg über den Kontext eines jeden Elementes gehen zu müssen. Das möchte ich unseren Usern ersparen. Ich möchte folgende Anleitung nachgehen: http://sharepointerz.blogspot.de/2012/05/run-workflow-from-hyperlink-in.html

hierbei stoße ich auf folgende Problematik: Schritt 4: ich weiß nicht, wie ich auf diese url komme, da, wenn ich auf mein Workflow klicke, sich eine allgemeine url erscheint, finde ich. naja das größere Problem besteht bei Schritt 6 a). Ich bekomme folgende Fehlermeldung im Designer:

Die Verwendung der Sonderzeichen "'[%%]" oder "[%xxx%]" in einer beliebigen Zeichenfolge bzw. die Verwendung des Sonderzeichens "{" in einer Zeichenfolge, die auch einen Workflow-Nachschlagevorgang enthält, kann die Zeichenfolge beschädigen und ein unerwartetes Ergebnis verursachen, wenn der Workflow ausgeführt wird.

Dazu habe ich leider nichts gefunden. Klar ist, dass ich hier geschweifte Klammern habe und auch [$xxx%], allerdings ist es in der Anleitung ja auch so gegeben.

Habe leider nichts dazu finden können, kann mir jemand helfen?

 

Viele Grüße AS

Alle Antworten

Top-10-Beitragsschreiber
Männlich
18.168 Beiträge

Warum so umständlich? Öffne die Liste mit SharePoint Designer und erzeuge eine neue benutzerdefinierte Aktion. Du kannst wählen zwischen Kontextmenü und einem Button oben im Ribbon (oder beides). Wähle den gewünschten Workflow aus und fertig. Damit hast Du im Grunde dasselbe erreicht, wie in der Anleitung, nämlich einen Link auf das Workflowstartformular.

Wenn Du wirklich per Link direkt einen Workflow starten möchtest, mußt Du mit JavaScript arbeiten. Das ist nicht ganz einfach und vor allem gibt es einen riesigen Unterschied zwischen 2010 und 2013 Workflows. Was hast Du denn?

Viele Grüße
Andi
af @ evocom de
Blog
Top-50-Beitragsschreiber
Weiblich
259 Beiträge

Das habe ich gesehen, geht echt ganz einfach.

Allerdings ist der Gedanke folgender:

Sobald ein User auf einen Link klickt, soll, falls noch nicht vorhanden, das Workflow gestartet werden, um die Subsite zu erstellen.

Ich möchte ja nicht, dass für alle in der  Liste eingetragenen Elemente eine Subsite erstellt wird, sonst hätte ich einfach nur das Häckchen (automatisch Workflow starten, sobald ein neuer Eintrag kommt) setzen können.

Die User sehen die Liste nicht! Sie sehen nur die Homesite. Die Liste wird auf der Homesite nur als Webpart angezeigt. Kann man hier das Button einbauen???

Ich habe nur 2013 Workflows.

Viele Grüße AS

Top-10-Beitragsschreiber
Männlich
18.168 Beiträge

Wenn die User das Recht haben, den Workflow zu starten, dann kann man das auch mit JavaScript machen. Und man kann damit auch prüfen, ob der Workflow bereits läuft. Ich schaum al, ob ich ein Beispiel finde...

Viele Grüße
Andi
af @ evocom de
Blog
Top-10-Beitragsschreiber
Männlich
18.168 Beiträge

Ich habe mal das hier zusammengetragen:

Du brauchst zunächst den ClientContext für die Website:
ctx = new SP.ClientContext("http://...");

Außerdem brauchst Du natürlich die ID, des Listenelements, die ID der Liste und ein paar Workflowobjekte:
workflowServicesManager = SP.WorkflowServices.WorkflowServicesManager.newObject(ctx, web)
workflowInstanceService = workflowServicesManager.getWorkflowInstanceService()
workflowSubsService = workflowServicesManager.getWorkflowSubscriptionService()

Damit kannst Du testen, ob der aktuelle Benutzer Ändern-Rechte hat:
if (item.get_effectiveBasePermissions().has(SP.PermissionKind.editListItems))

Falls ja, bekommst Du so die sog. Workflow Associations (die verfügbaren Workflows) und die Workflowinstanzen (laufende Workflows für ein Element):
wfListAssocs = workflowSubsService.enumerateSubscriptionsByList(listId);
wfInstances = workflowInstanceService.enumerateInstancesForListItem(listId, itemId);

Gehe durch die Associations und suche die mit dem richtigen Namen. Gehe durch die Instanzen und prüfe den Status. Bei 1, 2 oder 3 läuft ein Workflow.

Starten kannst Du den Workflow letztlich damit:
wfInstanceSvc.startWorkflowOnListItem(wfAssoc, itemId, startParams);

Wenn Du keine Startparameter brauchst, übergib für startParams einfach ein leeres Objekt {}

Viele Grüße
Andi
af @ evocom de
Blog
Top-50-Beitragsschreiber
Weiblich
259 Beiträge

Hallo Andi, 

ich habe mir das mal etwas angeschaut, dazu muss ich sagen, ich habe noch nicht wirklich viel entwickelt für SharePoint.

JavaScript kann ich noch gar nicht. Muss ich erlernen.

Das was ich bis jetzt programmiert habe ist in powershell einige Skripte zum Befüllen einer SP-List aus einer CSV-Datei, Berechtigungen setzen der einzelnen Subsites und auch Taskliste füllen mit Daten der einzelnen Subsites. Diese Scripts habe ich in Windows PowerShell ISE geschrieben. Nun sehe ich, das bei der Programmierung Visual Studio eingesetzt wird.... 

Könnte ich, statt JavaScript auch JQuery benutzen für diese Aufgabe?

Hast du generell einen Vorschlag, wie ich mit der Entwicklung anfangen könnte? Das ist noch etwas "Salat" für mich mit Visual Studio und Projekte anlegen...

Danke für deine Mühen und viele Grüße

Viele Grüße AS

Top-10-Beitragsschreiber
Männlich
18.168 Beiträge

Also Visual Studio brauchst Du dafür definitiv nicht. Man kann so gut wie alles auch mit dem Editor von Windows programmieren, nur Spaß macht das dann nicht... Der JavaScript Editor von VS ist nicht unbedingt das Beste, aber Visual Studio Code (ist wirklich etwas anderes) ist da ziemlich gut.

Grundsätzlich kann man auf mehrere Arten für SharePoint entwickeln. Serverseitige sog. Full Trust Farm Solutions. Dazu sollte man wirklich VS haben und man kann damit so gut wie alles erreichen. Es wird eine .NET-Sprache verwendet, i.d.R. C#. Man sollte Farm Solutions aber nur noch entwickeln, wenn es wirklich absolut notwendig ist. Stichwort cloud-ready.

Serverseitig kann man außerdem noch PowerShell verwenden (was Du wahrscheinlich gemacht hast). Die Sprache ist ähnlich wie bei den Farm Solutions und man kann ebenfalls das serverseitige Objektmodell verwenden.

Alles andere läuft clientseitig und da gibt es zig Möglichkeiten, von PowerShell, SharePoint Apps, alle anderen Apps (auch iOS und Android) bis hin zu JavaScript. Auf SharePoint wird dabei entweder über das clientseitige Objektmodell (falls für die Plattform verfügbar) zugegriffen oder direkt über die REST-API (geht immer). Da ist für jeden was dabei :-)

Zu JavaScript kann ich Dir leider auch nicht mehr helfen. Wenn Du irgendwas rund um Entwicklung für den Browser machen möchtest, kommst Du um JavaScript nicht herum. Da hilft nur learning-by-doing, was tatsächlich lange dauern kann. Man sollte aber die Grundlagen wirklich verstanden haben, damit man Erweiterungen wie TypeScript oder Frameworks wie Angular benutzt. jQuery ist nur eine JavaScript-Bibliothek, die Zugriff auf das DOM und dessen Manipulation erleichtert. Hilft Dir in diesem Fall aber gar nichts.

Viele Grüße
Andi
af @ evocom de
Blog
Seite 1 von 1 (7 Elemente) | RSS