31: wf_engine.synch_attr_count := 0;
32:
33: exception
34: when others then
35: Wf_Core.Context('Wf_Item', 'ClearCache');
36: raise;
37: end ClearCache;
38:
39: --
78: when others then
79: status := 'x'; -- Treat errors like incomplete process
80: end;
81: if (nvl(status, 'x') <> wf_engine.eng_completed) then
82: Wf_Core.Token('ITEMTYPE', itemtype);
83: Wf_Core.Token('ITEMKEY', itemkey);
84: Wf_Core.Raise('WFENG_SYNCH_ITEM');
85: end if;
86: end if;
79: status := 'x'; -- Treat errors like incomplete process
80: end;
81: if (nvl(status, 'x') <> wf_engine.eng_completed) then
82: Wf_Core.Token('ITEMTYPE', itemtype);
83: Wf_Core.Token('ITEMKEY', itemkey);
84: Wf_Core.Raise('WFENG_SYNCH_ITEM');
85: end if;
86: end if;
87:
80: end;
81: if (nvl(status, 'x') <> wf_engine.eng_completed) then
82: Wf_Core.Token('ITEMTYPE', itemtype);
83: Wf_Core.Token('ITEMKEY', itemkey);
84: Wf_Core.Raise('WFENG_SYNCH_ITEM');
85: end if;
86: end if;
87:
88: -- Query new values
125: WF_ITEM.ClearCache;
126:
127: else
128:
129: Wf_Core.Context('Wf_Item', 'InitCache', itemtype, itemkey);
130: raise;
131:
132: end if;
133:
131:
132: end if;
133:
134: when others then
135: Wf_Core.Context('Wf_Item', 'InitCache', itemtype, itemkey);
136: raise;
137: end InitCache;
138:
139: --
206: ITEM_KEY=Set_Item_Parent.itemkey;
207: exception
208: when connect_by_loop then
209: rollback to wf_loop_savepoint;
210: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
211: parent_itemtype, parent_itemkey, parent_context);
212: Wf_Core.Token('PARENT_ITEM_TYPE', parent_itemtype);
213: Wf_Core.Token('PARENT_ITEM_KEY', parent_itemkey);
214: Wf_Core.Token('ITEM_TYPE', itemtype);
208: when connect_by_loop then
209: rollback to wf_loop_savepoint;
210: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
211: parent_itemtype, parent_itemkey, parent_context);
212: Wf_Core.Token('PARENT_ITEM_TYPE', parent_itemtype);
213: Wf_Core.Token('PARENT_ITEM_KEY', parent_itemkey);
214: Wf_Core.Token('ITEM_TYPE', itemtype);
215: Wf_Core.Token('ITEM_KEY', itemkey);
216: Wf_Core.Raise('WFENG_ITEM_LOOP');
209: rollback to wf_loop_savepoint;
210: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
211: parent_itemtype, parent_itemkey, parent_context);
212: Wf_Core.Token('PARENT_ITEM_TYPE', parent_itemtype);
213: Wf_Core.Token('PARENT_ITEM_KEY', parent_itemkey);
214: Wf_Core.Token('ITEM_TYPE', itemtype);
215: Wf_Core.Token('ITEM_KEY', itemkey);
216: Wf_Core.Raise('WFENG_ITEM_LOOP');
217: end;
210: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
211: parent_itemtype, parent_itemkey, parent_context);
212: Wf_Core.Token('PARENT_ITEM_TYPE', parent_itemtype);
213: Wf_Core.Token('PARENT_ITEM_KEY', parent_itemkey);
214: Wf_Core.Token('ITEM_TYPE', itemtype);
215: Wf_Core.Token('ITEM_KEY', itemkey);
216: Wf_Core.Raise('WFENG_ITEM_LOOP');
217: end;
218: if (masterdetail) then
211: parent_itemtype, parent_itemkey, parent_context);
212: Wf_Core.Token('PARENT_ITEM_TYPE', parent_itemtype);
213: Wf_Core.Token('PARENT_ITEM_KEY', parent_itemkey);
214: Wf_Core.Token('ITEM_TYPE', itemtype);
215: Wf_Core.Token('ITEM_KEY', itemkey);
216: Wf_Core.Raise('WFENG_ITEM_LOOP');
217: end;
218: if (masterdetail) then
219: --Increment #WAITFORDETAIL master counter if it exists.
212: Wf_Core.Token('PARENT_ITEM_TYPE', parent_itemtype);
213: Wf_Core.Token('PARENT_ITEM_KEY', parent_itemkey);
214: Wf_Core.Token('ITEM_TYPE', itemtype);
215: Wf_Core.Token('ITEM_KEY', itemkey);
216: Wf_Core.Raise('WFENG_ITEM_LOOP');
217: end;
218: if (masterdetail) then
219: --Increment #WAITFORDETAIL master counter if it exists.
220: if (WF_ENGINE.AddToItemAttrNumber(parent_itemType, parent_itemKey,
221: '#WAITFORDETAIL', 1) is NOT NULL) then
222: if (parent_context is NOT null) then
223: --Increment/Create label counter.
224: if (length(parent_context) > 30) then
225: WF_CORE.Token('LABEL', parent_context);
226: WF_CORE.Token('LENGTH', '30');
227: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
228:
229: elsif (WF_ENGINE.AddToItemAttrNumber(parent_itemType, parent_itemKey,
222: if (parent_context is NOT null) then
223: --Increment/Create label counter.
224: if (length(parent_context) > 30) then
225: WF_CORE.Token('LABEL', parent_context);
226: WF_CORE.Token('LENGTH', '30');
227: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
228:
229: elsif (WF_ENGINE.AddToItemAttrNumber(parent_itemType, parent_itemKey,
230: '#CNT_'||parent_context, 1)
223: --Increment/Create label counter.
224: if (length(parent_context) > 30) then
225: WF_CORE.Token('LABEL', parent_context);
226: WF_CORE.Token('LENGTH', '30');
227: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
228:
229: elsif (WF_ENGINE.AddToItemAttrNumber(parent_itemType, parent_itemKey,
230: '#CNT_'||parent_context, 1)
231: is NULL) then
253: end if; --Caller is signalling that this "should" be a coordinated flow.
254:
255: exception
256: when no_data_found then
257: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
258: parent_itemtype, parent_itemkey, parent_context);
259: Wf_Core.Token('TYPE', itemtype);
260: Wf_Core.Token('KEY', itemkey);
261: Wf_Core.Raise('WFENG_ITEM');
255: exception
256: when no_data_found then
257: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
258: parent_itemtype, parent_itemkey, parent_context);
259: Wf_Core.Token('TYPE', itemtype);
260: Wf_Core.Token('KEY', itemkey);
261: Wf_Core.Raise('WFENG_ITEM');
262:
263: when ValTooLarge or ValTooLargeNew then
256: when no_data_found then
257: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
258: parent_itemtype, parent_itemkey, parent_context);
259: Wf_Core.Token('TYPE', itemtype);
260: Wf_Core.Token('KEY', itemkey);
261: Wf_Core.Raise('WFENG_ITEM');
262:
263: when ValTooLarge or ValTooLargeNew then
264: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
257: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
258: parent_itemtype, parent_itemkey, parent_context);
259: Wf_Core.Token('TYPE', itemtype);
260: Wf_Core.Token('KEY', itemkey);
261: Wf_Core.Raise('WFENG_ITEM');
262:
263: when ValTooLarge or ValTooLargeNew then
264: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
265: parent_itemtype, parent_itemkey, parent_context, 'TRUE');
260: Wf_Core.Token('KEY', itemkey);
261: Wf_Core.Raise('WFENG_ITEM');
262:
263: when ValTooLarge or ValTooLargeNew then
264: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
265: parent_itemtype, parent_itemkey, parent_context, 'TRUE');
266: WF_CORE.Token('LABEL', parent_context);
267: WF_CORE.Token('LENGTH', 30);
268: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
262:
263: when ValTooLarge or ValTooLargeNew then
264: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
265: parent_itemtype, parent_itemkey, parent_context, 'TRUE');
266: WF_CORE.Token('LABEL', parent_context);
267: WF_CORE.Token('LENGTH', 30);
268: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
269:
270: when others then
263: when ValTooLarge or ValTooLargeNew then
264: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
265: parent_itemtype, parent_itemkey, parent_context, 'TRUE');
266: WF_CORE.Token('LABEL', parent_context);
267: WF_CORE.Token('LENGTH', 30);
268: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
269:
270: when others then
271: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
264: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
265: parent_itemtype, parent_itemkey, parent_context, 'TRUE');
266: WF_CORE.Token('LABEL', parent_context);
267: WF_CORE.Token('LENGTH', 30);
268: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
269:
270: when others then
271: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
272: parent_itemtype, parent_itemkey, parent_context);
267: WF_CORE.Token('LENGTH', 30);
268: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
269:
270: when others then
271: Wf_Core.Context('Wf_Item', 'Set_Item_Parent', itemtype, itemkey,
272: parent_itemtype, parent_itemkey, parent_context);
273: raise;
274: end Set_Item_Parent;
275:
298: raise no_data_found;
299: end if;
300: exception
301: when no_data_found then
302: Wf_Core.Context('Wf_Item', 'SetItemOwner', itemtype, itemkey,
303: owner);
304: Wf_Core.Token('TYPE', itemtype);
305: Wf_Core.Token('KEY', itemkey);
306: Wf_Core.Raise('WFENG_ITEM');
300: exception
301: when no_data_found then
302: Wf_Core.Context('Wf_Item', 'SetItemOwner', itemtype, itemkey,
303: owner);
304: Wf_Core.Token('TYPE', itemtype);
305: Wf_Core.Token('KEY', itemkey);
306: Wf_Core.Raise('WFENG_ITEM');
307: when others then
308: Wf_Core.Context('Wf_Item', 'SetItemOwner', itemtype, itemkey,
301: when no_data_found then
302: Wf_Core.Context('Wf_Item', 'SetItemOwner', itemtype, itemkey,
303: owner);
304: Wf_Core.Token('TYPE', itemtype);
305: Wf_Core.Token('KEY', itemkey);
306: Wf_Core.Raise('WFENG_ITEM');
307: when others then
308: Wf_Core.Context('Wf_Item', 'SetItemOwner', itemtype, itemkey,
309: owner);
302: Wf_Core.Context('Wf_Item', 'SetItemOwner', itemtype, itemkey,
303: owner);
304: Wf_Core.Token('TYPE', itemtype);
305: Wf_Core.Token('KEY', itemkey);
306: Wf_Core.Raise('WFENG_ITEM');
307: when others then
308: Wf_Core.Context('Wf_Item', 'SetItemOwner', itemtype, itemkey,
309: owner);
310: raise;
304: Wf_Core.Token('TYPE', itemtype);
305: Wf_Core.Token('KEY', itemkey);
306: Wf_Core.Raise('WFENG_ITEM');
307: when others then
308: Wf_Core.Context('Wf_Item', 'SetItemOwner', itemtype, itemkey,
309: owner);
310: raise;
311: end SetItemOwner;
312:
339: wf_item.c_userkey := userkey;
340: end if;
341: exception
342: when no_data_found then
343: Wf_Core.Context('Wf_Item', 'SetItemUserKey', itemtype, itemkey,
344: userkey);
345: Wf_Core.Token('TYPE', itemtype);
346: Wf_Core.Token('KEY', itemkey);
347: Wf_Core.Raise('WFENG_ITEM');
341: exception
342: when no_data_found then
343: Wf_Core.Context('Wf_Item', 'SetItemUserKey', itemtype, itemkey,
344: userkey);
345: Wf_Core.Token('TYPE', itemtype);
346: Wf_Core.Token('KEY', itemkey);
347: Wf_Core.Raise('WFENG_ITEM');
348: when others then
349: Wf_Core.Context('Wf_Item', 'SetItemUserKey', itemtype, itemkey,
342: when no_data_found then
343: Wf_Core.Context('Wf_Item', 'SetItemUserKey', itemtype, itemkey,
344: userkey);
345: Wf_Core.Token('TYPE', itemtype);
346: Wf_Core.Token('KEY', itemkey);
347: Wf_Core.Raise('WFENG_ITEM');
348: when others then
349: Wf_Core.Context('Wf_Item', 'SetItemUserKey', itemtype, itemkey,
350: userkey);
343: Wf_Core.Context('Wf_Item', 'SetItemUserKey', itemtype, itemkey,
344: userkey);
345: Wf_Core.Token('TYPE', itemtype);
346: Wf_Core.Token('KEY', itemkey);
347: Wf_Core.Raise('WFENG_ITEM');
348: when others then
349: Wf_Core.Context('Wf_Item', 'SetItemUserKey', itemtype, itemkey,
350: userkey);
351: raise;
345: Wf_Core.Token('TYPE', itemtype);
346: Wf_Core.Token('KEY', itemkey);
347: Wf_Core.Raise('WFENG_ITEM');
348: when others then
349: Wf_Core.Context('Wf_Item', 'SetItemUserKey', itemtype, itemkey,
350: userkey);
351: raise;
352: end SetItemUserKey;
353:
382:
383: return(buf);
384: exception
385: when no_data_found then
386: Wf_Core.Context('Wf_Item', 'GetItemUserKey', itemtype, itemkey);
387: Wf_Core.Token('TYPE', itemtype);
388: Wf_Core.Token('KEY', itemkey);
389: Wf_Core.Raise('WFENG_ITEM');
390: when others then
383: return(buf);
384: exception
385: when no_data_found then
386: Wf_Core.Context('Wf_Item', 'GetItemUserKey', itemtype, itemkey);
387: Wf_Core.Token('TYPE', itemtype);
388: Wf_Core.Token('KEY', itemkey);
389: Wf_Core.Raise('WFENG_ITEM');
390: when others then
391: Wf_Core.Context('Wf_Item', 'GetItemUserKey', itemtype, itemkey);
384: exception
385: when no_data_found then
386: Wf_Core.Context('Wf_Item', 'GetItemUserKey', itemtype, itemkey);
387: Wf_Core.Token('TYPE', itemtype);
388: Wf_Core.Token('KEY', itemkey);
389: Wf_Core.Raise('WFENG_ITEM');
390: when others then
391: Wf_Core.Context('Wf_Item', 'GetItemUserKey', itemtype, itemkey);
392: raise;
385: when no_data_found then
386: Wf_Core.Context('Wf_Item', 'GetItemUserKey', itemtype, itemkey);
387: Wf_Core.Token('TYPE', itemtype);
388: Wf_Core.Token('KEY', itemkey);
389: Wf_Core.Raise('WFENG_ITEM');
390: when others then
391: Wf_Core.Context('Wf_Item', 'GetItemUserKey', itemtype, itemkey);
392: raise;
393: end GetItemUserKey;
387: Wf_Core.Token('TYPE', itemtype);
388: Wf_Core.Token('KEY', itemkey);
389: Wf_Core.Raise('WFENG_ITEM');
390: when others then
391: Wf_Core.Context('Wf_Item', 'GetItemUserKey', itemtype, itemkey);
392: raise;
393: end GetItemUserKey;
394:
395: --
418: end if;
419:
420: exception
421: when OTHERS then
422: Wf_Core.Context('Wf_Item', 'Item_Exist', itemtype, itemkey);
423: raise;
424: end Item_Exist;
425:
426: --
449: when NO_DATA_FOUND then
450: wflow := '';
451: version := -1;
452: when OTHERS then
453: Wf_Core.Context('Wf_Item', 'Root_Process', itemtype, itemkey);
454: raise;
455: end Root_Process;
456:
457: --
596: end if;
597:
598: exception
599: when DUP_VAL_ON_INDEX then
600: Wf_Core.Context('Wf_Item', 'Create_Item', itemtype, itemkey, wflow);
601: Wf_Core.Token('TYPE', itemtype);
602: Wf_Core.Token('KEY', itemkey);
603: Wf_Core.Raise('WFENG_ITEM_UNIQUE');
604: when OTHERS then
597:
598: exception
599: when DUP_VAL_ON_INDEX then
600: Wf_Core.Context('Wf_Item', 'Create_Item', itemtype, itemkey, wflow);
601: Wf_Core.Token('TYPE', itemtype);
602: Wf_Core.Token('KEY', itemkey);
603: Wf_Core.Raise('WFENG_ITEM_UNIQUE');
604: when OTHERS then
605: Wf_Core.Context('Wf_Item', 'Create_Item', itemtype, itemkey, wflow);
598: exception
599: when DUP_VAL_ON_INDEX then
600: Wf_Core.Context('Wf_Item', 'Create_Item', itemtype, itemkey, wflow);
601: Wf_Core.Token('TYPE', itemtype);
602: Wf_Core.Token('KEY', itemkey);
603: Wf_Core.Raise('WFENG_ITEM_UNIQUE');
604: when OTHERS then
605: Wf_Core.Context('Wf_Item', 'Create_Item', itemtype, itemkey, wflow);
606: raise;
599: when DUP_VAL_ON_INDEX then
600: Wf_Core.Context('Wf_Item', 'Create_Item', itemtype, itemkey, wflow);
601: Wf_Core.Token('TYPE', itemtype);
602: Wf_Core.Token('KEY', itemkey);
603: Wf_Core.Raise('WFENG_ITEM_UNIQUE');
604: when OTHERS then
605: Wf_Core.Context('Wf_Item', 'Create_Item', itemtype, itemkey, wflow);
606: raise;
607: end Create_Item;
601: Wf_Core.Token('TYPE', itemtype);
602: Wf_Core.Token('KEY', itemkey);
603: Wf_Core.Raise('WFENG_ITEM_UNIQUE');
604: when OTHERS then
605: Wf_Core.Context('Wf_Item', 'Create_Item', itemtype, itemkey, wflow);
606: raise;
607: end Create_Item;
608:
609: --
623: Wf_Item.InitCache(itemtype, itemkey);
624: return(wf_item.c_begin_date);
625: exception
626: when NO_DATA_FOUND then
627: Wf_Core.Context('Wf_Item', 'Active_Date', itemtype, itemkey);
628: Wf_Core.Token('TYPE', itemtype);
629: Wf_Core.Token('KEY', itemkey);
630: Wf_Core.Raise('WFENG_ITEM');
631: when OTHERS then
624: return(wf_item.c_begin_date);
625: exception
626: when NO_DATA_FOUND then
627: Wf_Core.Context('Wf_Item', 'Active_Date', itemtype, itemkey);
628: Wf_Core.Token('TYPE', itemtype);
629: Wf_Core.Token('KEY', itemkey);
630: Wf_Core.Raise('WFENG_ITEM');
631: when OTHERS then
632: Wf_Core.Context('Wf_Item', 'Active_Date', itemtype, itemkey);
625: exception
626: when NO_DATA_FOUND then
627: Wf_Core.Context('Wf_Item', 'Active_Date', itemtype, itemkey);
628: Wf_Core.Token('TYPE', itemtype);
629: Wf_Core.Token('KEY', itemkey);
630: Wf_Core.Raise('WFENG_ITEM');
631: when OTHERS then
632: Wf_Core.Context('Wf_Item', 'Active_Date', itemtype, itemkey);
633: end Active_Date;
626: when NO_DATA_FOUND then
627: Wf_Core.Context('Wf_Item', 'Active_Date', itemtype, itemkey);
628: Wf_Core.Token('TYPE', itemtype);
629: Wf_Core.Token('KEY', itemkey);
630: Wf_Core.Raise('WFENG_ITEM');
631: when OTHERS then
632: Wf_Core.Context('Wf_Item', 'Active_Date', itemtype, itemkey);
633: end Active_Date;
634:
628: Wf_Core.Token('TYPE', itemtype);
629: Wf_Core.Token('KEY', itemkey);
630: Wf_Core.Raise('WFENG_ITEM');
631: when OTHERS then
632: Wf_Core.Context('Wf_Item', 'Active_Date', itemtype, itemkey);
633: end Active_Date;
634:
635: --Function Acquire_lock (PRIVATE)
636: --This function tries to lock the particular item (for the give
689: CLOSE itemlock;
690: end if;
691: --In this case we do not want a TRUE/FALSE return
692: --we just raise the error.
693: Wf_Core.Context('Wf_Item', 'Acquire_lock', itemtype, itemkey);
694: raise;
695: end;
696:
697: --
839:
840: return 0;
841: exception
842: when ValTooLarge OR ValTooLargeNew then
843: Wf_Core.Context('WF_ENGINE', l_module, p_itemtype, p_itemkey,
844: l_parent_itemType, l_parent_itemKey);
845: WF_CORE.Token('LABEL', l_context_label);
846: WF_CORE.Token('LENGTH', 30);
847: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
841: exception
842: when ValTooLarge OR ValTooLargeNew then
843: Wf_Core.Context('WF_ENGINE', l_module, p_itemtype, p_itemkey,
844: l_parent_itemType, l_parent_itemKey);
845: WF_CORE.Token('LABEL', l_context_label);
846: WF_CORE.Token('LENGTH', 30);
847: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
848: when OTHERS then
849: WF_CORE.Context('WF_ITEM', 'SetEndDate', p_itemType, p_itemKey);
842: when ValTooLarge OR ValTooLargeNew then
843: Wf_Core.Context('WF_ENGINE', l_module, p_itemtype, p_itemkey,
844: l_parent_itemType, l_parent_itemKey);
845: WF_CORE.Token('LABEL', l_context_label);
846: WF_CORE.Token('LENGTH', 30);
847: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
848: when OTHERS then
849: WF_CORE.Context('WF_ITEM', 'SetEndDate', p_itemType, p_itemKey);
850: raise;
843: Wf_Core.Context('WF_ENGINE', l_module, p_itemtype, p_itemkey,
844: l_parent_itemType, l_parent_itemKey);
845: WF_CORE.Token('LABEL', l_context_label);
846: WF_CORE.Token('LENGTH', 30);
847: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
848: when OTHERS then
849: WF_CORE.Context('WF_ITEM', 'SetEndDate', p_itemType, p_itemKey);
850: raise;
851:
845: WF_CORE.Token('LABEL', l_context_label);
846: WF_CORE.Token('LENGTH', 30);
847: WF_CORE.Raise('WFENG_LABEL_TOO_LARGE');
848: when OTHERS then
849: WF_CORE.Context('WF_ITEM', 'SetEndDate', p_itemType, p_itemKey);
850: raise;
851:
852: end SetEndDate;
853: