是否可以从控制器停止/运行表单工作流程?

时间:2016-07-20 11:21:35

标签: umbraco7 umbraco-contour

我正在努力实现以下目标,

  1. 访问链接时,我想批准/删除记录(使用 通过调用更改记录来调用查询字符串中的recordId和操作类型 控制器中的状态工作流程。是否可以执行 来自控制器的工作流程

  2. 提交记录时,我想检查记录是否带有电子邮件 在这种情况下,已存在并停止保存新记录。一世 我正在挂进RecordInserting事件来做一些事情但是 想知道我是否可以跳过记录保存和取消/停止所有 来自执行的工作流程。

  3. 由于

1 个答案:

答案 0 :(得分:2)

要从代码运行工作流,您需要访问WorkflowStorage类,它允许您根据它的GUID检索工作流。要做到这一点,比如:

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();

应该有效。填充RecordEventArgs可能需要一些iff试验和错误。上面的代码取自在表单中选择的值运行不同的工作流程,并在另一个工作流程内运行,因此已经填充了e。

您需要的名称空间是:

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