Workflow - Pętle
Workflow - Pętle
Warunek zakończenia pętli
Pętla zostanie przerwana jeżeli zapytanie SQL zwróci prawdę (TRUE). Warunek jest sprawdzany po zakończeniu/załatwieniu czynności. przykład:
SELECT count(*) > 1
FROM stages
WHERE ptstid = {stages.ptstid} AND isinst IS TRUE
AND prn_id = {stages.prn_id} AND is_fix IS TRUE
AND fixdat IS NOT NULL
Pętla zakończy się, gdy zostaną załatwione co najmniej 2 czynności równoległe (dla pętli typu "multi-instance").
[!ATTENTION] Brak przypisania do etapy (Brak szarfy na procedurze)
Gdy zostanie zmieniona definicja jednej czynności na pętlę multi. Taka zmiana nie jest kompatybilna z uruchomionymi już instancjami procedury i powoduje, że nikt nie jest przypisany do etapu, co może skutkować nie pojawieniem się szarfy. W takim przypadku należy ręcznie wygenerować (inserty) instancje do tej pętli.
INSERT INTO stages (sop_id,procid,ptstid,prn_id,stdver,ptstnm,ptsttp,orgarr,params,end___,duratn,is_fix,fixdat,fixper,orunid,sysdat,is_act,errlog,assign,props_,in_set,outset,isinst,actdat,state_,trbyev,prcref,allow_,commen) SELECT nextval('stages_sop_id_seq'::regclass),procid,ptstid, prn_id, stdver,ptstnm,ptsttp, array[orgarr] as orgarr, params,end___,duratn,is_fix,fixdat,fixper,orunid,sysdat,is_act,errlog,assign,props_,in_set,outset,isinst,actdat,state_,trbyev,prcref,allow_,commen FROM ( select sop_id,procid,ptstid, sop_id as prn_id, stdver,ptstnm,ptsttp, unnest(orgarr) as orgarr, params,end___,duratn,is_fix,fixdat,fixper,orunid,sysdat,is_act,errlog,assign,props_,in_set,outset,TRUE as isinst,actdat,state_,trbyev,prcref,allow_,commen from stages where ptstid = {ID ETAPU stages_def.ptstid} AND orgarr != '{}' AND is_act AND NOT isinst AND sop_id NOT IN (SELECT sop_id FROM stages WHERE ptstid = {ID ETAPU stages_def.ptstid} AND isinst) ) aa order by procid,sop_id;