1: package body WF_STANDARD as
2: /* $Header: wfstdb.pls 120.11.12010000.2 2008/12/05 15:57:09 alsosa ship $ */
3:
4:
5:
98: resultout := wf_engine.eng_null;
99:
100: exception
101: when others then
102: Wf_Core.Context('Wf_Standard', 'AbortProcess', itemtype,
103: itemkey, to_char(actid), funcmode);
104: raise;
105: end AbortProcess;
106:
119: begin
120: resultout := wf_engine.eng_null;
121: exception
122: when others then
123: Wf_Core.Context('Wf_Standard', 'OrJoin', itemtype, itemkey,
124: to_char(actid), funcmode);
125: raise;
126: end OrJoin;
127:
148: end if;
149:
150: -- SYNCHMODE: Not allowed
151: if (itemkey = wf_engine.eng_synch) then
152: Wf_Core.Token('OPERATION', 'Wf_Standard.AndJoin');
153: Wf_Core.Raise('WFENG_SYNCH_DISABLED');
154: end if;
155:
156: -- The And fails if there is at least one in-transition which is either
192: end if;
193: return;
194: exception
195: when others then
196: Wf_Core.Context('Wf_Standard', 'AndJoin', itemtype,
197: itemkey, to_char(actid), funcmode);
198: raise;
199: end AndJoin;
200:
247:
248: resultout := wf_engine.eng_completed||':'||wf_engine.eng_null;
249: exception
250: when others then
251: Wf_Core.Context('Wf_Standard', 'Assign', itemtype,
252: itemkey, to_char(actid), funcmode);
253: raise;
254: end Assign;
255:
277: end if;
278:
279: -- SYNCHMODE: Not allowed
280: if (itemkey = wf_engine.eng_synch) then
281: Wf_Core.Token('OPERATION', 'Wf_Standard.GetUrl');
282: Wf_Core.Raise('WFENG_SYNCH_DISABLED');
283: end if;
284:
285: -- Get item attribute name
295:
296: resultout := wf_engine.eng_completed||':'||wf_engine.eng_null;
297: exception
298: when others then
299: Wf_Core.Context('Wf_Standard', 'GetUrl', itemtype,
300: itemkey, to_char(actid), funcmode);
301: raise;
302: end GetURL;
303:
302: end GetURL;
303:
304:
305: -- Compare
306: -- Standard Compare function.
307: -- OUT
308: -- comparison value (LT, EQ, GT, NULL)
309: -- ACTIVITY ATTRIBUTES REFERENCED
310: -- VALUE1 - Test value
398: end if;
399:
400: exception
401: when others then
402: Wf_Core.Context('Wf_Standard', 'Compare', itemtype,
403: itemkey, to_char(actid), funcmode);
404: raise;
405: end Compare;
406:
476: end if;
477:
478: exception
479: when others then
480: Wf_Core.Context('Wf_Standard', 'CompareExecutionTime', itemtype,
481: itemkey, to_char(actid), funcmode);
482: raise;
483: end CompareExecutionTime;
484:
690: end if;
691:
692: exception
693: when others then
694: Wf_Core.Context('Wf_Standard', 'CompareEventProperty', itemtype,
695: itemkey, to_char(actid), funcmode);
696: raise;
697: end CompareEventProperty;
698:
869: end if; -- RUN
870:
871: exception
872: when others then
873: Wf_Core.Context('Wf_Standard', 'SetEventProperty', itemtype,
874: itemkey, to_char(actid), funcmode);
875: raise;
876: end SetEventProperty;
877:
1008: end if; -- RUN
1009:
1010: exception
1011: when others then
1012: Wf_Core.Context('Wf_Standard', 'GetEventProperty', itemtype,
1013: itemkey, to_char(actid), funcmode);
1014: raise;
1015: end GetEventProperty;
1016:
1131: resultout := wf_engine.eng_completed;
1132:
1133: exception
1134: when others then
1135: Wf_Core.Context('Wf_Standard', 'LaunchProcess', itemtype,
1136: itemkey, to_char(actid), Sitemtype||':'||Sitemkey||SProcess);
1137: raise;
1138: end LaunchProcess;
1139:
1171: return;
1172: end if;
1173:
1174: if (itemkey = wf_engine.eng_synch) then
1175: Wf_Core.Token('OPERATION', 'Wf_Standard.ForkItem');
1176: Wf_Core.Raise('WFENG_SYNCH_DISABLED');
1177: end if;
1178:
1179:
1203: resultout := wf_engine.eng_completed;
1204:
1205: exception
1206: when others then
1207: Wf_Core.Context('Wf_Standard', 'ForkItem', itemtype,
1208: itemkey, to_char(actid), Sitemkey);
1209: raise;
1210: end ForkItem;
1211:
1222: begin
1223: resultout := wf_engine.eng_completed||':'||wf_engine.eng_null;
1224: exception
1225: when others then
1226: Wf_Core.Context('Wf_Standard', 'Noop', itemtype,
1227: itemkey, to_char(actid), funcmode);
1228: raise;
1229: end Noop;
1230:
1304:
1305:
1306: exception
1307: when others then
1308: Wf_Core.Context('Wf_Standard', 'Notify', itemtype,
1309: itemkey, to_char(actid), funcmode);
1310: raise;
1311: end Notify;
1312:
1331: resultout := wf_engine.eng_notified||':'||wf_engine.eng_null||
1332: ':'||wf_engine.eng_null;
1333: exception
1334: when others then
1335: Wf_Core.Context('Wf_Standard', 'Block', itemtype,
1336: itemkey, to_char(actid), funcmode);
1337: raise;
1338: end Block;
1339:
1374: end if;
1375:
1376: exception
1377: when others then
1378: Wf_Core.Context('Wf_Standard', 'Defer', itemtype, itemkey,
1379: to_char(actid), funcmode);
1380: raise;
1381: end Defer;
1382:
1442: end if;
1443:
1444: -- SYNCHMODE: Not allowed
1445: if (itemkey = wf_engine.eng_synch) then
1446: Wf_Core.Token('OPERATION', 'Wf_Standard.Wait');
1447: Wf_Core.Raise('WFENG_SYNCH_DISABLED');
1448: end if;
1449:
1450: -- Check if this is the first or second execution of this activity.
1525: end if;
1526:
1527: exception
1528: when wf_invalid_mode then
1529: Wf_Core.Context('Wf_Standard', 'Wait', itemtype, itemkey,
1530: to_char(actid), funcmode);
1531: Wf_Core.Token('COMMAND', wait_mode);
1532: Wf_Core.Raise('WFSQL_COMMAND');
1533: when others then
1530: to_char(actid), funcmode);
1531: Wf_Core.Token('COMMAND', wait_mode);
1532: Wf_Core.Raise('WFSQL_COMMAND');
1533: when others then
1534: Wf_Core.Context('Wf_Standard', 'Wait', itemtype, itemkey,
1535: to_char(actid), funcmode);
1536: raise;
1537: end Wait;
1538:
1566: end if;
1567:
1568: -- SYNCHMODE: Not allowed
1569: if (itemkey = wf_engine.eng_synch) then
1570: Wf_Core.Token('OPERATION', 'Wf_Standard.ResetError');
1571: Wf_Core.Raise('WFENG_SYNCH_DISABLED');
1572: end if;
1573:
1574: -- Get RETRY or SKIP command
1603:
1604: resultout := wf_engine.eng_null;
1605: exception
1606: when wf_invalid_command then
1607: Wf_Core.Context('Wf_Standard', 'ResetError', itemtype,
1608: itemkey, to_char(actid), funcmode);
1609: Wf_Core.Token('COMMAND', cmd);
1610: Wf_Core.Raise('WFSQL_COMMAND');
1611: when others then
1608: itemkey, to_char(actid), funcmode);
1609: Wf_Core.Token('COMMAND', cmd);
1610: Wf_Core.Raise('WFSQL_COMMAND');
1611: when others then
1612: Wf_Core.Context('Wf_Standard', 'ResetError', itemtype,
1613: itemkey, to_char(actid), funcmode);
1614: raise;
1615: end ResetError;
1616:
1680: end if;
1681:
1682: -- SYNCHMODE: Not allowed
1683: if (itemkey = wf_engine.eng_synch) then
1684: Wf_Core.Token('OPERATION', 'Wf_Standard.AndJoin');
1685: Wf_Core.Raise('WFENG_SYNCH_DISABLED');
1686: end if;
1687:
1688: actdate := wf_item.active_date(itemtype, itemkey);
1782: end;
1783: end loop;
1784: exception
1785: when wf_invalid_command then
1786: wf_core.context('Wf_Standard', 'RoleResoluion',
1787: itemtype, itemkey, to_char(actid), funcmode);
1788: wf_core.token('COMMAND', cmd);
1789: wf_core.raise('WFSQL_COMMAND');
1790: when others then
1787: itemtype, itemkey, to_char(actid), funcmode);
1788: wf_core.token('COMMAND', cmd);
1789: wf_core.raise('WFSQL_COMMAND');
1790: when others then
1791: wf_core.Context('Wf_Standard', 'RoleResolution',
1792: itemtype, itemkey, to_char(actid), funcmode);
1793: raise;
1794: end RoleResolution;
1795:
1816: end if;
1817:
1818: -- SYNCHMODE: Not allowed
1819: if (itemkey = wf_engine.eng_synch) then
1820: Wf_Core.Token('OPERATION', 'Wf_Standard.AndJoin');
1821: Wf_Core.Raise('WFENG_SYNCH_DISABLED');
1822: end if;
1823:
1824: l_waiting_activity := upper(Wf_Engine.GetActivityAttrText(
1835: end if;
1836:
1837: exception
1838: when wf_invalid_command then
1839: Wf_Core.Context('Wf_Standard', 'ContinueFlow',
1840: itemtype,itemkey, to_char(actid), funcmode);
1841: Wf_Core.Token('COMMAND', l_waiting_flow );
1842: Wf_Core.Raise('WFSQL_COMMAND');
1843: when others then
1840: itemtype,itemkey, to_char(actid), funcmode);
1841: Wf_Core.Token('COMMAND', l_waiting_flow );
1842: Wf_Core.Raise('WFSQL_COMMAND');
1843: when others then
1844: Wf_Core.Context('Wf_Standard', 'ContinueFlow',
1845: itemtype,itemkey, to_char(actid), funcmode);
1846: raise;
1847: end continueflow;
1848:
1869: end if;
1870:
1871: -- SYNCHMODE: Not allowed
1872: if (itemkey = wf_engine.eng_synch) then
1873: Wf_Core.Token('OPERATION', 'Wf_Standard.WaitForFlow');
1874: Wf_Core.Raise('WFENG_SYNCH_DISABLED');
1875: end if;
1876:
1877: l_continuation_activity := upper(Wf_Engine.GetActivityAttrText(
1891: end if;
1892:
1893: exception
1894: when wf_invalid_command then
1895: Wf_Core.Context('Wf_Standard', 'WaitForFlow',
1896: itemtype,itemkey, to_char(actid), funcmode);
1897: Wf_Core.Token('COMMAND', l_continuation_flow );
1898: Wf_Core.Raise('WFSQL_COMMAND');
1899: when others then
1896: itemtype,itemkey, to_char(actid), funcmode);
1897: Wf_Core.Token('COMMAND', l_continuation_flow );
1898: Wf_Core.Raise('WFSQL_COMMAND');
1899: when others then
1900: Wf_Core.Context('Wf_Standard', 'WaitForFlow',
1901: itemtype,itemkey, to_char(actid), funcmode);
1902: raise;
1903: end WaitForFlow;
1904:
1961: wf_engine.SetItemAttrNumber(
1962: itemtype, itemkey, 'LOOP_COUNT'||':'||actid,loop_count);
1963: exception
1964: when others then
1965: wf_core.context('Wf_Standard','LoopCount',
1966: itemtype, itemkey, to_char(actid), funcmode);
1967: raise;
1968: end loopcounter;
1969:
1968: end loopcounter;
1969:
1970:
1971: -- VoteForResultType
1972: -- Standard Voting Function
1973: -- IN
1974: -- itemtype - A valid item type from (WF_ITEM_TYPES table).
1975: -- itemkey - A string generated from the application object's primary key.
1976: -- actid - The process activity(instance id).
1991: -- - percentage ofvotes cast.
1992: --
1993: -- - REQUIRE_ALL_VOTES - Evaluate voting after all votes are cast.
1994: -- - If a Timeout occurs and all votes have not
1995: -- - been cast then the standard timeout
1996: -- - transition is taken. Votes are calculated
1997: -- - as a percenatage of users notified to vote.
1998: --
1999: -- - TALLY_ON_EVERY_VOTE - Evaluate voting after every vote or a
2005: -- - of votes cast.
2006: --
2007: -- "One attribute for each of the activities result type codes"
2008: --
2009: -- - The standard Activity VOTEFORRESULTTYPE has the WFSTD_YES_NO
2010: -- - result type assigned.
2011: -- - Thefore activity has two activity attributes.
2012: --
2013: -- Y - Percenatage required for Yes transition
2056: end if;
2057:
2058: -- SYNCHMODE: Not allowed
2059: if (itemkey = wf_engine.eng_synch) then
2060: Wf_Core.Token('OPERATION', 'Wf_Standard.VotForResultType');
2061: Wf_Core.Raise('WFENG_SYNCH_DISABLED');
2062: end if;
2063:
2064: -- Get Notifications group_id for activity
2166: end if;
2167: return;
2168: exception
2169: when wf_invalid_command then
2170: Wf_Core.Context('Wf_Standard', 'VoteForResultType', itemtype,
2171: itemkey, to_char(actid), funcmode);
2172: Wf_Core.Token('COMMAND', l_voting_option);
2173: Wf_Core.Raise('WFSQL_COMMAND');
2174: when others then
2171: itemkey, to_char(actid), funcmode);
2172: Wf_Core.Token('COMMAND', l_voting_option);
2173: Wf_Core.Raise('WFSQL_COMMAND');
2174: when others then
2175: Wf_Core.Context('Wf_Standard', 'VoteForResultType',itemtype,
2176: itemkey, to_char(actid), funcmode);
2177: raise;
2178: end VoteForResultType;
2179:
2241: end;
2242: resultout := wf_engine.eng_null;
2243: exception
2244: when others then
2245: wf_core.context('Wf_Standard', 'WaitForMasterFlow',
2246: itemtype,itemkey,to_char(actid),continuation_activity);
2247: raise;
2248: end WaitForMasterFlow;
2249:
2361:
2362:
2363: exception
2364: when others then
2365: wf_core.context('Wf_Standard', 'WaitForDetailFlow',
2366: itemtype,itemkey,to_char(actid),continuation_activity);
2367: raise;
2368: end WaitForDetailFlow;
2369:
2418: ContinueDetailFlow.resultout := wf_engine.eng_null;
2419:
2420: exception
2421: when others then
2422: wf_core.context('Wf_Standard','ContinueDetailFlow',
2423: itemtype, itemkey, to_char(actid),waiting_activity);
2424: raise;
2425: end ContinueDetailFlow;
2426:
2644: end if; --First execution
2645:
2646: exception
2647: when others then
2648: wf_core.context('Wf_Standard', 'ContinueMasterFlow',
2649: itemtype, itemkey, to_char(actid), waiting_activity);
2650: raise;
2651: end ContinueMasterFlow;
2652:
2746: result := wf_engine.eng_completed;
2747: END IF;
2748: EXCEPTION
2749: WHEN OTHERS THEN
2750: WF_CORE.Context('WF_STANDARD', 'InitializeErrors',
2751: itemtype, itemkey, actid, funcmode);
2752: RAISE;
2753: END InitializeErrors;
2754:
2812: END IF;
2813:
2814: EXCEPTION
2815: WHEN OTHERS THEN
2816: WF_CORE.Context('WF_STANDARD', 'CheckErrorActive',
2817: itemtype, itemkey, actid, funcmode);
2818: RAISE;
2819: END CheckErrorActive;
2820: -- -------------------------------------------------------------------
2932: -- Set the PL/SQL Document for the Event Details
2933: wf_engine.SetItemAttrText(itemtype => itemtype,
2934: itemkey => itemkey,
2935: aname => 'EVENT_DETAILS',
2936: avalue => 'PLSQL:WF_STANDARD.EVENTDETAILS/'||ItemType||':'||ItemKey);
2937:
2938: wf_engine.SetItemAttrText(itemtype => itemtype,
2939: itemkey => itemkey,
2940: aname => 'ERROR_DETAILS',
2937:
2938: wf_engine.SetItemAttrText(itemtype => itemtype,
2939: itemkey => itemkey,
2940: aname => 'ERROR_DETAILS',
2941: avalue => 'PLSQL:WF_STANDARD.ErrorDetails/'||ItemType||':'||ItemKey);
2942:
2943: wf_engine.SetItemAttrText(itemtype => itemtype,
2944: itemkey => itemkey,
2945: aname => 'SUBSCRIPTION_DETAILS',
2942:
2943: wf_engine.SetItemAttrText(itemtype => itemtype,
2944: itemkey => itemkey,
2945: aname => 'SUBSCRIPTION_DETAILS',
2946: avalue => 'PLSQL:WF_STANDARD.SubscriptionDetails/'||ItemType||':'||ItemKey);
2947:
2948: -- Set the Value for the Error Subscription URL
2949: wf_engine.SetItemAttrText(itemtype => itemtype,
2950: itemkey => itemkey,
2970: resultout := wf_engine.eng_completed;
2971: END IF;
2972: EXCEPTION
2973: WHEN OTHERS THEN
2974: WF_CORE.Context('WF_STANDARD', 'InitializeEventError',
2975: itemtype, itemkey, actid, funcmode);
2976: RAISE;
2977: END InitializeEventError;
2978: -- --------------------------------------------------------------------
3184: document := l_result;
3185:
3186: exception
3187: when others then
3188: wf_core.context('WF_STANDARD','EventDetails',document_id, display_type);
3189: raise;
3190: end EventDetails;
3191: -- --------------------------------------------------------------------
3192: -- Retry Raise
3259: END IF;
3260:
3261: EXCEPTION
3262: WHEN OTHERS THEN
3263: WF_CORE.Context('WF_STANDARD', 'RetryRaise',
3264: itemtype, itemkey, actid, funcmode);
3265: RAISE;
3266: end RetryRaise;
3267: -- --------------------------------------------------------------------
3349: END IF;
3350:
3351: EXCEPTION
3352: WHEN OTHERS THEN
3353: WF_CORE.Context('WF_STANDARD', 'GetAgents',
3354: itemtype, itemkey, actid, funcmode);
3355: RAISE;
3356: end GetAgents;
3357: -- --------------------------------------------------------------------
3414: END IF;
3415:
3416: EXCEPTION
3417: WHEN OTHERS THEN
3418: WF_CORE.Context('WF_STANDARD', 'GetAckAgent',
3419: itemtype, itemkey, actid, funcmode);
3420: RAISE;
3421: end GetAckAgent;
3422:
3544: end if;
3545: document := l_result;
3546: exception
3547: when others then
3548: wf_core.context('WF_STANDARD', 'SubscriptionDetails', document_id);
3549: raise;
3550: end SubscriptionDetails;
3551:
3552: -- ErrorDetails
3621: end if;
3622: document := l_result;
3623: exception
3624: when others then
3625: wf_core.context('WF_STANDARD', 'ErrorDetails', document_id);
3626: raise;
3627: end ErrorDetails;
3628:
3629: -- SubscriptionAction
3661: end if;
3662:
3663: end SubscriptionAction;
3664:
3665: END WF_STANDARD;