實戰項目:設計實現一個流程編排框架(測試)

上幾篇文章主要講了《實戰項目:設計實現一個流程編排框架(分析)》《實戰項目:設計實現一個流程編排框架(設計》《實戰項目:設計實現一個流程編排框架(實現)》,我們今天主要講一下基於分析、設計、實現的框架怎麼滿足一些基本場景。

方法節點

流程

流程執行三個方法節點,每個節點做+1操作,初始化count=0,最後輸出結果count=3;

文件定義

name: addCount
id: test1
desc: 方法節點執行
input: com.service.flow.sample.common.test1.Test1Input
output: com.service.flow.sample.common.test1.Test1Output
temp: com.service.flow.sample.common.test1.Test1Temp
startNode: node1
nodes:
  - node:
      id: node1
      name: methodNode1
      component: com.service.flow.sample.common.test1.Test1Component:count
      desc: 數量+1
      input: com.service.flow.sample.common.test1.Test1Input
      type: method
      next: node2
  - node:
      id: node2
      name: methodNode2
      component: com.service.flow.sample.common.test1.Test1Component:count
      desc: 數量+1
      input: com.service.flow.sample.common.test1.Test1Input
      type: method
      next: node3
  - node:
      id: node3
      name: methodNode3
      component: com.service.flow.sample.common.test1.Test1Component:count
      desc: 數量+1
      input: com.service.flow.sample.common.test1.Test1Input
      type: method

執行結果

2020-06-25 12:45:02.974  INFO 13808 --- [           main] com.service.flow.web.api.FlowHandler     : result:Test1Input{count=3}
2020-06-25 12:45:02.976  INFO 13808 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test1->Node:methodNode1->Node:methodNode2->Node:methodNode3
2020-06-25 12:45:02.976  INFO 13808 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:16ms

Bean節點

流程

流程執行三個bean節點,每個節點做+1操作,初始化count=0,最後輸出結果count=3;

文件定義

name: addCount
id: test2
desc: bean節點執行
input: com.service.flow.sample.common.test2.Test2Input
output: com.service.flow.sample.common.test2.Test2Output
temp: com.service.flow.sample.common.test2.Test2Temp
startNode: node1
nodes:
  - node:
      id: node1
      name: beanNode1
      component: test2Component:count
      desc: 數量+1
      input: com.service.flow.sample.common.test2.Test2Input
      type: bean
      next: node2
  - node:
      id: node2
      name: beanNode2
      component: test2Component:count:count
      desc: 數量+1
      input: com.service.flow.sample.common.test2.Test2Input
      type: bean
      next: node3
  - node:
      id: node3
      name: beanNode3
      component: test2Component:count
      desc: 數量+1
      input: com.service.flow.sample.common.test2.Test2Input
      type: bean

執行結果

2020-06-25 12:45:32.976  INFO 11796 --- [           main] com.service.flow.web.api.FlowHandler     : result:Test1Input{count=3}
2020-06-25 12:45:32.977  INFO 11796 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test2->Node:beanNode1->Node:beanNode2->Node:beanNode3
2020-06-25 12:45:32.977  INFO 11796 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:14ms

條件節點(循環節點)

流程

流程開始執行條件節點,初始化count=0;beanNode2每次做+1操作,當count>=5時,執行節點beanNode3,做+5操作,結果count=10;

文件定義

name: loop
id: test3
desc: 循環點執行
input: com.service.flow.sample.common.test3.Test3Input
output: com.service.flow.sample.common.test3.Test3Output
temp: com.service.flow.sample.common.test3.Test3Temp
startNode: node1
nodes:
  - node:
      id: node1
      name: conditionNode1
      component: count<5:node2,count>=5:node3
      desc: 數量條件判斷
      type: condition
  - node:
      id: node2
      name: methodNode2
      component: test3Component:count
      desc: 數量+1
      input: com.service.flow.sample.common.test3.Test3Input
      type: bean
      next: node1
  - node:
      id: node3
      name: methodNode3
      component: test3Component:count5
      desc: 數量+5
      input: com.service.flow.sample.common.test3.Test3Input
      type: bean

執行結果

2020-06-25 12:46:35.852  INFO 19920 --- [           main] com.service.flow.web.api.FlowHandler     : result:Test1Input{count=10}
2020-06-25 12:46:35.854  INFO 19920 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test3->Node:conditionNode1->Node:methodNode2->Node:conditionNode1->Node:methodNode2->Node:conditionNode1->Node:methodNode2->Node:conditionNode1->Node:methodNode2->Node:conditionNode1->Node:methodNode2->Node:conditionNode1->Node:methodNode3
2020-06-25 12:46:35.854  INFO 19920 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:63ms

服務節點

流程

現在服務結果沒有具體實現,空跑交易,需要交易框架自己擴展;

文件定義

name: service
id: test4
desc: 服務節點執行
input: com.service.flow.sample.common.test3.Test3Input
output: com.service.flow.sample.common.test3.Test3Output
temp: com.service.flow.sample.common.test3.Test3Temp
startNode: node1
nodes:
  - node:
      id: node1
      name: serviceNode1
      component: /test:post:testApplication
      desc: 方法節點調用
      input: com.service.flow.sample.common.test3.Test3Input
      type: service

執行結果

2020-06-25 12:47:41.366  INFO 16272 --- [           main] com.service.flow.web.api.FlowHandler     : result:com.service.flow.model.BaseOutput@660591fb
2020-06-25 12:47:41.366  INFO 16272 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test4->Node:serviceNode1
2020-06-25 12:47:41.366  INFO 16272 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:14ms

子流程節點

流程

定一個一個子節點調用第一個流程,最終結果count=3

文件定義

name: subflow
id: test5
desc: 子流程節點執行
input: com.service.flow.sample.common.test3.Test3Input
output: com.service.flow.sample.common.test3.Test3Output
temp: com.service.flow.sample.common.test3.Test3Temp
startNode: node1
nodes:
  - node:
      id: node1
      name: subFlowNode1
      component: test3
      desc: 子流程節點
      input: com.service.flow.sample.common.test3.Test3Input
      type: subflow


執行結果

2020-06-25 12:54:36.163  INFO 17456 --- [           main] com.service.flow.web.api.FlowHandler     : result:Test1Input{count=3}
2020-06-25 12:54:36.165  INFO 17456 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test1->Node:methodNode1->Node:methodNode2->Node:methodNode3
2020-06-25 12:54:36.165  INFO 17456 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:7ms
2020-06-25 12:54:36.165  INFO 17456 --- [           main] com.service.flow.web.api.FlowHandler     : result:Test1Input{count=3}
2020-06-25 12:54:36.165  INFO 17456 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test5->Node:subFlowNode1
2020-06-25 12:54:36.165  INFO 17456 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:20ms
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章