2016-07-20 10 views
1

Ich versuche, die unten zu erreichen,Ist es möglich, den Formular-Workflow von einem Controller aus zu stoppen/auszuführen?

  1. Wenn ein Link, den ich genehmigen möchten zugegriffen wird/Löschen eines Datensatzes (mit recordID und Aktionstyp in Abfragezeichenfolgeflag) durch den Aufruf Änderungssatz Status Workflow in ein Controller. Ist es möglich, einen Workflow von der Steuerung

  2. auszuführen, wenn ein Datensatz vorgelegt wird, möchte ich mit E-Mail- bereits, wenn der Datensatz überprüfen und in diesem Fall von Neuen Datensatz Formular stoppen existiert. I am Hooking in das RecordInserting-Ereignis, um etwas zu tun, aber frage mich, ob ich die Aufzeichnung speichern und Abbrechen/Stop alle Workflows von der Ausführung überspringen könnte.

Dank

Antwort

2

einen Workflow von Code ausführen zu können, müssen Sie die WorkflowStorage Klasse zuzugreifen, die Sie einen Workflow abrufen können basierend auf es GUID ist. Um dies zu tun, etwas wie:

var workflowStorage = new WorkflowStorage(); 
var workflow = GetWorkflow(PUT YOUR GUID HERE); 

You can the run the workflow using the WorkflowService: 

var workflowService = new WorkflowService(); 

var workflowList = new List<Workflow> {workflow}; 

//NOTE, "e" is a recordEventArgs object 
workflowService.ExecuteWorkflows(workflowList, e); 

workflowService.DisposeIfDisposable(); 
workflowStorage.Dispose(); 

Sollte funktionieren. Das Auffüllen der RecordEventArgs erfordert jedoch ein wenig, wenn es sich um Versuch und Irrtum handelt. Der obige Code wurde aus etwas entnommen, das abhängig von den in einem Formular ausgewählten Werten einen anderen Workflow ausführt und in einem anderen Workflow ausgeführt wird, sodass e bereits für Sie ausgefüllt wurde.

Die Namensräume werden Sie benötigen, sind:

using Umbraco.Forms.Core; 
using Umbraco.Forms.Core.Enums; 
using Umbraco.Forms.Core.Services; 
using Umbraco.Forms.Data.Storage; 
+0

Dank, die zu wissen, war gut, habe ich versucht, einen anderen Ansatz ohne Workflows. Werde es das nächste Mal versuchen – Webpandit