配置
定义你的组件
你需要定义并实现一些组件,确保Spring会扫描到这些组件并注册进上下文
@Component("a")
public class ACmp extends NodeComponent {
@Override
public void process() {
//do your business
}
}
Spring xml中的配置
<context:component-scan base-package="com.yomahub.flowtest.components" />
<bean id="springAware" class="com.yomahub.liteflow.util.SpringAware"/>
<bean class="com.yomahub.liteflow.spring.ComponentScaner"/>
<bean id="liteflowConfig" class="com.yomahub.liteflow.property.LiteflowConfig">
<property name="ruleSource" value="config/flow.xml"/>
<!-- 以下都不是必须的,都有默认值 -->
<property name="enable" value="true"/> <!-- liteflow是否开启,默认为true -->
<property name="zkNode" value="/lite-flow/flow.xml"/> <!-- zkNode的节点,只有使用zk作为配置源的时候才起作用 -->
<property name="slotSize" value="1024"/> <!-- slot的初始数量,默认为1024,此属性基本不用设置,因为满了之后会自动扩容 -->
<property name="whenMaxWaitSecond" value="20"/> <!-- 异步线程最长的等待时间秒(只用于when),默认值为15 -->
<property name="whenMaxWorkers" value="4"/> <!-- 异步线程池最大线程数,默认为4 -->
<property name="whenQueueLimit" value="512"/> <!-- 异步线程池等待队列数,默认为512 -->
<property name="parseOnStart" value="true"/> <!-- 是否在启动的时候就解析规则,默认为true -->
<property name="retryCount" value="0"/> <!-- 全局重试次数,默认为0 -->
<property name="enableLog" value="true"/> <!-- 默认为false -->
<property name="queueLimit" value="100"/> <!-- 默认为200 -->
<property name="period" value="5000"/> <!-- 默认为300000,5分钟 -->
<property name="delay" value="5000"/> <!-- 默认为300000,5分钟 -->
</bean>
<bean id="flowExecutor" class="com.yomahub.liteflow.core.FlowExecutor">
<property name="liteflowConfig" ref="liteflowConfig"/>
</bean>
<!-- 如果上述enableLog为false,下面这段也可以省略 -->
<bean class="com.yomahub.liteflow.monitor.MonitorBus">
<property name="liteflowConfig" ref="liteflowConfig"/>
</bean>
规则文件的定义
同时,你得在resources的config/flow.xml
中如下配置:
<?xml version="1.0" encoding="UTF-8"?>
<flow>
<chain name="chain1">
<then value="a,b,c"/>
<when value="d,e"/>
</chain>
</flow>
Spring在启动时会自动装载规则文件。