2016-07-20 5 views
1

나는 아래에 달성하기 위해 노력하고,컨트롤러에서 양식 워크 플로를 중지/실행할 수 있습니까?

링크가에 변경 기록 상태 워크 플로우를 호출하여 내가 ( recordId를하고 쿼리 문자열의 행동 유형) 기록을 삭제/승인 할 액세스 할
  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