Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
0800 1 255 255

HowTo: Instantiation Form beim automatischen Workflowstart anzeigen

In ver­schie­de­nen Anwendungsfällen kann es vor­kom­men, dass eine Liste mit den dazu­ge­hö­ri­gen Einträgen dem Nutzer der Site ver­bor­gen blei­ben soll. Trotzdem muss der Nutzer einen Workflow mit Instantiation-Form star­ten kön­nen und ein ent­spre­chen­des Listenelement anle­gen kön­nen. Für die­sen Beitrag wird von einem vor­han­de­nen Infopath-Formular aus­ge­gan­gen, wel­ches als Instantiation-Form ver­wen­det wird.

Hier die Schritt-für-Schritt-Anleitung:

1. ASPX-Seite oder Webpart zum Anlegen des List-Items
Zum Anlegen des List-Items, für den der Workflow gestar­tet wer­den soll, kann ein ein­fa­ches ASPX-Formular oder ein Webpart zum Einsatz kom­men. Dem Formular muss als Parameter die Listen-ID mit­ge­ge­ben werden.

2. Anlegen der Eingabefelder für das Listenelement
Das ASPX-Formular sollte nun alle Datenfelder abfra­gen und ein neues Listenelement mit ent­spre­chen­den Werten anle­gen. Dies muss unbe­dingt mit erhöh­ten Privilegien geschehen:

SPSecurity.RunWithElevatedPrivileges(delegate()

{

    using (SPSite site = new SPSite(web.Site.ID))

    {

    // implementation details omitted

    }

});

Zu beach­ten ist, dass keine Kontext-Objekte (SPContext) ver­wen­det wer­den dür­fen, da diese mit den Rechten des aktu­el­len Nutzers laufen.

3. Weiterleitung zum Instatiation-Form
Nachdem das Item ange­legt wurde (Update nicht ver­ges­sen), kann der Workflow gestar­tet wer­den. Voraussetzung ist, dass die­ser bereits mit der Liste ver­knüpft ist und neue Instanzen gestar­tet wer­den dür­fen. Der Aufruf des Instantiation-Form erfolgt mit­tels Response.Redirect. Folgende Url muss über­ge­ben werden:

"_layouts/IniWrkflIP.aspx?List=<listID>&ID=<itemID>&TemplateID=<WFAID>&Source=<webUrl>"

Folgende Parameter müs­sen ersetzt werden:
<listID> – ID der Liste (siehe 1.)
<itemID> – ID des soeben erzeug­ten Items (siehe 2.)
<WFAID> – ID der WorkflowAssoziation (diese hängt an der Liste)
<webUrl> – Url an die wei­ter­ge­lei­tet wird, nach­dem der Workflow gestar­tet wurde

Den Rest erle­di­gen Infopath und die auf­ge­ru­fene ASPX-Datei.

Related Posts

Pin It on Pinterest