2016-07-20 9 views
1

私はリンクが、私が承認するアクセスされた場合は/に変更レコード ステータスワークフローを呼び出すことによって、(クエリ文字列で レコードIDとアクションタイプを持つ)レコードを削除コントローラからフォームワークフローを停止/実行することはできますか?

  1. 、以下を達成しようとしていますコントローラ。それはレコードが送信されると、コントローラから

  2. を ワークフローを実行することが可能ですが、私は電子メール のレコードがすでに存在するかどうかを確認し、この場合には新しいレコードを保存するからフォームを停止します。私は RecordInsertingイベントにフックして何かをしますが、 私はレコードの保存をスキップしてキャンセル/すべてのワークフローの実行をキャンセル/停止することができますか?

コードからワークフローを実行するには感謝

答えて

2

は、あなたはそれがGUIDだに基づいてワークフローを取得することができますWorkflowStorageクラスにアクセスする必要があります。これを行うには、次のようなものを入力します。

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; 
+0

おかげで、私はワークフローせずに異なるアプローチを試してみました。次回これを試してみる – Webpandit

関連する問題