diff --git a/docs/guide_cn.md b/docs/guide_cn.md index def955586..2e8965e6f 100644 --- a/docs/guide_cn.md +++ b/docs/guide_cn.md @@ -1,4 +1,5 @@ # 一、快速开始 + liteflow需要你的项目使用maven ## 1.1依赖 ```xml @@ -8,9 +9,13 @@ liteflow需要你的项目使用maven ${liteFlow.version} ``` -最新版本为**2.0.1**   -稳定版本为**1.3.1** +最新版本为**2.1.0** +稳定版本为**2.0.1** + ## 1.2流程配置文件 + +(不依赖任何框架的写法) + ```xml @@ -54,6 +59,9 @@ chain为流程链,每个链上可配置多个组件节点。目前执行的模 ``` ## 1.3执行流程链 + +(不依赖任何框架的写法) + ```java FlowExecutor executor = new FlowExecutor(); executor.setRulePath(Arrays.asList(new String[]{"/config/flow.xml"})); @@ -96,10 +104,39 @@ public class AComponent extends NodeComponent ``` 然后你的项目中通过spring拿到执行器进行调用流程。 -# 三、和zookeeper进行集成 -## 3.1spring配置 +# 三、和Spring Boot集成 + +## 3.1 依赖 + +liteFlow提供了liteflow-spring-boot-starter依赖包 + +```xml + + com.thebeastshop + liteflow-spring-boot-starter + 2.1.0 + +``` + +## 3.2配置 + +在依赖了以上jar包后。 + +在application.properties里加上配置地址后,就可以在容器中依赖拿到`FlowExecutor`实例 + +```properties +liteflow.ruleSource=config/flow.xml +``` + +工程中的liteflow-test演示了如何在springboot下进行快速配置 + +# 四、和zookeeper进行集成 + +## 4.1spring配置 + liteFlow支持把配置放在zk集群中,并支持实时修改流程 你只需在原来配置执行器的地方,把本地xml路径换成zk地址就ok了 + ```xml @@ -116,8 +153,10 @@ liteFlow支持把配置放在zk集群中,并支持实时修改流程 如果你不加zkNode这个标签,就用默认的节点路径进行读取配置。 使用这种方式加载配置,在zk上进行更改配置。liteFlow会实时刷新配置。 -# 四、使用自定义的配置源 -## 4.1创建自定义配置源的类 +# 五、使用自定义的配置源 + +## 5.1创建自定义配置源的类 + 如果你不想用本地的配置,也不打算使用zk作为配置持久化工具。liteFlow支持自定义的配置源的扩展点。 在你的项目中创建一个类继承`ClassXmlFlowParser`这个类 ```java @@ -133,7 +172,8 @@ public class TestCustomParser extends ClassXmlFlowParser { } ``` -## 4.2Spring配置 +## 5.2Spring配置 + spring中需要改的地方还是执行器的配置,只需要在配置的路径地方放入自定义类的类路径即可 ```xml @@ -145,16 +185,20 @@ spring中需要改的地方还是执行器的配置,只需要在配置的路 ``` -# 五、架构设计 -## 5.1组件式流程引擎架构设计 +# 六、架构设计 + +## 6.1组件式流程引擎架构设计 + ![architecture_image](https://raw.githubusercontent.com/thebeastshop/liteFlow/master/docs/images/architecture.png) Handler Unit:我们想象成每一个业务都是一个业务组件,每一个业务组件就是一个handlerUnit(处理单元) EPU:这里的epu对应的就是我们的执行器,用来统筹并处理handlerUnit。相当于计算机的CPU Event Bus:事件总线,用来指定下一个命令是什么,该如何去执行处理单元。这里的时间总线由我们的配置构成 Data Bus:数据总线,用来存储整个调用链里数据。每一个请求生成一个数据槽。一个数据里最多有1024个数据槽 -# 六、接入详细指南 -## 6.1执行器 +# 七、接入详细指南 + +## 7.1执行器 + 执行器`FlowExecutor`用来执行一个流程,用法为 ```java public T execute(String chainId,Object param); @@ -173,14 +217,16 @@ public T execute(String chainId,Object param,Class 不过这里还是推荐扩展出自定义的Slot(上一小章阐述了原因),自定义的Slot更加友好。更加贴合业务。 -## 6.3组件节点 +## 7.3组件节点 + 组件节点需要继承`NodeComponent`类 需要实现`process`方法 但是推荐实现`isAccess`方法,表示是否进入该节点,可以用于业务参数的预先判断 @@ -191,7 +237,8 @@ public T execute(String chainId,Object param,Class @@ -203,7 +250,8 @@ public T execute(String chainId,Object param,Classc==>h(START)==>m==>p==>p1==>h(END)==>g ``` ?> 其中h节点分start和end两个步骤,说明在h节点内调用了另一条流程。start和end之间的步骤就是另一条流程的步骤 -## 6.7监控 +## 7.7监控 + liteFlow提供了简单的监控,目前只统计一个指标:每个组件的平均耗时 每5分钟会打印一次,并且是根据耗时时长倒序排的。 -# 七、未来版本计划 +# 八、未来版本计划 + ## 2.5版本 * 支持更多的表达式,重写表达式解析器 * 重新设计数据总线,解决数据槽热点问题