一、專案概述
1.原專案github地址:https://github.com/j-easy/easy-flows.git
2.easy-flows可以用非常簡易的api創建常用的可組合的作業流,涵蓋了四種邏輯的處理:

3.可以用如下方式構造回圈作業流:
RepeatFlow repeatFlow = RepeatFlow.Builder.aNewRepeatFlow()
.named("repeatflow")
.repeat(work)
.until(WorkPredicate.ALWAYS_FALSE)
.build();
二、專案亮點
由于專案代碼量小,決定手寫一下慢慢品,個人感覺,easy-flows最好玩的地方在于Builder的構造,通過在Builder模式中進一步定義介面,細化了流程中的語意和步驟哦,
拿比較簡單的順序流SequentialFlow舉例,通過ExecuteStep介面中的execute方法回傳ThenStep,限制了鏈式呼叫程序中的then()方法在execute()之后,
public static class Builder {
private Builder() {
// force usage of static method aNewSequentialFlow
}
public static NameStep aNewSequentialFlow() {
return new BuildSteps();
}
public interface NameStep extends ExecuteStep {
ExecuteStep named(String name);
}
public interface ExecuteStep {
ThenStep execute(Work initialWork);
ThenStep execute(List<Work> initialWorkUnits);
}
public interface ThenStep {
ThenStep then(Work nextWork);
ThenStep then(List<Work> nextWorkUnits);
SequentialFlow build();
}
private static class BuildSteps implements NameStep, ExecuteStep, ThenStep {
private String name;
private final List<Work> works;
BuildSteps() {
this.name = UUID.randomUUID().toString();
this.works = new ArrayList<>();
}
……
@Override
public SequentialFlow build() {
return new SequentialFlow(this.name, this.works);
}
}
呼叫時如下:
SequentialFlow sequentialFlow = SequentialFlow.Builder.aNewSequentialFlow()
.named("testFlow")
.execute(work1)
.then(work2)
.then(work3)
.build();
三、關于Mockito
1.Mockito 是一個強大的用于 Java 開發的模擬測驗框架, 通過 Mockito 我們可以創建和配置 Mock 物件, 進而簡化有外部依賴的類的測驗.
2.使用 Mockito 的大致流程如下:
- 創建外部依賴的 Mock 物件, 然后將此 Mock 物件注入到測驗類中.
- 執行測驗代碼.
- 校驗測驗代碼是否執行正確.
3.Mockito 會追蹤 Mock 物件的所用方法呼叫和呼叫方法時所傳遞的引數. 我們可以通過 verify() 靜態方法來來校驗指定的方法呼叫是否滿足斷言.
Mockito.verify(work, Mockito.times(n)).execute(workContext);
驗證execute方法是否執行了n次;
Mockito.verify(nextOnPredicateSuccess, Mockito.times(1)).execute(workContext);
驗證nextOnPredicateSuccess.execute()是否執行了1次;
Mockito.verify(nextOnPredicateFail, Mockito.never()).execute(workContext);
驗證nextOnPredicateFail是否一次都沒執行,
四、gitee地址
我的gitee地址: https://gitee.com/cathychen00/cathyjava-easyflows
我的文章會逐步公布到公眾號,歡迎園友關注交流:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/285720.html
標籤:其他
