35: MAX(action)
36: INTO
37: returnValue
38: FROM
39: cs_kb_wf_flow_details
40: WHERE
41: flow_details_id = g_flow_details_id;
42: RETURN returnValue;
43: END;
91: MAX(flow_id)
92: INTO
93: returnValue
94: FROM
95: cs_kb_wf_flow_details
96: WHERE
97: flow_details_id = g_flow_details_id;
98: RETURN returnValue;
99: END;
121: INTO
122: returnValue
123: FROM
124: cs_kb_sets_b B,
125: cs_kb_wf_flow_details D,
126: CS_LOOKUPS LU1,
127: CS_LOOKUPS LU2
128: WHERE
129: B.flow_details_id = D.flow_details_id (+)
162: MIN(GROUP_ID)
163: INTO
164: return_number
165: FROM
166: CS_KB_WF_FLOW_DETAILS
167: WHERE
168: FLOW_DETAILS_ID = g_flow_details_id;
169:
170: RETURN return_number;
419:
420: IF (p_flow_details_id is not null) THEN
421: WF_ENGINE.SetItemAttrNumber(p_itemtype, p_itemkey, 'FLOW_DETAILS_ID', p_flow_details_id);
422: select step into x_step_code
423: from cs_kb_wf_flow_details
424: where flow_details_id = p_flow_details_id;
425:
426: SELECT MAX(MEANING)
427: INTO x_step_meaning
509: END;
510:
511: /**************************** Expire Detail ********************/
512: -- This Procedure is used to "soft-delete" a detail line from the
513: -- cs_kb_wf_flow_details table
514: --
515: -- VARIABLES
516: -- p_flow_details_id
517: -- p_result: p_flow_details_id = completed successfully, -1 = error
524: uid NUMBER := fnd_global.user_id;
525: dt DATE := SYSDATE;
526: BEGIN
527:
528: UPDATE CS_KB_WF_FLOW_DETAILS
529: SET end_date = SYSDATE-1,
530: last_updated_by = uid,
531: last_update_date = dt
532: WHERE
833: FD.STEP,
834: FD.GROUP_ID,
835: FD.ACTION
836: FROM
837: CS_KB_WF_FLOW_DETAILS FD
838: WHERE
839: FLOW_ID = p_flow_id
840: AND
841: (BEGIN_DATE <= SYSDATE OR BEGIN_DATE IS NULL)
844: ORDER BY
845: ORDER_NUM ASC;
846:
847: -- Temp variables.
848: did CS_KB_WF_FLOW_DETAILS.flow_details_id%TYPE; -- temp flow details id.
849: orn NUMBER; -- temp order number
850: sta CS_KB_WF_FLOW_DETAILS.step%TYPE; -- temp step
851: gid NUMBER; -- temp group id
852: act CS_KB_WF_FLOW_DETAILS.action%TYPE; -- temp action
846:
847: -- Temp variables.
848: did CS_KB_WF_FLOW_DETAILS.flow_details_id%TYPE; -- temp flow details id.
849: orn NUMBER; -- temp order number
850: sta CS_KB_WF_FLOW_DETAILS.step%TYPE; -- temp step
851: gid NUMBER; -- temp group id
852: act CS_KB_WF_FLOW_DETAILS.action%TYPE; -- temp action
853: counter NUMBER := 1;
854: BEGIN
848: did CS_KB_WF_FLOW_DETAILS.flow_details_id%TYPE; -- temp flow details id.
849: orn NUMBER; -- temp order number
850: sta CS_KB_WF_FLOW_DETAILS.step%TYPE; -- temp step
851: gid NUMBER; -- temp group id
852: act CS_KB_WF_FLOW_DETAILS.action%TYPE; -- temp action
853: counter NUMBER := 1;
854: BEGIN
855: OPEN DETAILS_TABLE;
856: LOOP
914: from cs_kb_wf_flows_b b,
915: cs_kb_wf_flows_tl t
916: where b.flow_id = t.flow_id
917: and t.language = userenv('LANG')
918: and exists (select flow_id from cs_kb_wf_flow_details d
919: where d.flow_id = b.flow_id
920: and sysdate between nvl(d.begin_date, sysdate-1)
921: and nvl(d.end_date, sysdate+1)
922: )
1019:
1020: -- cursor for all distinct groups for all flows this solns has gone thru
1021: CURSOR groups IS
1022: SELECT DISTINCT details2.GROUP_ID
1023: FROM cs_kb_wf_flow_details details1,
1024: cs_kb_wf_flow_details details2,
1025: cs_kb_wf_flows_b flows,
1026: cs_kb_sets_b sets
1027: WHERE
1020: -- cursor for all distinct groups for all flows this solns has gone thru
1021: CURSOR groups IS
1022: SELECT DISTINCT details2.GROUP_ID
1023: FROM cs_kb_wf_flow_details details1,
1024: cs_kb_wf_flow_details details2,
1025: cs_kb_wf_flows_b flows,
1026: cs_kb_sets_b sets
1027: WHERE
1028: sets.SET_NUMBER = p_set_number
1094:
1095: BEGIN
1096:
1097: IF(p_restriction = 1) THEN
1098: SQL1 := SQL1 || ' ,CS_KB_WF_FLOW_DETAILS ';
1099: SQL2 := SQL2 || ' AND CS_KB_WF_FLOW_DETAILS.STEP = CS_LOOKUPS.LOOKUP_CODE AND CS_KB_WF_FLOW_DETAILS.ACTION = :N ';
1100: END IF;
1101: -- open and parse statement
1102: steps := DBMS_SQL.OPEN_CURSOR;
1095: BEGIN
1096:
1097: IF(p_restriction = 1) THEN
1098: SQL1 := SQL1 || ' ,CS_KB_WF_FLOW_DETAILS ';
1099: SQL2 := SQL2 || ' AND CS_KB_WF_FLOW_DETAILS.STEP = CS_LOOKUPS.LOOKUP_CODE AND CS_KB_WF_FLOW_DETAILS.ACTION = :N ';
1100: END IF;
1101: -- open and parse statement
1102: steps := DBMS_SQL.OPEN_CURSOR;
1103: DBMS_SQL.PARSE(steps, SQL1||SQL2||SQL3, DBMS_SQL.V7);
1175: x_flow_id := getFlowId(p_flow_details_id);
1176:
1177: select order_num
1178: into x_order_num
1179: from CS_KB_WF_FLOW_DETAILS
1180: where FLOW_DETAILS_ID = p_flow_details_id;
1181:
1182:
1183: select MIN(order_num)
1181:
1182:
1183: select MIN(order_num)
1184: into x_next_order_num
1185: from CS_KB_WF_FLOW_DETAILS
1186: where flow_id = x_flow_id
1187: and (BEGIN_DATE <= SYSDATE OR BEGIN_DATE IS NULL)
1188: and (END_DATE >= SYSDATE OR END_DATE IS NULL)
1189: and order_num > x_order_num;
1189: and order_num > x_order_num;
1190:
1191: select flow_details_id
1192: into p_next_details_id
1193: from CS_KB_WF_FLOW_DETAILS
1194: where flow_id = x_flow_id
1195: and (BEGIN_DATE <= SYSDATE OR BEGIN_DATE IS NULL)
1196: and (END_DATE >= SYSDATE OR END_DATE IS NULL)
1197: and order_num = x_next_order_num;
1210: IS
1211:
1212: CURSOR Get_First_Step IS
1213: SELECT Flow_Details_Id
1214: FROM CS_KB_WF_FLOW_DETAILS
1215: WHERE Flow_id = P_FLOW_ID
1216: AND sysdate between nvl(begin_date, sysdate-1)
1217: and nvl(end_date, sysdate+1)
1218: AND Order_Num = ( SELECT min(order_num)
1215: WHERE Flow_id = P_FLOW_ID
1216: AND sysdate between nvl(begin_date, sysdate-1)
1217: and nvl(end_date, sysdate+1)
1218: AND Order_Num = ( SELECT min(order_num)
1219: FROM CS_KB_WF_FLOW_DETAILS
1220: WHERE Flow_id = P_FLOW_ID
1221: AND sysdate between nvl(begin_date, sysdate-1)
1222: and nvl(end_date, sysdate+1) );
1223:
1222: and nvl(end_date, sysdate+1) );
1223:
1224: CURSOR Get_Current_Detail_Order IS
1225: SELECT order_num
1226: FROM CS_KB_WF_FLOW_DETAILS
1227: WHERE FLOW_DETAILS_ID = P_CURRENT_FLOW_DETAILS_ID
1228: AND (BEGIN_DATE <= SYSDATE OR BEGIN_DATE IS NULL)
1229: AND (END_DATE >= SYSDATE OR END_DATE IS NULL);
1230:
1310: x_flow_id := getFlowId(p_flow_details_id);
1311:
1312: select order_num
1313: into x_order_num
1314: from CS_KB_WF_FLOW_DETAILS
1315: where FLOW_DETAILS_ID = p_flow_details_id;
1316:
1317:
1318: select MAX(order_num)
1316:
1317:
1318: select MAX(order_num)
1319: into x_prev_order_num
1320: from CS_KB_WF_FLOW_DETAILS
1321: where flow_id = x_flow_id
1322: and (BEGIN_DATE <= SYSDATE OR BEGIN_DATE IS NULL)
1323: and (END_DATE >= SYSDATE OR END_DATE IS NULL)
1324: and order_num < x_order_num;
1324: and order_num < x_order_num;
1325:
1326: select flow_details_id
1327: into p_next_details_id
1328: from CS_KB_WF_FLOW_DETAILS
1329: where flow_id = x_flow_id
1330: and order_num = x_prev_order_num;
1331:
1332:
1363: BEGIN
1364:
1365: -- Get next available details id number
1366: SELECT
1367: cs_kb_wf_flow_details_s.NextVal
1368: INTO
1369: p_flow_details_id
1370: FROM
1371: DUAL;
1370: FROM
1371: DUAL;
1372:
1373: -- Insert data
1374: INSERT INTO CS_KB_WF_FLOW_DETAILS(flow_details_id,
1375: flow_id,
1376: step,
1377: order_num,
1378: action,
1495: -- to go directly to publish
1496: -- p_result: 1 if all fine, 0 if no permissions, -1 if general error,
1497: -- -2 bad input information, -3 general error in Post_pub_obs
1498: -- INTERNAL VARS
1499: -- p_command = cs_kb_wf_flow_details.action
1500: --
1501: /*******************************************************************/
1502: PROCEDURE Start_wf(
1503: p_set_number IN VARCHAR2,
1821: MIN(flow_details_id)
1822: INTO
1823: temp
1824: FROM
1825: cs_kb_wf_flow_details
1826: WHERE
1827: flow_details_id = p_flow_details_id;
1828:
1829: IF(temp is not null) THEN
1826: WHERE
1827: flow_details_id = p_flow_details_id;
1828:
1829: IF(temp is not null) THEN
1830: UPDATE CS_KB_WF_FLOW_DETAILS
1831: SET order_num = p_order_num,
1832: step = p_step,
1833: group_id = p_group_id,
1834: action = p_action,