函数配置

​ 函数配置主要是将静态或者非静态函数进行声明和注册,既可以声明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>
  • 实例演示结果

    • 静态函数演示结果

    1666929020414

    • 非静态函数演示结果

    1666928782879

results matching ""

    No results matching ""