金融其它command

sequence job里面的triggers设置问题

OS: RHEL4 DS: 8.1
sequence JOB想要实现的功能如下:
当EXECUTE command得出的command value值大于0的话,触发triggers,执行同一sequence下面的另一个JOB.如果command value的值等于0的话,不触发triggers条件,下一个JOB不执行.
请见下面的JOB设计

job_entitiy.jpg




第一次条件设置为
Execute_Command_13.$CommandOutput> 0
第一个JOB的返回值不论是0还是1,下一个JOB都会执行.由此,我怀疑return的值为字符型.因此有了下面的第二次设置
第二次条件设置为
Execute_Command_13.$CommandOutput+0 > 0
设置的原因如下(IBM DS Basic reference guide)
If a character string variable containing only numeric characters is used in an arithmetic expression, the character string is treated as a numeric variable. That is, the numeric string is converted to its equivalent internal number and then evaluated numerically in the arithmetic expression. For example, the following expression is evaluated as 77: 55 + "22"
但是,无论如何,第二次设置的条件导致下一个JOB不会执行.

求解惑.先谢谢了.

PS:EXECUTE command Stage里面只是一个简单的shell脚本,主要是来统计某张表的数目的
参与10

10同行回答

rwanghuirwanghui开发商highjet
学习一下 .显示全部
学习一下 .收起
IT分销/经销 · 2012-02-07
浏览1243
apple_ynnapple_ynn软件开发工程师中科软科技股份有限公司
谢谢分享!显示全部
谢谢分享!收起
政府机关 · 2012-02-07
浏览1200
why0414why0414软件开发工程师软件公司
:)不错,学习了。。显示全部
:)不错,学习了。。收起
互联网服务 · 2011-12-17
浏览1243
gobirdgobird其它htsc
问题已得到解决.原因在自己不太细心.先暗暗鄙视一下自己,然后详细说明.首先,把sequence4个compile options全部选上,然后分二次跑程序.会发现good图片出的结果到0为止,没有下面一行,bad图片出的结果为2,下面还有一行.发现这个不同在于ankeyshan同学的提醒说单独把结果显...显示全部
问题已得到解决.原因在自己不太细心.先暗暗鄙视一下自己,然后详细说明.
首先,把sequence4个compile options全部选上,然后分二次跑程序.
会发现good图片出的结果到0为止,没有下面一行,bad图片出的结果为2,下面还有一行.

发现这个不同在于
ankeyshan
同学的提醒说单独把结果显示出来.本来自以为没问题的地方,最开始的时候偷懒没有这样做.后来设计了单独打印return value的时候,报ParamValue/Limitvalue is not appropriate,Error calling DSSetParam(EXECSQL),code=-4,于是真相就大白了.错误明明白白指向有了换行的原因造成的结果,返回去查看return value的值,果然多了一行,即上面good/bad二个结果的不同.于是,条件可以改成Convert(@FM," ",Execute_Command_13.$CommandOutput)>0即可.或者可以把脚本最后的输出修改一下亦可:
echo -n $num

debug.jpg


debug

good

bad

总结:
(1)Routine activity与Execute command stage二者的使用.如果可以使用Execute command stage实现的功能,建议就使用Execute command stage.原因在于该stage可以返回两个值,一个是shell脚本的是否成功的状态值,另一个是输出结果的值,而使用routine activity只能输出一个值(或许可以输出多个值,我所会的只能输出一个值,请大家持怀疑态度).更重要的原因在于使用Execute command stage可以使得打开sequence compile options的四个选项.这可以更可能多的收集sequence运行的情况,不会出现sequence中间某些JOB abort,而整个sequence仍然显示Finished的状态.而使用routine activity的时候不能打开compile选项(或许可以,目前就我观察的情况而言,是不行的.请大家持怀疑态度)
(2)细心、大胆推测小心求证是必须的。下一阶段,好好看看Basic reference guide.

最后,谢谢大家热心的帮助。鞠躬,下台。收起
金融其它 · 2011-12-15
浏览1323
gobirdgobird其它htsc
回复 3# ankeyshan     嗯,之前就测试过了.把sequence的四个compile options全部都打开过了.reply result value为'1',所以才大胆认为shell脚本返回的值为"字符"型的.显示全部
回复 3# ankeyshan


    嗯,之前就测试过了.把sequence的四个compile options全部都打开过了.reply result value为'1',所以才大胆认为shell脚本返回的值为"字符"型的.收起
金融其它 · 2011-12-15
浏览1269
ankeyshanankeyshan软件开发工程师苏宁
回复 5# Frank-sun    设置为RUNOK OR RUNWARN只是代表此job运行成功或命令执行成功后执行下一个job,但楼主的意思是命令会返回一个值,只有这个值大于0的时候才执行下一个job,并不一定命令执行成功就执行下一个job...显示全部
回复 5# Frank-sun


   设置为RUNOK OR RUNWARN只是代表此job运行成功或命令执行成功后执行下一个job,但楼主的意思是命令会返回一个值,只有这个值大于0的时候才执行下一个job,并不一定命令执行成功就执行下一个job收起
互联网服务 · 2011-12-15
浏览1225
Frank-sunFrank-sunETL实施工程师emag
你看看这样设置可以吗显示全部
你看看这样设置可以吗收起
生活生产服务其它 · 2011-12-15
浏览1254
Frank-sunFrank-sunETL实施工程师emag
不是设置ok warn 之类的吗 怎么~显示全部
不是设置ok warn 之类的吗 怎么~收起
生活生产服务其它 · 2011-12-15
浏览1183
ankeyshanankeyshan软件开发工程师苏宁
triggers定制条件中,不管你的Execute_Command_13.$CommandOutput是数字还是字符串都可以和0比较的,内部会隐式转换,如果条件导致下一个job不能执行,建议单独输出Execute_Command_13.$CommandOutput的值看一下...显示全部
triggers定制条件中,不管你的Execute_Command_13.$CommandOutput是数字还是字符串都可以和0比较的,内部会隐式转换,如果条件导致下一个job不能执行,建议单独输出Execute_Command_13.$CommandOutput的值看一下收起
互联网服务 · 2011-12-15
浏览1215
chenxiaoyuchenxiaoyuETL开发工程师中国农业发展银行
我也来听听课,我在开发当中还没需要用到这么复杂的逻辑呢,呵呵显示全部
我也来听听课,我在开发当中还没需要用到这么复杂的逻辑呢,呵呵收起
金融其它 · 2011-12-15
浏览1240

提问者

gobird
其它htsc
擅长领域: 大数据商业智能

相关问题

问题状态

  • 发布时间:2011-12-15
  • 关注会员:0 人
  • 问题浏览:10743
  • 最近回答:2012-02-07
  • X社区推广