1: PACKAGE BODY WF_ROLE_HIERARCHY as
2: /*$Header: WFRHIERB.pls 120.27.12010000.4 2008/11/07 16:25:48 alsosa ship $*/
3:
4: ----
5: -- Private Globals
70: WF_LOG_PKG.String(WF_LOG_PKG.LEVEL_UNEXPECTED,
71: g_modulePkg||'.RaiseEvent',
72: 'Exception: '||sqlerrm);
73: end if;
74: WF_CORE.Context('WF_ROLE_HIERARCHY', 'RaiseEvent', p_eventName,
75: p_relationshipID, p_superName, p_subName);
76: raise;
77: end RaiseEvent;
78:
163: WF_LOG_PKG.String(WF_LOG_PKG.LEVEL_UNEXPECTED,
164: g_modulePkg||'.HierarchyEnabled',
165: 'Exception: '||sqlerrm);
166: end if;
167: WF_CORE.Context('WF_ROLE_HIERARCHY', 'HierarchyEnabled', p_origSystem);
168: raise;
169:
170: end HierarchyEnabled;
171:
252: g_modulePkg||'.Calculate_Effective_Dates',
253: 'Exception: '||sqlerrm);
254: end if;
255:
256: WF_CORE.Context('WF_ROLE_HIERARCHY', 'Calculate_Effective_Dates',
257: to_char(p_startDate,WF_CORE.canonical_date_mask),
258: to_char(p_endDate,WF_CORE.canonical_date_mask),
259: to_char(p_userStartDate,WF_CORE.canonical_date_mask),
260: to_char(p_userEndDate,WF_CORE.canonical_date_mask),
378: TYPE dateTab IS TABLE OF DATE INDEX BY BINARY_INTEGER;
379: TYPE idTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
380:
381:
382: l_subordinates WF_ROLE_HIERARCHY.relTAB;
383: l_superiors WF_ROLE_HIERARCHY.relTAB;
384: l_rowIDTAB idTab;
385: l_roleStartTAB dateTab;
386: l_roleEndTAB dateTab;
379: TYPE idTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
380:
381:
382: l_subordinates WF_ROLE_HIERARCHY.relTAB;
383: l_superiors WF_ROLE_HIERARCHY.relTAB;
384: l_rowIDTAB idTab;
385: l_roleStartTAB dateTab;
386: l_roleEndTAB dateTab;
387: l_effStartTAB dateTab;
943: assignment_type=>'X',
944: updateWho=>UpdateWho);
945:
946: else
947: WF_CORE.Context('WF_ROLE_HIERARCHY','Cascade_RF',
948: p_event.getEventName( ), p_sub_guid);
949:
950: WF_EVENT.setErrorInfo(p_event, 'ERROR');
951:
1818: WF_LOG_PKG.String(WF_LOG_PKG.LEVEL_UNEXPECTED,
1819: g_modulePkg||'.Denormalize_UR_Assignments',
1820: 'Exception: '||sqlerrm);
1821: end if;
1822: WF_CORE.Context('WF_ROLE_HIERARCHY', 'Denormalize_UR_Assignments',
1823: p_event.getEventName);
1824: raise;
1825:
1826:
2302: elsif c_UserRoleAssignments_r%ISOPEN then
2303: close c_UserRoleAssignments_r;
2304: end if;
2305:
2306: WF_CORE.Context('WF_ROLE_HIERARCHY', 'Aggregate_User_Roles_RF',
2307: p_event.getEventName( ), p_sub_guid);
2308:
2309: WF_EVENT.setErrorInfo(p_event, 'ERROR');
2310: return 'ERROR';
2324: -- GetRelationships (PUBLIC)
2325: -- Retrieves the hierarchies for a given role.
2326: -- IN
2327: -- p_name (VARCHAR2)
2328: -- p_superiors (WF_ROLE_HIERARCHY.relTAB)
2329: -- p_subordinates (WF_ROLE_HIERARCHY.relTAB)
2330:
2331: procedure GetRelationships (p_name in VARCHAR2,
2332: p_superiors out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2325: -- Retrieves the hierarchies for a given role.
2326: -- IN
2327: -- p_name (VARCHAR2)
2328: -- p_superiors (WF_ROLE_HIERARCHY.relTAB)
2329: -- p_subordinates (WF_ROLE_HIERARCHY.relTAB)
2330:
2331: procedure GetRelationships (p_name in VARCHAR2,
2332: p_superiors out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2333: p_subordinates out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2328: -- p_superiors (WF_ROLE_HIERARCHY.relTAB)
2329: -- p_subordinates (WF_ROLE_HIERARCHY.relTAB)
2330:
2331: procedure GetRelationships (p_name in VARCHAR2,
2332: p_superiors out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2333: p_subordinates out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2334: p_direction in VARCHAR2 )
2335: is
2336: --<8i Support>
2329: -- p_subordinates (WF_ROLE_HIERARCHY.relTAB)
2330:
2331: procedure GetRelationships (p_name in VARCHAR2,
2332: p_superiors out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2333: p_subordinates out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2334: p_direction in VARCHAR2 )
2335: is
2336: --<8i Support>
2337: TYPE super_name_Tab is TABLE of VARCHAR2(320);
2458: WF_LOG_PKG.String(WF_LOG_PKG.LEVEL_UNEXPECTED,
2459: g_modulePkg||'.GetRelationships', 'Exception: '||
2460: sqlerrm);
2461: end if;
2462: WF_CORE.Context('WF_ROLE_HIERARCHY', 'GetRelationships', p_name);
2463: raise;
2464:
2465: end GetRelationships;
2466:
2468: -- GetAllRelationships (PUBLIC)
2469: -- Retrieves both enabled and disabled hierarchies for a given role..
2470: -- IN
2471: -- p_name (VARCHAR2)
2472: -- p_superiors (WF_ROLE_HIERARCHY.relTAB)
2473: -- p_subordinates (WF_ROLE_HIERARCHY.relTAB)
2474:
2475: procedure GetAllRelationships (p_name in VARCHAR2,
2476: p_superiors out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2469: -- Retrieves both enabled and disabled hierarchies for a given role..
2470: -- IN
2471: -- p_name (VARCHAR2)
2472: -- p_superiors (WF_ROLE_HIERARCHY.relTAB)
2473: -- p_subordinates (WF_ROLE_HIERARCHY.relTAB)
2474:
2475: procedure GetAllRelationships (p_name in VARCHAR2,
2476: p_superiors out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2477: p_subordinates out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2472: -- p_superiors (WF_ROLE_HIERARCHY.relTAB)
2473: -- p_subordinates (WF_ROLE_HIERARCHY.relTAB)
2474:
2475: procedure GetAllRelationships (p_name in VARCHAR2,
2476: p_superiors out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2477: p_subordinates out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2478: p_direction in VARCHAR2)
2479: is
2480: --<8i Support>
2473: -- p_subordinates (WF_ROLE_HIERARCHY.relTAB)
2474:
2475: procedure GetAllRelationships (p_name in VARCHAR2,
2476: p_superiors out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2477: p_subordinates out NOCOPY WF_ROLE_HIERARCHY.relTAB,
2478: p_direction in VARCHAR2)
2479: is
2480: --<8i Support>
2481: TYPE super_name_Tab is TABLE of VARCHAR2(320);
2583: WF_LOG_PKG.String(WF_LOG_PKG.LEVEL_UNEXPECTED,
2584: g_modulePkg||'.GetAllRelationships', 'Exception: '||
2585: sqlerrm);
2586: end if;
2587: WF_CORE.Context('WF_ROLE_HIERARCHY', 'GetAllRelationships', p_name);
2588: raise;
2589:
2590: end GetAllRelationships;
2591:
2608: l_sub_origSys VARCHAR2(30);
2609: l_super_origSys VARCHAR2(30);
2610: l_roleView VARCHAR2(30);
2611:
2612: l_superiors WF_ROLE_HIERARCHY.relTAB;
2613: l_subordinates WF_ROLE_HIERARCHY.relTAB;
2614:
2615: HierarchyLoop EXCEPTION;
2616: pragma exception_init(HierarchyLoop, -01436);
2609: l_super_origSys VARCHAR2(30);
2610: l_roleView VARCHAR2(30);
2611:
2612: l_superiors WF_ROLE_HIERARCHY.relTAB;
2613: l_subordinates WF_ROLE_HIERARCHY.relTAB;
2614:
2615: HierarchyLoop EXCEPTION;
2616: pragma exception_init(HierarchyLoop, -01436);
2617:
2636: p_sub_name||', '||p_super_name||')');
2637: end if;
2638: --need to serialize here to prevent potential circular loops
2639:
2640: g_trustTimeStamp := WF_ROLE_HIERARCHY.CreateSession;
2641: -- Validating Roles
2642: begin
2643: begin
2644: SELECT ORIG_SYSTEM, PARTITION_ID
2817: WF_LOG_PKG.String(WF_LOG_PKG.LEVEL_UNEXPECTED,
2818: g_modulePkg||'.AddRelationship', 'Exception: '||
2819: sqlerrm);
2820: end if;
2821: WF_CORE.Context('WF_ROLE_HIERARCHY', 'AddRelationship', p_sub_name,
2822: p_super_name);
2823: WF_CORE.Raise('WFDS_HIERARCHY_LOOP');
2824:
2825: when OTHERS then
2827: WF_LOG_PKG.String(WF_LOG_PKG.LEVEL_UNEXPECTED,
2828: g_modulePkg||'.AddRelationship', 'Exception: '||
2829: sqlerrm);
2830: end if;
2831: WF_CORE.Context('WF_ROLE_HIERARCHY', 'AddRelationship', p_sub_name,
2832: p_super_name);
2833: raise;
2834: end AddRelationship;
2835:
2913: WF_LOG_PKG.String(WF_LOG_PKG.LEVEL_UNEXPECTED,
2914: g_modulePkg||'.ExpireRelationship', 'Exception: '||
2915: sqlerrm);
2916: end if;
2917: WF_CORE.Context('WF_ROLE_HIERARCHY', 'ExpireRelationship', p_sub_name,
2918: p_super_name);
2919: raise;
2920: end ExpireRelationship;
2921:
2946:
2947: exception
2948: when OTHERS then
2949:
2950: WF_CORE.Context('WF_ROLE_HIERARCHY', 'Denormalize_User_Role_RF',
2951: p_event.getEventName( ), p_sub_guid);
2952:
2953: WF_EVENT.setErrorInfo(p_event, 'ERROR');
2954: return 'ERROR';
3090: raise;
3091:
3092: end removeRelationship;
3093:
3094: end WF_ROLE_HIERARCHY;