给大家说明。kettle中javascript步骤错误处理

来源:互联网 发布:网络推广思路 编辑:程序博客网 时间:2024/06/06 05:00

javascript步骤错误处理

 

       如果你熟悉kettle转换的错误特性,你可能想知道在javascript步骤如何使用。支持错误机制的步骤用户界面机制是相同的,在javascript步骤右击,选择“定义错误处理”启用错误处理并配置。javascript代码可以识别错误行,并将他们转发到配置的错误处理步骤,通过使用_step_对象的putError()方法,需要以下几个参数:

1)    RowMetaInterface对象描述行结构

2)    当前的错误行

3)    在此行检测的错误数

4)    错误描述字符串(错误消息)

5)    引起错误的字段名称(字符串)

6)    错误代码(字符串)

 

通常情况下,原始的,未经修改的输入行被传递到错误处理步骤。因此,前两个参数通常被指定为getInputRowMeta()和row。其他参数取决于你想怎么具体描述所遇到的错误。javascript步骤定义错误处理配置可以配置那些字段输出到错误处理步骤。


这个转换的例子首先生成随机字符串。为了说明目的,javascript步骤判断前面生成的字符缺少字母'a'和'K'就报错,每个缺少字母就产生一个错误。

javascript步骤包含以下代码:


 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. varshould_error_on_a= (value.indexOf("a") == -1)?1:0;  
  2.   
  3. varshould_error_on_k= (value.indexOf("k") == -1)?1:0;  
  4.   
  5.     
  6.   
  7. try{  
  8.   
  9.     
  10.   
  11.     if(should_error_on_a== 1 && should_error_on_k == 1){  
  12.   
  13.         throw{  
  14.   
  15.             message:"Value must contain 'a' and 'k'",  
  16.   
  17.             nr_errors:2,  
  18.   
  19.             field:"value",  
  20.   
  21.             errcode:"ERR:003"  
  22.   
  23.         }  
  24.   
  25.     }  
  26.   
  27.     elseif(should_error_on_a== 1){  
  28.   
  29.         throw{  
  30.   
  31.             message:"Value must contain 'a'",  
  32.   
  33.             nr_errors:1,  
  34.   
  35.             field:"value",  
  36.   
  37.             errcode:"ERR:001"  
  38.   
  39.         }  
  40.   
  41.     }  
  42.   
  43.     elseif(should_error_on_k== 1){  
  44.   
  45.         throw{  
  46.   
  47.             message:"Value must contain 'k'",  
  48.   
  49.             nr_errors:1,  
  50.   
  51.             field:"value",  
  52.   
  53.             errcode:"ERR:002"  
  54.   
  55.         }  
  56.   
  57.     }  
  58.   
  59.     //continue normally, passing the row on to the next step  
  60.   
  61.     trans_Status= CONTINUE_TRANSFORMATION;  
  62.   
  63.     
  64.   
  65. }  
  66.   
  67. catch(e){  
  68.   
  69.     //divert the current row to the error step and do not pass anything to thenext  step  
  70.   
  71.     _step_.putError(getInputRowMeta(),row, e.nr_errors, e.message, e.field, e.errcode);  
  72.   
  73.     trans_Status= SKIP_TRANSFORMATION;  
  74.   
  75. }  
0 0
原创粉丝点击