自定义内置动作

​ 在用户使用过程当中,如果有一些自己内部常用的操作,而这些操作在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,分别是ActionMethodActionMethodParameter。ActionMethod是用来定义用户看到的方法名称的,而ActionMethodParameter则是用来定义用户看到的各个参数名称,它的names属性是一个数组,要求给出的描述参数要与当前方法的参数个数匹配,如果小于参数个数,那么用户将会看到后面的参数无描述信息。

​ 在类中定义好这些Annotation之后,将这个类配置到Spring当中,让其成为一个标准的Spring Bean,并为其定义一个Bean Id,这样URule在启动时就会自动加载,并让其成为内置动作,用户就可以直接使用了。

定义内置动作的Spring Bean时,一定不要忘记给这个Spring Bean定义一个Id,这样才能保证规则在任何地方运行都不会出错,这点很关键。

在定义内置动作时需要注意,如果我们规则运行方式采用的是客户端服务器模式,那么必须要保证调用知识包的客户端Spring环境里有这个Bean,且Bean的Id要与动作库定义时的Id保证一至,否则调用会出现错误。

results matching ""

    No results matching ""