自定义内置动作
在用户使用过程当中,如果有一些自己内部常用的操作,而这些操作在URule Pro中的内置动作中又没有,那么可以利用自定义内置动作的方式定义自己的内置动作。
定义内置动作非常简单,只需要在需要暴露给用户使用的Spring bean中添加相应的annotation即可。我们先来看看URule Pro中提供的针对字符串的内置动作类的部分源代码。
package com.bstek.urule.runtime.builtinaction;
import com.bstek.urule.model.library.action.annotation.ActionBean;
import com.bstek.urule.model.library.action.annotation.ActionMethod;
import com.bstek.urule.model.library.action.annotation.ActionMethodParameter;
/**
* @author Jacky.gao
* @since 2015年11月27日
*/
@ActionBean(name="字符串")
public class StringAction {
@ActionMethod(name="去空格")
@ActionMethodParameter(names={"目标字符串"})
public String trim(String str){
if(str==null){
return str;
}
return str.trim();
}
@ActionMethod(name="指定起始的字符串截取")
@ActionMethodParameter(names={"目标字符串","开始位置","结束位置"})
public String substring(String str,int start,int end){
return str.substring(start, end);
}
......
}
可以看到,首先我们需要在”类“层面添加一个名为ActionBean的annotation,它只有一个属性,就是要定义这个内置动作的名称。然后在需要暴露的方法中添加两个annotation,分别是ActionMethod和ActionMethodParameter。ActionMethod是用来定义用户看到的方法名称的,而ActionMethodParameter则是用来定义用户看到的各个参数名称,它的names属性是一个数组,要求给出的描述参数要与当前方法的参数个数匹配,如果小于参数个数,那么用户将会看到后面的参数无描述信息。
在类中定义好这些Annotation之后,将这个类配置到Spring当中,让其成为一个标准的Spring Bean,并为其定义一个Bean Id,这样URule在启动时就会自动加载,并让其成为内置动作,用户就可以直接使用了。
定义内置动作的Spring Bean时,一定不要忘记给这个Spring Bean定义一个Id,这样才能保证规则在任何地方运行都不会出错,这点很关键。
在定义内置动作时需要注意,如果我们规则运行方式采用的是客户端服务器模式,那么必须要保证调用知识包的客户端Spring环境里有这个Bean,且Bean的Id要与动作库定义时的Id保证一至,否则调用会出现错误。