diff --git a/docs/guide_cn.md b/docs/guide_cn.md index b22dd9a03..a2293343e 100644 --- a/docs/guide_cn.md +++ b/docs/guide_cn.md @@ -9,11 +9,13 @@ liteflow需要你的项目使用maven ${liteFlow.version} ``` -最新版本为**2.2.2**,为稳定版本,目前jar包已上传中央仓库,可以直接依赖到 +最新版本为*2.2.2*,为稳定版本,目前jar包已上传中央仓库,可以直接依赖到 ## 1.2流程配置文件 -(不依赖任何框架的写法) +如果你的项目不依赖spring框架(现在还有不依赖spring的项目吗?没关系,liteflow也为你提供了配置) + +如果你的项目使用spring或者springboot,请跳过此章节 ```xml @@ -71,6 +73,9 @@ Slot slot = executor.execute("demoChain", "arg"); 如果你的项目使用spring,推荐参考[和Spring进行集成](https://bryan31.gitee.io/liteflow/#/?id=%e4%ba%8c%e3%80%81%e5%92%8cspring%e8%bf%9b%e8%a1%8c%e9%9b%86%e6%88%90) # 二、和spring进行集成 + +针对于使用了spring但没有使用springboot的项目 + ## 2.1流程配置可以省略的部分 流程配置中的`nodes`节点,可以不用配置了,支持spring的自动扫描方式。你需要在你的spring配置文件中定义 ```xml @@ -107,7 +112,7 @@ public class AComponent extends NodeComponent ## 3.1 依赖 -liteFlow提供了liteflow-spring-boot-starter依赖包 +liteFlow提供了liteflow-spring-boot-starter依赖包,提供自动装配功能 ```xml @@ -186,7 +191,7 @@ spring中需要改的地方还是执行器的配置,只需要在配置的路 # 六、架构设计 -## 6.1组件式流程引擎架构设计 +## 6.1组件编排式流程引擎架构设计 ![architecture_image](media/architecture.png) Handler Unit:我们想象成每一个业务都是一个业务组件,每一个业务组件就是一个handlerUnit(处理单元) @@ -236,22 +241,47 @@ public T execute(String chainId,Object param,Class - + ``` 利用表达式可以很方便的进行条件的判断 c节点是用来路由的,被称为条件节点,这种节点需要继承`NodeCondComponent`类 -需要实现方法`processCond`,这个方法需要返回`Class`类型,就是具体的结果节点 +需要实现方法`processCond`,这个方法需要返回`String`类型,就是具体的结果节点 -## 7.5嵌套执行 +## 7.5子流程 + +liteflow从`2.3.0`开始支持显式子流程,在xml里配置的节点,可以是节点,也可以是流程id。比如,你可以这么配置 + +```xml + + + + + + + + + +``` + +这样是不是很清晰 + +liteflow支持无穷的嵌套结构,只要你想的出。可以完成相对复杂的流程。 + +!> 如果存在相同名字的节点和流程,优先节点。 + +## 7.6节点内执行流程 + +liteflow支持在一个节点里通过代码调用另外一条流程, 这个流程关系在xml中并不会显示。所以这里称之为隐式调用。 + +隐式调用可以完成更为复杂的子流程,比如循环调用: -liteFlow可以无极嵌套执行n条流程 ```java @Component("h") public class HComponent extends NodeComponent { @@ -262,7 +292,9 @@ public class HComponent extends NodeComponent { @Override public void process() { System.out.println("Hcomponent executed!"); - flowExecutor.invoke("strategy1",3, DefaultSlot.class, this.getSlotIndex()); + for(int i=0;i<10;i++){ + flowExecutor.invoke("strategy1",3, DefaultSlot.class, this.getSlotIndex()); + } } } @@ -273,6 +305,13 @@ public class HComponent extends NodeComponent { liteFlow在执行每一条流程链后会打印步骤 样例如下: + +``` +a==>c==>m==>q==>p==>p1==>g +``` + +当然你还可能看到这样的情况: + ``` a==>c==>h(START)==>m==>p==>p1==>h(END)==>g ``` @@ -326,13 +365,20 @@ liteFlow提供了简单的监控,目前只统计一个指标:每个组件的 * 增加组件里结束整个流程的配置 * 修复一些可能导致内存变大的bug -## 2.2.0 更新日志 +## 2.2.2 更新日志 更新点如下: -* pom规划化 +* pom规划化,符合中央仓库的要求 * 包路径改成个人域名路径 * 修复当有多个流程配置时,条件节点失效的bug +## 2.3.0 更新日志 + +更新点如下: + +* 重构核心部分代码 +* 增加子流程显式调用 + # 九、联系作者 ![wx](media/wx.jpeg)![offIical-wx](media/offIical-wx.jpg)