配置

定义你的组件

你需要定义并实现一些组件,确保Spring会扫描到这些组件并注册进上下文

  1. @Component("a")
  2. public class ACmp extends NodeComponent {
  3. @Override
  4. public void process() {
  5. //do your business
  6. }
  7. }

Spring xml中的配置

  1. <context:component-scan base-package="com.yomahub.flowtest.components" />
  2. <bean id="springAware" class="com.yomahub.liteflow.util.SpringAware"/>
  3. <bean class="com.yomahub.liteflow.spring.ComponentScaner"/>
  4. <bean id="liteflowConfig" class="com.yomahub.liteflow.property.LiteflowConfig">
  5. <property name="ruleSource" value="config/flow.xml"/>
  6. <!-- 以下都不是必须的,都有默认值 -->
  7. <property name="enable" value="true"/> <!-- liteflow是否开启,默认为true -->
  8. <property name="zkNode" value="/lite-flow/flow.xml"/> <!-- zkNode的节点,只有使用zk作为配置源的时候才起作用 -->
  9. <property name="slotSize" value="1024"/> <!-- slot的初始数量,默认为1024,此属性基本不用设置,因为满了之后会自动扩容 -->
  10. <property name="whenMaxWaitSecond" value="20"/> <!-- 异步线程最长的等待时间秒(只用于when),默认值为15 -->
  11. <property name="whenMaxWorkers" value="4"/> <!-- 异步线程池最大线程数,默认为4 -->
  12. <property name="whenQueueLimit" value="512"/> <!-- 异步线程池等待队列数,默认为512 -->
  13. <property name="parseOnStart" value="true"/> <!-- 是否在启动的时候就解析规则,默认为true -->
  14. <property name="retryCount" value="0"/> <!-- 全局重试次数,默认为0 -->
  15. <property name="enableLog" value="true"/> <!-- 默认为false -->
  16. <property name="queueLimit" value="100"/> <!-- 默认为200 -->
  17. <property name="period" value="5000"/> <!-- 默认为300000,5分钟 -->
  18. <property name="delay" value="5000"/> <!-- 默认为300000,5分钟 -->
  19. </bean>
  20. <bean id="flowExecutor" class="com.yomahub.liteflow.core.FlowExecutor">
  21. <property name="liteflowConfig" ref="liteflowConfig"/>
  22. </bean>
  23. <!-- 如果上述enableLog为false,下面这段也可以省略 -->
  24. <bean class="com.yomahub.liteflow.monitor.MonitorBus">
  25. <property name="liteflowConfig" ref="liteflowConfig"/>
  26. </bean>

规则文件的定义

同时,你得在resources的config/flow.xml中如下配置:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <flow>
  3. <chain name="chain1">
  4. <then value="a,b,c"/>
  5. <when value="d,e"/>
  6. </chain>
  7. </flow>

Spring在启动时会自动装载规则文件。