diff --git a/bpmm02_spread.txt b/bpmm02_spread.txt index 38a0fac..f7973f3 100644 --- a/bpmm02_spread.txt +++ b/bpmm02_spread.txt @@ -47,6 +47,7 @@ main_block: BEGIN DECLARE v_all_signers VARCHAR(200); DECLARE v_done INT DEFAULT FALSE; DECLARE v_cnt INT; + DECLARE v_loop INT; SET v_crlf = CHAR(10); @@ -89,8 +90,9 @@ main_block: BEGIN SET v_nowStep = v_nextStep; SET v_now_elementId = v_elementId; SET v_step = 1; + SET v_loop = 1; - WHILE v_now_elementId <> 'stopNode' DO + WHILE v_now_elementId <> 'stopNode' and v_loop < 100 DO -- 先判斷 condition true/false IF v_elementId = 'conditionNode' THEN SELECT source_table, source_pk INTO v_tablename, v_source_pk FROM bpm_list WHERE flow_id = p_uuid; @@ -137,6 +139,9 @@ main_block: BEGIN v_elementId, v_stepId, v_nextStep, v_filterSet, v_nextStep_false, v_typeName, v_roleName FROM bpm_setup WHERE flow_id = p_uuid AND stepId = v_nextStep; + -- 防止無窮 loop + SET v_loop = v_loop + 1; + SET v_step = v_step + 1; SET v_nowStep = v_nextStep; SET v_now_elementId = v_elementId;