关键字

1 if/else/elseif

1.1 if

  • if定义条件控制,满足条件才会执行if下的子节点。

1.1.1 父节点

  • step
  • process
  • filter
  • foreach
  • while
  • if
  • else
  • elseif

1.1.2 子节点

  • step(process中)
  • filter
  • foreach
  • while
  • if
  • else
  • elseif
  • import
  • field
  • convertor
  • validator

1.1.3属性

属性 描述 值类型 示例
condition if判断条件表达式 string 判断条件表达式比如 sta[i]=0

1.1.4 规则

  • 属性condition为必配属性,其他为可选项;
  • if子节点是根据if的属性condition进行条件判断执行if下的子节点;if的子节点是根据实际需求配置,子节点的配置规则可参考相应子节点的章节说明;

1.1.5 示例

<filter type="in" ref="publicFilter">
    <field tag="abc" value="test" />
    <if condition="${abc=='test'}">
        <field tag="result" value="bad"/>
    </if>
    <elseif condition="${abc=='good'}">
        <field tag="result" value="1"/>
    </elseif>
    <else>
        <field tag="result" value="perfect"/>
    </else>
</filter>
<log value="${result}"/>

输出结构:

image-20221028142005335

1.2 else

  • else配合if一起使用,不满足if条件时,执行else下的子节点。

1.2.1 父节点

  • filter
  • foreach
  • while
  • if
  • else
  • elseif

1.2.2 子节点

  • step(process中)
  • filter
  • foreach
  • while
  • if
  • else
  • elseif
  • import
  • field
  • convertor
  • validator

1.2.3 属性

1.2.4 规则

  • 属性一般无,else配合if使用,if条件判断否定的结果就会执行else;
  • else子节点是根据if的属性condition进行条件判断,不符合条件,执行else下的子节点;else的子节点是根据实际需求配置,子节点的配置规则可参考相应子节点的章节说明;

1.2.5 示例

<filter type="in" ref="publicFilter">
    <field tag="abc" value="good" />
    <if condition="${abc=='test'}">
        <field tag="result" value="bad"/>
    </if>
    <elseif condition="${abc=='good'}">
        <field tag="result" value="1"/>
    </elseif>
    <else>
        <field tag="result" value="perfect"/> 
    </else> 
</filter>
<log value="${result}"/>

输出结果:

image-20221028142300259

1.3 elseif

  • elseif配合if使用,当满足elseif的条件时,执行elseif下的子节点。

1.3.1 父节点

  • filter
  • foreach
  • while
  • if
  • else
  • elseif

1.3.2 子节点

  • step(process中)
  • filter
  • foreach
  • while
  • if
  • else
  • elseif
  • import
  • field
  • convertor
  • validator

1.3.3 属性

属性 描述 值类型 示例
condition elseif判断条件表达式 string 判断条件表达式比如 sta[i]=0

1.3.4规则

  • 属性condition为必配属性,其他为可选项;
  • if子节点是根据if的属性condition进行条件判断执行if下的子节点;if的子节点是根据实际需求配置,子节点的配置规则可参考相应子节点的章节说明;

1.3.5 示例

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.brilliance.com.cn/interface"
      xsi:schemaLocation="http://www.brilliance.com.cn/interface ../etc/schema/interface.xsd">
    <interface id="demo" version="2.0" type="server" defaultScope="transaction">
        <transaction id="bean" version="2.0">
            <step id="1">
                <filter ref="publicFilter" type="in">
                   <field tag="a" value="yn" />
                    <if condition="${a=='yes'}">
                        <log value="the value of a is yes" />
                    </if>
                    <elseif condition="${a=='no'}">
                        <log value="the value of a is no" />
                    </elseif>
                    <else>
                        <log value="check out !!!" />
                    </else>
                </filter>
            </step>
        </transaction>
    </interface>
</root>

输出结果:

image-20221028142518864

2 foreach

  • 定义循环控制,只有当控制条件为真的时候其子节点才正确执行,通过配置起始条件,结束条件,变量变化步长,附加条件等,让子节点的操作循环进行处理。

2.1 父节点

  • step
  • filter
  • foreach
  • while
  • if
  • else
  • elseif

2.2 子节点

  • filter
  • foreach
  • while
  • if
  • else
  • elseif
  • import
  • field
  • convertor
  • validator

2.3 属性

属性 描述 值类型 示例
tag 标识 string 循环的标识
begin 循环开始条件,默认为0 string 循环从0开始
end 循环结束条件 string 循环结束条件比如子节点的个数
condition 循环附加条件 String ${i>5}

2.4 规则

  • 属性begin,end为必配属性,其他为可选项;
  • foreach子节点是根据foreach的属性进行条件判断循环执行foreach下的子节点;foreach的子节点是根据实际需求配置,子节点的配置规则可参考相应子节点的章节说明;

2.5 示例

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.brilliance.com.cn/interface"
      xsi:schemaLocation="http://www.brilliance.com.cn/interface ../etc/schema/interface.xsd">
    <interface id="demo" version="2.0" type="server" defaultScope="transaction">
        <transaction id="bean" version="2.0">
            <step id="1">
                <filter ref="publicFilter" type="in">
                    <foreach tag="i" begin="0" end="5">
                        <log value="the value of i is ${i}" />
                    </foreach>
                </filter>
            </step>
        </transaction>
    </interface>
</root>

输出结果:

image-20221020145629037

3 while

  • 定义循环控制,只要当控制条件为真的时候其子节点才正确执行。

3.1 父节点

  • lilter
  • foreach
  • while
  • if
  • else
  • elseif

3.2 子节点

  • filter
  • foreach
  • while
  • if
  • else
  • elseif
  • import
  • field
  • convertor
  • validator

3.2 属性

属性 描述 值类型 示例
condition 循环条件 string ${str!=null}

3.4 示例

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.brilliance.com.cn/interface"
      xsi:schemaLocation="http://www.brilliance.com.cn/interface ../etc/schema/interface.xsd">
    <interface id="demo" version="2.0" type="server" defaultScope="transaction">
        <transaction id="bean" version="2.0">
            <step id="1">
                <filter ref="publicFilter" type="in">
                    <while condition="${true}">
                        <!-- 休眠一秒钟 -->
                        <field value="${sleep(1000)}" />
                    </while>
                </filter>
            </step>
        </transaction>
    </interface>
</root>

输出结果:

image-20221020150145425

4 break/continue

4.1 continue

(同break)

4.2 break

  • 在foreach或者while节点中添加break功能。

4.2.1父节点

  • foreach
  • while
  • if
  • else
  • elseif

4.2.2 子节点

  • filter
  • foreach
  • while
  • if
  • else
  • elseif
  • import
  • field
  • convertor
  • validator

4.2.3 属性

属性 描述 值类型 示例
condition 循环条件 string ${str!=null}

4.3 示例

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.brilliance.com.cn/interface"
      xsi:schemaLocation="http://www.brilliance.com.cn/interface ../etc/schema/interface.xsd">
    <interface id="demo" version="2.0" type="server" defaultScope="transaction">
        <transaction id="bean" version="2.0">
            <step id="1">
                <filter ref="publicFilter" type="in">
                     <foreach tag="i" begin="0" end="5">
                        <if condition="${i==3}">
                            <break />
                        </if>
                         <log value="the value of i is ${i}" />
                    </foreach>
                    <foreach tag="i" begin="0" end="5">
                        <if condition="${i==3}">
                            <continue />
                        </if>
                        <log value="the value of i is ${i}" />
                    </foreach>
                </filter>
            </step>
        </transaction>
    </interface>
</root>

输出结果:

image-20221020150848152

综合应用

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.brilliance.com.cn/interface"
      xsi:schemaLocation="http://www.brilliance.com.cn/interface ../etc/schema/interface.xsd">
    <interface id="demo" version="2.0" type="server" defaultScope="transaction">
        <transaction id="bean" version="2.0">
            <step id="1">
                <filter ref="publicFilter" type="in">
                     <field tag="a" value="${0}" />
                    <foreach tag="i" begin="0" end="5">
                        <if condition="${i%2==0}">
                            <field tag="a" value="${a+i}" />
                        </if>
                        <else>
                            <field tag="a" value="${a+i+1}" />
                        </else>
                    </foreach>
                    <field value="${a}" />
                </filter>
            </step>
        </transaction>
    </interface>
</root>

输出结果:

image-20221020151321519

5 validator

  • validator中的condition属性值如果返回true,则表示交易继续执行;如果返回值为false,则直接跳入step id="exception"步骤中,作为异常处理。

5.1 父节点

  • filter
  • foreach
  • while
  • if
  • else
  • elseif

5.2 属性

属性 描述 值类型 示例
condition EL表达式中的变量 string filter中字段的标识,作为key存入上下文;
errorcode 错误代码 string
description 错误描述 String

5.3 规则

  • 属性condition为必配项,其他为可选项;condition的值为false表示校验不通过,会跳出交易,交易结束。
  • 子节点argument为validator属性condition配置函数的参数,根据函数个数顺序进行配置;
  • 如果校验失败,description会作为错误信息的描述信息返回;

5.4 示例

<validator id="isNotError" condition="${1==2}" errorcode="2" description="运算异常" />

6 import

  • 定义其他在当前配置文件处可以引用的其他配置。

6.1 父节点

  • transaction下所有的节点

6.2 子节点

  • field:处理操作的操作域。

6.3 属性

属性 描述 值类型 示例
file 引用的文件 string commons.xml
ref 引用的节点id string

6.4 规则

  • 属性ref为必配项,其他为可选项,必须正确指定到imports中的定义的import的id属性;

  • 如若在import下配置tag相同的field将会达到一个替换原有field的作用,配置tag不存在的field将无任何效果,以上说明只针对filter的type为in的情况

6.5 示例

<!--主配置-->
 <filter type="in" ref="publicFilter">
     <import file="cfg/etc/imports.xml" ref="1"/>
     <field value="${strarray}" />
     <field value="${strarray1}" />
 </filter>

<!--imports.xml文件-->
<?xml version="1.0" encoding="UTF-8"?>
<!-- 数据模型定义配置文件 -->
<imports>
    <import id="1">
        <field tag="strarray" value="123" />
        <field tag="strarray1" value="${strarray}" />
    </import>
</imports>

7 call

  • call标签:表示可以在一个交易中调用子交易或者跳转到其他的交易。

7.1 父节点

  • filter

7.2 子节点

  • argument

7.3 属性

属性 描述 值类型 示例
tag 内部变量名称 string tag=”abc”
scope 生命周期 string socpe=”step”
type 交易类型 String type=”sub” 作为子交易处理,子交易的异常可在父交易中捕获;
type=”chain” 作为其他交易跳转,子交易完全独立父交易,无法捕获子交易异常; type=”sub_conn” 功能类似chain,但是子交易可以使用父交易的数据库连接,
保证是同一个连接.
transactionName 交易名称 String transactionName=”test”
interfaceName 接口名称 String interfaceName="blackclient”

7.4 arugment属性

属性 描述 值类型 示例
value 参数值 string 传入convertor或validator方法中的参数值
description 描述 string argument描述信息

7.5 call节点返回值

  • call节点其实就是调用子交易的一种方式。将交易处理原子化。

  • call节点会将接口返回值保存在tag里面。

<filter ref="publicFilter" type="in">
    <call tag=”result” scope=”step” type=”chain” transactionName=”a” 
         interfaceName=”interface”/>
     <!--接口是否执行成功-->
    <field tag="succ" value="${result.success}" />
    <!--接口返回的错误码-->
    <field tag="retcode" value="${result.returnCode}" />
    <!--接口返回的错误描述-->
    <field tag="succ" value="${result.description}" />
    <!--接口返回的信息-->
    <field tag="succ" value="${result.content}" />
</filter>

8 log

  • log标签:用来自定义业务实现中的日志输出

8.1 父节点

  • step
  • filter
  • foreach
  • while
  • if
  • else
  • elseif

8.2 子节点

8.3 属性

属性 描述 值类型 示例
value 需要打印的内容 string 配置中的某个变量
level 日志打印级别 string info/debug/error/trace

8.4 规则

8.5 示例

<connection ref="fileConnection">
    <property name="path" value="D:/test.txt" />
</connection>
<log value="file content is:${this}" level="info" />

<filter type="in" ref="fileFilter">
    <field tag="fileSize" value="${getRecordSize()}" />
    <foreach tag="i" end="${fileSize}" condition="${next()}">
        <field tag="id" etag="0" />
        <log value="the ID of line ${i+1} is:${id}" level="info" />
    </foreach>
</filter>

results matching ""

    No results matching ""