瀏覽代碼

更新文档

bryan.zhang 5 年之前
父節點
當前提交
31a7112945
共有 1 個文件被更改,包括 58 次插入12 次删除
  1. 58 12
      docs/guide_cn.md

+ 58 - 12
docs/guide_cn.md

@@ -9,11 +9,13 @@ liteflow需要你的项目使用maven
 	<version>${liteFlow.version}</version>
 </dependency>
 ```
-最新版本为<font color=red>**2.2.2**</font>,为稳定版本,目前jar包已上传中央仓库,可以直接依赖到
+最新版本为<font color=red>*2.2.2*</font>,为稳定版本,目前jar包已上传中央仓库,可以直接依赖到
 
 ## 1.2流程配置文件
 
-(不依赖任何框架的写法)
+如果你的项目不依赖spring框架(现在还有不依赖spring的项目吗?没关系,liteflow也为你提供了配置)
+
+如果你的项目使用spring或者springboot,请跳过此章节
 
 ```xml
 <?xml version="1.0" encoding="UTF-8"?>
@@ -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
 <dependency>
@@ -186,7 +191,7 @@ spring中需要改的地方还是执行器的配置,只需要在配置的路
 
 # 六、架构设计
 
-## 6.1组件式流程引擎架构设计
+## 6.1组件编排式流程引擎架构设计
 
 ![architecture_image](media/architecture.png)
 Handler Unit:我们想象成每一个业务都是一个业务组件,每一个业务组件就是一个handlerUnit(处理单元)  
@@ -236,22 +241,47 @@ public <T extends Slot> T execute(String chainId,Object param,Class<? extends Sl
 
 在组件节点里,随时可以通过方法`getSlot`获取当前的数据槽,从而可以获取任何数据。
 
-## 7.4条件节点
+## 7.4路由节点
 
 在实际业务中,往往要通过动态的业务逻辑判断到底接下去该执行哪一个节点  
 ```xml
 <chain name="chain1">
-    <then value="a,c(b|d)"/> <!-- cond是条件节点,根据c里的逻辑决定路由到b节点还是d节点,可以配置多个 -->
+    <then value="a,c(b|d)"/> <!-- cond是路由节点,根据c里的逻辑决定路由到b节点还是d节点,可以配置多个 -->
     <then value="e,f,g"/>
 </chain>
 ```
 利用表达式可以很方便的进行条件的判断  
 c节点是用来路由的,被称为条件节点,这种节点需要继承`NodeCondComponent`类  
-需要实现方法`processCond`,这个方法需要返回`Class`类型,就是具体的结果节点
+需要实现方法`processCond`,这个方法需要返回`String`类型,就是具体的结果节点
+
+## 7.5子流程
+
+liteflow从`2.3.0`开始支持显式子流程,在xml里配置的节点,可以是节点,也可以是流程id。比如,你可以这么配置
+
+```xml
+<chain name="chain3">
+    <then value="a,c,strategy1,g"/>
+</chain>
+<chain name="strategy1">
+    <then value="m(m1|m2|strategy2)"/>
+</chain>
+<chain name="strategy2">
+    <then value="q,p(p1|p2)"/>
+</chain>
+```
+
+这样是不是很清晰
+
+liteflow支持无穷的嵌套结构,只要你想的出。可以完成相对复杂的流程。
 
-## 7.5嵌套执行
+!> 如果存在相同名字的节点和流程,优先节点。
+
+## 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)