1

次の問題があります。行がテーブルに挿入されたときにアクティブになるトリガーを作成しました。次に、トリガーがプロシージャを開始します。次に、プロシージャはワークフローを開始します。

手順を開始すると、正常に機能します。しかし、新しい行を入力してトリガーを開始すると、次のエラーが発生しました。

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;

私はここで何かを逃しましたか?前もって感謝します。

4

1 に答える 1

0

テーブルがTASKテーブルの場合、行が存在する前にトリガーが起動するため、そのワークフローが挿入している行のデータをチェックしている場合、失敗するのも不思議ではありません。

またCOMMIT;、トリガーでは本当に悪いです(複数の行を挿入すると失敗します)。

于 2012-12-10T16:18:38.823 に答える