我有以下问题: 我创建了一个触发器,当一行插入表时激活该触发器。 然后触发器启动一个程序。 然后,该过程启动工作流程。
当我开始该程序时,它工作正常。但是当我通过输入新行启动触发器时,我收到以下错误:
Zeile 12: ORA-20001: Task not found - Please check the Task Type, Name and Location are correct.
ORA-06512: in "OWBSYS.WB_RT_API_EXEC", Zeile 759
ORA-06512: in "OWB***.EXECUTE_WF_ABC", Zeile 10
ORA-06512: in "OWB***.START_EXECUTE_WF_ABC", Zeile 7
ORA-06512: in "OWB***.ABC_WORKFLOW", Zeile 2
这是我的触发器:
create or replace
TRIGGER ABC_WORKFLOW
BEFORE INSERT
ON OWB***.STG_ABC
FOR EACH ROW
BEGIN
OWB***.EXECUTE_WF_ABC;
END ;
这是我的程序:
create or replace
PROCEDURE EXECUTE_WF_ABC
AS
status NUMBER;
-- paramlist VARCHAR2(30000 CHAR);
BEGIN
owbsys.wb_rt_script_util.set_workspace ('OWBREPOWN.OWB***');
status :=
owbsys.wb_rt_api_exec.run_task (
p_location_name => 'OWF_LOCATION',
p_task_type => 'PROCESS',
p_task_name => 'WF_ABC',
-- p_custom_params => paramlist ,
p_system_params => '',
p_oem_friendly => 0 ,
p_background => 1); -- execute in background
DBMS_OUTPUT.put_line (status);
COMMIT;
--- EXCEPTION
--- when others then
--- message;
--- null;
END;
我在这里错过了什么吗? 提前谢谢。
答案 0 :(得分:0)
如果你的表是TASK表,那么你的触发器会在行存在之前触发,所以如果该工作流正在检查你要插入的行中的数据,那么毫无疑问它会失败。
触发器中的COMMIT;
也非常糟糕(如果插入的行超过1行,则会失败)。