DBA Data[Home] [Help]

PACKAGE: APPS.WF_CACHE

Source


1 package WF_CACHE as
2  /* $Header: WFCACHES.pls 120.2 2006/02/22 16:39:05 rwunderl ship $ */
3 
4 /*======================================+
5  |                                      |
6  | Global Configuration Variables       |
7  |                                      |
8  +======================================+================================*/
9 
10  ErrorOnCollision       BOOLEAN := FALSE;
11 
12  MaxActivities             PLS_INTEGER  := 10000;
13  MaxActivityAttrs          PLS_INTEGER  := 50000;
14  MaxActivityAttrValues     PLS_INTEGER  := 50000;
15  MaxItemAttributes         PLS_INTEGER  := 1000;
16  MaxItemAttrValues         PLS_INTEGER  := 1000;
17  MaxItemTypes              PLS_INTEGER  := 50;
18  MaxProcessActivities      PLS_INTEGER  := 10000;
19  MaxActivityTransitions    PLS_INTEGER  := 5000;
20  MaxProcessStartActivities PLS_INTEGER := 10000;
21 
22  task_FAILED            CONSTANT PLS_INTEGER  := 1; -- WF_CACHE was not able to
23                                                     -- complete the task.
24 
25  task_SUCCESS           CONSTANT PLS_INTEGER  := 0; -- WF_CACHE was able to
26                                                     -- successfully complete
27                                                     -- the task.
28 
29   TAB_Activities             CONSTANT PLS_INTEGER  := 1;
30   TAB_ActivityAttributes     CONSTANT PLS_INTEGER  := 2;
31   TAB_ActivityAttrValues     CONSTANT PLS_INTEGER  := 3;
32   TAB_ItemAttributes         CONSTANT PLS_INTEGER  := 4;
33   TAB_ItemTypes              CONSTANT PLS_INTEGER  := 5;
34   TAB_ProcessActivities      CONSTANT PLS_INTEGER  := 6;
35   TAB_NLSParameters          CONSTANT PLS_INTEGER  := 7;
36   TAB_ItemAttrValues         CONSTANT PLS_INTEGER  := 8;
37   TAB_ActivityTransitions    CONSTANT PLS_INTEGER  := 9;
38   TAB_ProcessStartActivities CONSTANT PLS_INTEGER := 10;
39 
40 
41 /*======================================+
42  |                                      |
43  | PL/SQL Record and Table Types        |
44  |                                      |
45  +======================================+================================+
46  | The meta-data stored in the design time tables are represented here   |
47  | as records.  There is then a corresponding PL/SQL table of those      |
48  | records.  The table type definition is used by the global cache.      |
49  | The record definitions are used by consumers of the cache and are     |
50  | passed and received to the accessor and manipulator apis.             |
51  |                                                                       |
52  +=======================================================================*/
53 
54 /*============================+
55  | WF_ACTIVITIES              |
56  +============================*/
57 
58    TYPE ActivityREC IS RECORD (
59                 ITEM_TYPE         VARCHAR2(8),
60                 NAME              VARCHAR2(30),
61                 VERSION           NUMBER,
62                 TYPE              VARCHAR2(8),
63                 RERUN             VARCHAR2(8),
64                 EXPAND_ROLE       VARCHAR2(1),
65                 COST              NUMBER,
66                 ERROR_ITEM_TYPE   VARCHAR2(8),
67                 ERROR_PROCESS     VARCHAR2(30),
68                 FUNCTION          VARCHAR2(240),
69                 FUNCTION_TYPE     VARCHAR2(30),
70                 EVENT_NAME        VARCHAR2(240),
71                 MESSAGE           VARCHAR2(30),
72                 BEGIN_DATE        DATE,
73                 END_DATE          DATE,
74                 DIRECTION         VARCHAR2(30) );
75 
76 
77    TYPE ActivityTAB IS TABLE OF ActivityREC index by binary_integer;
78 
79 
80 /*============================+
81  | WF_ACTIVITY_ATTRIBUTES     |
82  +============================*/
83 
84    TYPE ActivityAttributeREC IS RECORD (
85             ACTIVITY_ITEM_TYPE    VARCHAR2(8),
86             ACTIVITY_NAME         VARCHAR2(30),
87             ACTIVITY_VERSION      NUMBER,
88             NAME                  VARCHAR2(30),
89             TYPE                  VARCHAR2(8),
90             SUBTYPE               VARCHAR2(8),
91             FORMAT                VARCHAR2(240) );
92 
93    TYPE ActivityAttributeTAB IS TABLE OF ActivityAttributeREC
94         index by binary_integer;
95 
96 
97 /*============================+
98  | WF_ACTIVITY_ATTR_VALUES    |
99  +============================*/
100 
101    TYPE ActivityAttrValueREC IS RECORD (
102             PROCESS_ACTIVITY_ID   NUMBER,
103             NAME                  VARCHAR2(30),
104             VALUE_TYPE            VARCHAR2(8),
105             TEXT_VALUE            VARCHAR2(4000),
106             NUMBER_VALUE          NUMBER,
107             DATE_VALUE            DATE );
108 
109    TYPE ActivityAttrValueTAB IS TABLE OF ActivityAttrValueREC
110         index by binary_integer;
111 
112 
113 /*============================+
114  | WF_ACTIVITY_TRANSITIONS    |
115  +============================*/
116 
117    TYPE ActivityTransitionREC IS RECORD (
118             FROM_PROCESS_ACTIVITY NUMBER,
119             RESULT_CODE           VARCHAR2(30),
120             TO_PROCESS_ACTIVITY   NUMBER,
121             PREV_LNK              NUMBER,
122             NEXT_LNK              NUMBER );
123 
124    TYPE ActivityTransitionTAB IS TABLE OF ActivityTransitionREC
125         index by binary_integer;
126 
127 
128 /*============================+
129  | WF_ITEM_ATTRIBUTES         |
130  +============================*/
131 
132    TYPE ItemAttributeREC IS RECORD (
133             ITEM_TYPE             VARCHAR2(8),
134             NAME                  VARCHAR2(30),
135             TYPE                  VARCHAR2(8),
136             SUBTYPE               VARCHAR2(8),
137             FORMAT                VARCHAR2(240),
138             TEXT_DEFAULT          VARCHAR2(4000),
139             NUMBER_DEFAULT        NUMBER,
140             DATE_DEFAULT          DATE);
141 
142     TYPE ItemAttributeTAB IS TABLE OF ItemAttributeREC
143         index by binary_integer;
144 
145 /*============================+
146  | WF_ITEM_ATTRIBUTE_VALUES   |
147  +============================*/
148 
149    TYPE ItemAttrValueREC IS RECORD (
150             ITEM_TYPE             VARCHAR2(8),
151             ITEM_KEY              VARCHAR2(240),
152             NAME                  VARCHAR2(30),
153             TEXT_VALUE            VARCHAR2(4000),
154             NUMBER_VALUE          NUMBER,
155             DATE_VALUE            DATE);
156 
157     TYPE ItemAttrValueTAB IS TABLE OF ItemAttrValueREC
158         index by binary_integer;
159 
160 
161 /*============================+
162  | WF_ITEM_TYPES              |
163  +============================*/
164 
165    TYPE ItemTypeREC IS RECORD (
166             NAME                  VARCHAR2(8),
167             WF_SELECTOR           VARCHAR2(240) );
168 
169    TYPE ItemTypeTAB IS TABLE OF ItemTypeREC index by binary_integer;
170 
171 
172 /*============================+
173  | WF_PROCESS_ACTIVITIES      |
174  +============================*/
175 
176    TYPE ProcessActivityREC IS RECORD (
177                 PROCESS_ITEM_TYPE   VARCHAR2(8),
178                 PROCESS_NAME        VARCHAR2(30),
179                 PROCESS_VERSION     NUMBER,
180                 ACTIVITY_ITEM_TYPE  VARCHAR2(8),
181                 ACTIVITY_NAME       VARCHAR2(30),
182                 INSTANCE_ID         NUMBER,
183                 INSTANCE_LABEL      VARCHAR2(30),
184                 PERFORM_ROLE        VARCHAR2(320),
185                 PERFORM_ROLE_TYPE   VARCHAR2(8),
186                 START_END           VARCHAR2(8),
187                 DEFAULT_RESULT      VARCHAR2(30) );
188 
189    TYPE ProcessActivityTAB IS TABLE OF ProcessActivityREC
190         index by binary_integer;
191 
192 /*============================+
193  | NLSParameters              | Runtime cache of NLS parameters.
194  +============================*/
195 
196    TYPE NLSParameterREC IS RECORD (
197                PARAMETER            VARCHAR2(64),
198                VALUE                VARCHAR2(64));
199 
200    TYPE NLSParameterTAB IS TABLE OF NLSParameterREC
201         index by binary_integer;
202 
203 
204 /*============================+
205  | ProcessStartActivities     |
206  +============================*/
207    TYPE ProcessStartActivityREC IS RECORD (
208                 INSTANCE_ID         NUMBER,
209                 PROCESS_ITEM_TYPE   VARCHAR2(8),
210                 PROCESS_NAME        VARCHAR2(30),
211                 PROCESS_VERSION     NUMBER,
212                 PREV_LNK            NUMBER,
213                 NEXT_LNK            NUMBER );
214 
215    TYPE ProcessStartActivityTAB IS TABLE OF ProcessStartActivityREC
216         index by binary_integer;
217 
218 
219 /*======================================+
220  |                                      |
221  | Global Cache Tables                  |
222  |                                      |
223  +======================================+================================*/
224 
225   Activities             ActivityTAB;
226   ActivityAttributes     ActivityAttributeTAB;
227   ActivityAttrValues     ActivityAttrValueTAB;
228   ActivityTransitions    ActivityTransitionTAB;
229   ItemAttributes         ItemAttributeTAB;
230   ItemTypes              ItemTypeTAB;
231   ProcessActivities      ProcessActivityTAB;
232   NLSParameters          NLSParameterTAB;
233   ItemAttrValues         ItemAttrValueTAB;
234   ProcessStartActivities ProcessStartActivityTAB;
235 
236 
237 /*======================================+
238  |                                      |
239  | Functions                            |
240  |                                      |
241  +======================================+================================*/
242 
243 
244 /*===========================+
245  | SetHashRange              |
246  +===========================+===================+
247  | IN:      p_HashBase in NUMBER,                |
248  |          p_HashSize in NUMBER                 |
249  +===============================================*/
250 
251   PROCEDURE SetHashRange ( p_HashBase in  NUMBER,
252                            p_HashSize in  NUMBER );
253 
254 
255 /*===========================+
256  | HashKey                   |
257  +===========================+===================+
258  | IN:      p_HashString in VARCHAR2             |
259  +-----------------------------------------------+
260  | RETURNS: number                               |
261  +===============================================*/
262 
263   FUNCTION HashKey (p_HashString in varchar2) return number;
264 
265 
266 /*=====================================+
267  |                                     |
268  | Maintenance Procedures              |
269  |                                     |
270  +=====================================+================================+
271  | Maintenance procedures perform administrative functions such as      |
272  | clearing, initializing, and managing the cache.                      |
273  |                                                                      |
274  +======================================================================*/
275 
276 /*===========================+
277  | Clear                     |
278  +===============================================*/
279    PROCEDURE Clear;
280 
281 
282 /*===========================+
283  | CacheManager              |
284  +===========================+===================+
285  | IN: p_TableName    (PLS_INTEGER)              |
286  |                                               |
287  +===============================================*/
288 
289    PROCEDURE CacheManager (TableName in  PLS_INTEGER,
290                            NumRows   in  NUMBER default 0);
291 
292 
293 /*===========================+
294  | MetaRefreshed             |
295  +===========================+===================+
296  | Returns                                       |
297  |   BOOLEAN                                     |
298  +-----------------------------------------------+
299  |  This api checks to see if the p_itemType     |
300  |  has been updated by wfload.                  |
301  +===============================================*/
302 
303    FUNCTION MetaRefreshed return BOOLEAN;
304 
305 
306 /*===========================+
307  | Reset                     |
308  +===========================+===================+
309  | This api will update the WFCACHE_META_UPD     |
310  | resource token to the current sysdate to      |
311  | cause any running caches to be cleared        |
312  +===============================================*/
313 
314    PROCEDURE Reset;
315 
316 
317 
318 
319 /*=====================================+
320  |                                     |
321  | Accessor Procedures                 |
322  |                                     |
323  +=====================================+================================+
324  | Accessor procedures are the apis that consumers use to access meta-  |
325  | data from cache.  Each api will require as parameters the necessary  |
326  | information to locate the record in cache as well as a record index. |
327  |                                                                      |
328  +======================================================================*/
329 
330 
331 
332 /*===========================+
333  | GetActivity               |
334  +===========================+===================+
335  | IN:   itemType     (VARCHAR2)                 |
336  |       name         (VARCHAR2)                 |
337  |       actdate      (DATE)                     |
338  +-----------------------------------------------+
339  | OUT:  status     (PLS_INTEGER)                |
340  |       waIND      (NUMBER)                     |
341  +===============================================*/
342 
343    PROCEDURE GetActivity ( itemType in             VARCHAR2,
344                            name     in             VARCHAR2,
345                            actdate  in             DATE,
346                            status   out    NOCOPY  PLS_INTEGER,
347                            waIND    out    NOCOPY  NUMBER);
348 
349 
350 /*===========================+
351  | GetActivityAttr           |
352  +===========================+===================+
356  |       actdate    (DATE)                       |
353  | IN:   itemType   (VARCHAR2)                   |
354  |       name       (VARCHAR2)                   |
355  |       actid      (NUMBER)                     |
357  +-----------------------------------------------+
358  | OUT:  status     (PLS_INTEGER)                |
359  |       wa_index   (NUMBER)                     |
360  |       waa_index  (NUMBER)                     |
361  +===============================================*/
362 
363    PROCEDURE GetActivityAttr ( itemType  in             VARCHAR2,
364                                name      in             VARCHAR2,
365                                actid     in             NUMBER,
366                                actdate   in             DATE,
367                                status    out    NOCOPY  PLS_INTEGER,
368                                wa_index  out    NOCOPY  NUMBER,
369                                waa_index out    NOCOPY  NUMBER);
370 
371 
372 
373 /*===========================+
374  | GetActivityAttrValue      |
375  +===========================+===================+
376  | IN:   actID           (NUMBER)                |
377  |       name            (VARCHAR2)              |
378  +-----------------------------------------------+
379  | OUT:  status          (PLS_INTEGER)           |
380  |       waavIND         (NUMBER)                |
381  +===============================================*/
382 
383    PROCEDURE GetActivityAttrValue (
384                                   actid   in            NUMBER,
385                                   name    in            VARCHAR2,
386                                   status  out    NOCOPY PLS_INTEGER,
387                                   waavIND out    NOCOPY NUMBER );
388 
389 
390 /*===========================+
391  | GetActivityTransitions    |
392  +===========================+===================+
393  | IN:   FromActID       (NUMBER)                |
394  |       result          (VARCHAR2)              |
395  +-----------------------------------------------+
396  | OUT:  status          (PLS_INTEGER)           |
397  |       watIND          (NUMBER)                |
398  +===============================================*/
399 
400    PROCEDURE GetActivityTransitions (
401                                 FromActID in            NUMBER,
402                                 result    in            VARCHAR2,
403                                 status    out    NOCOPY PLS_INTEGER,
404                                 watIND    out    NOCOPY NUMBER );
405 
406 
407 /*===========================+
408  | GetItemAttribute          |
409  +===========================+===================+
410  | IN:   itemType         (VARCHAR2)             |
411  |       name             (VARCHAR2)             |
412  +-----------------------------------------------+
413  | OUT:  status           (PLS_INTEGER)          |
414  |       wiaIND           (NUMBER)               |
415  +===============================================*/
416 
417    PROCEDURE GetItemAttribute (itemType in              VARCHAR2,
418                                name     in              VARCHAR2,
419                                status   out    NOCOPY   PLS_INTEGER,
420                                wiaIND   out    NOCOPY   NUMBER);
421 
422 
423 /*===========================+
424  | GetItemAttrValue          |
425  +===========================+===================+
426  | IN:   itemType         (VARCHAR2)             |
427  |       itemKey          (VARCHAR2)             |
428  |       name             (VARCHAR2)             |
429  +-----------------------------------------------+
430  | OUT:  status           (PLS_INTEGER)          |
431  |       wiavIND          (NUMBER)               |
432  +===============================================*/
433 
434    PROCEDURE GetItemAttrValue (itemType in              VARCHAR2,
435                                itemKey  in              VARCHAR2,
436                                name     in              VARCHAR2,
437                                status   out    NOCOPY   PLS_INTEGER,
438                                wiavIND  out    NOCOPY   NUMBER);
439 
440 
441 /*===========================+
442  | GetItemType               |
443  +===========================+===================+
444  | IN:   itemType        (VARCHAR2)              |
445  +-----------------------------------------------+
446  | OUT:  status      (PLS_INTEGER)               |
447  |       witIND      (NUMBER)                    |
448  +===============================================*/
449 
450    PROCEDURE GetItemType (itemType in             VARCHAR2,
451                           status   out    NOCOPY  PLS_INTEGER,
452                           witIND   out    NOCOPY  NUMBER);
453 
454 
455 
456 /*===========================+
457  | GetProcessActivity        |
458  +===========================+===================+
459  | IN:   actid         (NUMBER)                  |
460  +-----------------------------------------------+
461  | OUT:     status   (PLS_INTEGER)               |
462  +===============================================*/
463 
464    PROCEDURE GetProcessActivity (actid  in            NUMBER,
465                                  status out    NOCOPY PLS_INTEGER);
466 
467 
468 /*===========================+
469  | GetProcessActivityInfo    |
473  +-----------------------------------------------+
470  +===========================+===================+
471  | IN:   actid         (NUMBER)                  |
472  |       actdate       (DATE)                    |
474  | OUT:     status   (PLS_INTEGER)               |
475  |          waIND    (NUMBER)                    |
476  +===============================================*/
477 
478    PROCEDURE GetProcessActivityInfo (actid   in            NUMBER,
479                                      actdate in            DATE,
480                                      status  out    NOCOPY PLS_INTEGER,
481                                      waIND   out    NOCOPY NUMBER);
482 
483 
484 /*===========================+
485  | GetNLSParameter           |
486  +===========================+===================+
487  | IN:   Parameter   (VARCHAR2)                  |
488  +-----------------------------------------------+
489  | OUT:     status   (PLS_INTEGER)               |
490  |          nlsIND   (NUMBER)                    |
491  +===============================================*/
492 
493    PROCEDURE GetNLSParameter (Parameter  in            VARCHAR2,
494                               status     out    NOCOPY PLS_INTEGER,
495                               nlsIND     out    NOCOPY NUMBER);
496 
497 
498 /*===========================+
499  | GetProcessStartActivities |
500  +===========================+===================+
501  | IN:      itemType (VARCHAR2)                  |
502  |          name     (VARCHAR2)                  |
503  |          version  (NUMBER)                    |
504  +-----------------------------------------------+
505  | OUT:     status   (PLS_INTEGER)               |
506  |          psaIND   (NUMBER)                    |
507  +===============================================*/
508 
509    PROCEDURE GetProcessStartActivities (itemType  in            VARCHAR2,
510                                         name      in            VARCHAR2,
511                                         version   in            NUMBER,
512                                         status    out    NOCOPY PLS_INTEGER,
513                                         psaIND    out    NOCOPY NUMBER);
514 
515 --
516 -- BeginTransaction
517 -- (PRIVATE)
518 --  Begins a trusted session where calls to Reset() will not have any effect.
519 --  Caller has to call EndTransaction() immediately before issuing commit.
520 --  Returns FALSE if transaction was already begun by a parent call.
521    FUNCTION BeginTransaction return BOOLEAN;
522 
523 --
524 -- EndTransaction
525 -- (PRIVATE)
526 -- Signals the end of a trusted session and calls Reset() to lock and update
527 -- WFCACHE_META_UPD.
528 --
529    FUNCTION EndTransaction return BOOLEAN;
530 
531 end WF_CACHE;
532