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



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

  1. 当链接被访问时,我想批准/删除一条记录(querystring中的recordId和操作类型)控制器中的状态工作流。是否可以执行来自控制器的工作流程

  2. 提交记录时,我想用电子邮件检查该记录已经存在,并且在这种情况下阻止表单保存新记录。我我正在连接RecordInserting事件来做一些事情,但是想知道我是否可以跳过保存记录并全部取消/停止工作流无法执行。

感谢

要从代码运行工作流,您需要访问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;

最新更新