webMethods中有趣的尝试【一】
webMethods的flowService是一种典型的工作流模式编程,因此有一些使用会和代码不一样。出于这样的原因,本人对flowService的活用做了一些测试。
一、递归
在flowService中调用自身。
测试结果:可以实现递归功能,同编码一样。需要指定跳出条件,不然会有死循环的编译错误。
二、 exit
exit功能有三种用法跳出循环(相当于java中的break),跳出flow(相当于exit()),跳到父节点(相当于continue)。
用好这三种功能可以很好地控制程序的结束方式。
三、 try-catch-finally的实现
在工作流中实现try-catch-finally是一件比较有意思的事情,通过图形化的步骤可以很清晰地了解到try-catch-finally的设计思路和实现原理。
首先要定义一个main,这个main的sequence中exit from属性设置成为success ,这样就可以保证这个sequence就算发生错误也可以跑到catch程序里面去获取异常,而不是直接报错,停止运行了。try和catch是main下的子sequence,分别设置exit from属性为failure和done。failure属性是正常的sequence中exit from的默认属性,当这个sequence发生错误的时候会自动停止向下运行,直接跳出sequence。而done属性则是只有当该sequence上面的程式发生异常的时候才会跑进来的,因此正是捕获异常专用的条件。最后是finally,finally与main同级,在main下面。设置成failure或者success都可以,看情况而定。
这个与java的区别在于,java中会在try或者catch的结束点执行之前先执行一次finally,而webMethods中则是在trycatch结束点之后执行finally。