StepChain 0.0.7 發布,Java 通用業務處理框架

2020-11-27 開源中國

0.0.7更新日誌:

1、新增支持Processor定時調度FixedRate、FixedDelay。

2、修復0.0.6版本bug.

3、部分接口API調整。

4、建議使用0.0.6者全部升級到0.0.7版本。

stepchain 通用業務流程流水線處理框架。 類似於Commons Chain和Commons Pipeline這樣的Java Pipeline Step Chain用於組織複雜處理流程執行的流行技術。

gitee: https://gitee.com/zengfr/stepchain

github: https://github.com/zengfr/stepchain-spring-boot-starter/

Repositories Central Sonatype Mvnrepository

Feature:1、支持通用業務job、services子流程無限制拆分。2、支持業務子流程串行化、業務子流程並行化,可配置化。3、支持Config業務子流程開啟或禁用、配置串行或並行以及並行數的統一配置。4、支持業務流程以及子流程任意無限嵌套。5、支持配置中心、緩存、統一數據接口、redis、Es、日誌Trace等。6、支持並行分支,支持條件分支if/else、switch、loop子流程.7、支持Processor定時調度FixedRate、FixedDelay。備註:只開源了通用部分(不影響使用),去除了有關框架組件包括:配置中心、緩存中心、數據接口以及業務相關DataMiddle等部分API。

Maven Dependency:Maven(Not Use Spring Boot):<dependency> <groupId>com.github.zengfr.project</groupId> <artifactId>stepchain</artifactId> <version>0.0.7</version><dependency>Maven(Use Spring Boot):<dependency> <groupId>com.github.zengfr.project</groupId> <artifactId>stepchain-spring-boot-starter</artifactId> <version>0.0.7</version><dependency>Gradle:compile group: 'com.github.zengfr.project', name: 'stepchain', version: '0.0.7'compile group: 'com.github.zengfr.project', name: 'stepchain-spring-boot-starter', version: '0.0.7'

interface Pipeline ChainBuilder StepBuilder Step Chain javadoc api文檔 

1、StepChain 的中心思想是什麼?如何做到通用的?答: 1.1、任何業務邏輯處理抽象成1\input輸入 2\ processor處理器 3\output輸出.中間過程結果產生和組合成dataMiddle。1.2、任何業務邏輯處理使用多個processor組合執行。2、StepChain 如何並行和串行執行多個processor?答: 串行step=pipeline.createStep();step.put(processors);//processors串行執行.並行step=pipeline.createStep(4);step.put(processors);//processors同時4個並行執行.3、Stepchain 如何創建processor? 3.1、實現 IProcessor 接口。 3.2、使用IProcessorBuilder: <I> IProcessor<I, Boolean> createProcessor(Predicate<I> predicate); <I> IProcessor<I, Boolean> createProcessor(Consumer<I> consumer); <I, O> IProcessor<I, O> createProcessor(Function<I, O> func);4、StepChain 如何復用和組合processor? 4.1、使用IChainBuilder、IChain: 4.2、使用IProcessorBuilder: <A, B, C> IProcessor<A, C> createProcessor(IProcessor<A, B> first, IProcessor<B, C> second); <A, B, C, D> IProcessor<A, D> createProcessor(IProcessor<A, B> processor1, IProcessor<B, C> processor2, IProcessor<C, D> processor3);5、StepChain 如何按條件復用和組合processor?答: case1、已有trueProcessor\falseProcessor2個 創建 validator 則按條件執行2則之1.IConditionSelectorProcessor<String, Boolean, String> p3 = pipeline.createConditionValidatorProcessor(validator, trueProcessor, falseProcessor);case2、已有processor 創建 validator 創建循環執行體,validator 返回false時終止執行。IConditionLoopProcessor<String, String> p2 = pipeline.createConditionLoopProcessor(validator, processor);case3、已有processor創建 switch 邏輯,根據selector返回的key執行某1分支branchProcessor如果返回的key不在分支中 則執行默認key對應的分支branchProcessor。IConditionSelectorProcessor<String, String, String> p1 = pipeline.createConditionSelectorProcessor(selector);p1.setBranch(S key, IProcessor<I, O> processor);p1setDefaultBranch(S key);case4、已有processor創建 if/else if/else 邏輯,根據validator返回的結果與result對比一致則執行分支branchProcessor,如果沒有返回一致的 則執行默認分支branchProcessor。pipeline.createConditionValidatorSelectorProcessor();public interface IConditionValidatorSelectorProcessor<I,O> extends IProcessor<I, O> { void setBranch(IProcessor<I, Boolean> validator,Boolean result,IProcessor<I, O> processor); void setDefaultBranch(IProcessor<I, O> processor);}

StepChainSpringBootTest.java

PipelineTest.java 

   

  

相關焦點