是否可以从控制器 stop/run 形成工作流程?

Is it possible to stop/run Form workflow from a controller?

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

  1. 当 link 被访问时,我想 approve/delete 一条记录(与 recordId 和查询字符串中的操作类型)通过调用 更改记录 控制器中的状态工作流。是否可以执行一个 来自控制器的工作流程

  2. 提交记录时,我想查看是否有邮箱记录 在这种情况下已经存在并阻止表单保存新记录。我 我连接到 RecordInserting 事件来做一些事情但是 想知道我是否可以跳过记录保存和 Cancel/Stop 全部 执行的工作流程。

谢谢

要从代码中 运行 工作流,您需要访问 WorkflowStorage class,它允许您根据它的 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 试验和错误。上面的代码取自 运行s 一个不同的工作流程,具体取决于在表单中选择的值,运行s 在另一个工作流程中,所以 e 已经为你填充了。

您需要的命名空间是:

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