函数配置
函数配置主要是将静态或者非静态函数进行声明和注册,既可以声明JDK自带的函数,也可以声明和注册自定义的函数。
1.1 函数配置核心文件
- cfg/etc/schema/function.xsd————>函数属性定义文件
- cfg/etc/function.xml————>函数声明和注册文件
1.2 函数声明和注册文件属性配置
<?xml version="1.0" encoding="UTF-8"?>
<functions xmlns="http://www.brilliance.com.cn/function" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.brilliance.com.cn/function schema/function.xsd">
<func static="true" namespace="System" class="java.lang.System"/>
<func static="true" namespace="MathUtil" class="com.brilliance.ext.util.MathUtil"/>
<func static="false" namespace="Date" class="java.util.Date"/>
<func namespace="StringBuffer" class="java.lang.StringBuffer" static="false" />
<func static="true" namespace="FileUtil" class="com.brilliance.eibs.util.FileUtil" />
<func static="true" namespace="TelexCodeUtils" class="com.brilliance.ext.util.TelexCodeUtils" />
<func static="false" namespace="BigDecimal" class="java.math.BigDecimal" />
<func static="true" namespace="MTPackMessage" class="com.brilliance.swift.MTPackMessage" />
<func static="true" namespace="MTUnPackMessage" class="com.brilliance.swift.MTUnPackMessage" />
<func static="false" namespace="File" class="java.io.File"/>
<func static="true" namespace="FileUtils" class="org.apache.commons.io.FileUtils"/>
<func static="true" namespace="IOUtils" class="org.apache.commons.io.IOUtils"/>
<func static="false" namespace="String" class="java.lang.String"/>
<!--自定义静态函数-->
<func static="true" namespace="TestJJ" class="com.brilliance.test.TestJJ"/>
</functions>
字段名称 | 属性描述 | 是否必须 |
---|---|---|
<functions | 定义整个函数配置 | 是 |
--<func | 定义单个需要声明的函数 | 是 |
----static | 定义该函数是否为静态函数 | 是 |
----namespace | 定义函数的命名,后续使用时调用 | 是 |
----class | 指定定义函数所在的jar包位置 | 是 |
1.3 函数分类
按照函数内部的方法定义以及配置方式,可以分为静态函数和非静态函数
1.3.1 静态函数
在函数中,存在由static修饰的静态方法,并且在function.xml文件中配置static="true"表明该函数方法为静态函数
<!--自定义静态函数-->
<func static="true" namespace="TestJJ" class="com.brilliance.test.TestJJ"/>
1.3.2 非静态函数
在函数中,不存在static修饰的静态方法,并且在function.xml文件中配置static="false"表明该函数方法为非静态函数
<!--自定义非静态函数-->
<func static="false" namespace="TestJJ" class="com.brilliance.test.TestJJ"/>
1.4函数使用实例演示
- 静态函数使用
- 静态函数直接使用${函数名:静态方法名(传递参数)}
<transaction id="t1" version="2.0">
<step id="s1">
<filter ref="publicFilter" type="in">
<!--静态函数的引用-->
<field tag="test1" value="${TestJJ:method1('张三',18)}" scope="this"/>
<!--通过scope="this"将函数方法生成的结果赋值给this,在存入时为该结果而不是this的地址值-->
<log value="${this}"/>
</filter>
</step>
</transaction>
- 非静态函数使用
- 非静态函数先创建对象${new TestJJF()}
- 然后使用对象调用对应的非静态方法${对象.非静态方法名(传递参数)}
<transaction id="t1" version="2.0">
<step id="s1">
<filter ref="publicFilter" type="in">
<!--非静态函数先创建对象-->
<field tag="test2" type="${new TestJJF()}"/>
<log value="创建对象成功"/>
<!--通过对象调用其内部的非静态方法-->
<field tag="t2" value="${test2.method1('张三',18)}" scope="this"/>
<log value="${this}"/>
</filter>
</step>
</transaction>
实例演示结果
- 静态函数演示结果
- 非静态函数演示结果