1

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

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

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

谢谢

4

1 回答 1

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 可能需要一些尝试和错误。上面的代码取自根据表单中选择的值运行不同工作流的东西,并在另一个工作流中运行,因此已经为您填充了 e。

您需要的命名空间是:

using Umbraco.Forms.Core;
using Umbraco.Forms.Core.Enums;
using Umbraco.Forms.Core.Services;
using Umbraco.Forms.Data.Storage;
于 2016-07-20T15:58:23.463 回答