在Campaign Standard中,工作流程引擎可確保工作流程例項僅由一個程式執行。 封鎖匯入、長時間執行查詢或寫入資料庫等活動會導致執行時無法執行任何其他工作。
另一方面,非封鎖活動不會封鎖其他工作的執行(通常是等待事件的活動,例如 Scheduler 活動)。
這可能會導致這樣一種情況:即使相同工作流程的上次執行尚未完成,排程型工作流程仍可以開始執行,可能會導致未預期的資料問題。
因此,在設計包含多個活動的已排程工作流程時,您需要確保工作流程在完成前不會重新排程。 若要這麼做,您需要設定工作流程,以防止其在先前執行的一或多個任務仍擱置時執行。
若要檢查先前工作流程執行的一或多個任務是否仍在擱置中,您需要使用 Query 和 Test 活動。
新增 Query 活動之後 Scheduler 活動,然後進行如下設定。
將活動的資源變更為 WorkflowTaskDetail,表示它會鎖定工作流程的目前任務。
使用下列規則設定查詢:
第一個規則會篩選出目前工作(query2)以及屬於目前工作流程的下一個排程工作(schedule2)。
當 Scheduler 活動開始,會立即新增另一個排程工作,以便在下一個排程時間執行,並啟動工作流程。 因此,在尋找先前執行的擱置任務時,請務必篩選查詢以及排程任務。
第二個規則會判斷先前執行的工作流程是否有任何工作仍在進行中(擱置中),這與0執行狀態相對應。
新增 Test 活動,以檢查傳回的擱置任務數目。 Query 活動。 為此,請設定兩個出站轉變。
您現在可以根據需要設定工作流程的其餘部分。 如果工作流程執行因待定任務而取消,則當工作流程按排程再次執行時,它可以完成這些步驟。 這將確保只有在先前執行中沒有作用中(擱置)任務時,工作流程執行才會繼續。