【问题标题】:Is it possible to stop/run Form workflow from a controller?是否可以从控制器停止/运行表单工作流?
【发布时间】:2016-07-20 11:21:34
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: umbraco7 umbraco-contour


    【解决方案1】:

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

    【讨论】:

    • 谢谢,很高兴知道,我尝试了一种没有工作流的不同方法。下次试试这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 2019-06-17
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    相关资源
    最近更新 更多