實戰項目:設計實現一個流程編排框架(快速入門)

上幾篇文章主要講了《實戰項目:設計實現一個流程編排框架(分析)》《實戰項目:設計實現一個流程編排框架(設計》《實戰項目:設計實現一個流程編排框架(實現)》,今天主要做一個快速入門手冊。

代碼地址:https://github.com/itrickzhang/service-flow

Service-flow

微服務流程編排框架,支持方法節點、bean節點、條件節點(循環節點)、服務節點、子流程節點。

快速入門

依賴

版本按實際情況給定

<dependency>
    <groupId>com.service.flow</groupId>
    <artifactId>service-flow-spring-boot-starter</artifactId>
 </dependency>

定義輸出參數DTO

需要繼承BaseInput

public class TestInput extends BaseInput

定義輸出參數DTO

需要繼承BaseOutPut

public class TestOutput extends BaseOutput

定義流程臨時變量

需要繼承BaseTemp

public class TestTemp extends BaseTemp

定義組件

@Component("testComponent")
public class TestComponent {

     public TestOutput test1(TestInput test){
         TestOutput testOutput = new TestOutput();
         BeanUtils.copyProperties(test,testOutput);
         System.out.println("1111111111"+testOutput);
         return testOutput;
     }
......

}

流程定義

新增流程文件

在resources/flow下新建test.flow.yml

name: openAccount
id: test
desc: 條件執行
input: com.service.flow.sample.common.model.TestInput
output: com.service.flow.sample.common.model.TestOutput
temp: com.service.flow.sample.common.model.TestTemp
startNode: node1
nodes:
  - node:
      id: node1
      name: methodInvoke
      component: com.service.flow.sample.common.component.TestComponent:test1
      desc: 單節點執行
      input: com.service.flow.sample.common.model.TestInput
      type: method
      next: node2
  - node:
      id: node2
      name: beanInvoke
      component: testComponent:test2
      desc: 單節點執行
      input: com.service.flow.sample.common.model.TestInput
      type: bean
      next: node3
  - node:
      id: node3
      name: conditionByAge
      component: age>20:node4,age<20:node5
      desc: 條件節點執行
      type: condition
  - node:
      id: node4
      name: beanInvoke
      component: testComponent:test4
      desc: bean節點執行
      input: com.service.flow.sample.common.model.TestInput
      type: bean
  - node:
      id: node5
      name: beanInvoke
      component: testComponent:test5
      desc: bean節點執行
      input: com.service.flow.sample.common.model.TestInput
      type: bean
      next: node6
  - node:
      id: node6
      name: serviceInvoke
      component: /test:post:testApplication
      desc: 服務節點
      input: com.service.flow.sample.common.model.TestInput
      type: service
      next: node7
  - node:
      id: node7
      name: subFlow
      component: test2
      desc: 子流程節點
      input: com.service.flow.sample.common.model.TestInput
      type: subflow

執行結果

2020-06-22 22:43:30.607  INFO 7276 --- [           main] com.service.flow.web.api.FlowHandler     : result:Test{name='zhangsan', age=18}
2020-06-22 22:43:30.607  INFO 7276 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test2->Node:node1
2020-06-22 22:43:30.607  INFO 7276 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:0ms
2020-06-22 22:43:30.607  INFO 7276 --- [           main] com.service.flow.web.api.FlowHandler     : result:Test{name='zhangsan', age=18}
2020-06-22 22:43:30.607  INFO 7276 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test->Node:node1->Node:node2->Node:node3->Node:node5->Node:node6->Node:node7
2020-06-22 22:43:30.607  INFO 7276 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:52ms
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章