Skip to content

Commit c538601

Browse files
authored
Merge pull request #32 from codingapi/dev
Dev
2 parents cad0f32 + 74fdbea commit c538601

7 files changed

Lines changed: 62 additions & 38 deletions

File tree

flow-engine-framework/src/main/java/com/codingapi/flow/context/RepositoryHolderContext.java

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -222,17 +222,14 @@ private void saveTodoMargeRecords() {
222222
List<FlowTodoRecord> flowTodoRecords = new ArrayList<>();
223223
for (FlowRecord flowRecord : flowRecords) {
224224
if (flowRecord.isTodo()) {
225-
FlowTodoRecord todoMargeRecord = null;
226-
if (flowRecord.isMergeable()) {
227-
todoMargeRecord = flowTodoRecordRepository.getByMergeKey(flowRecord.getMergeKey());
228-
if (todoMargeRecord == null) {
229-
todoMargeRecord = new FlowTodoRecord(flowRecord);
230-
} else {
231-
todoMargeRecord.update(flowRecord);
232-
todoMargeRecord.addMargeCount();
233-
}
234-
} else {
225+
FlowTodoRecord todoMargeRecord = flowTodoRecordRepository.getByMergeKey(flowRecord.getMergeKey());
226+
if (todoMargeRecord == null) {
235227
todoMargeRecord = new FlowTodoRecord(flowRecord);
228+
} else {
229+
todoMargeRecord.update(flowRecord);
230+
if (flowRecord.isMergeable()) {
231+
todoMargeRecord.addMergeCount();
232+
}
236233
}
237234
flowTodoRecords.add(todoMargeRecord);
238235
}
@@ -259,7 +256,7 @@ private void saveRecords() {
259256
}
260257

261258

262-
private void removeTodoMargeRecords() {
259+
private void removeTodoMergeRecords() {
263260
for (FlowRecord flowRecord : flowRecords) {
264261
if (flowRecord.isDone()) {
265262
if (flowRecord.isMergeable()) {
@@ -270,8 +267,8 @@ private void removeTodoMargeRecords() {
270267
for (FlowTodoMerge margeRelation : margeRelations) {
271268
if (margeRelation.isRecord(flowRecord.getId())) {
272269
flowTodoMergeRepository.remove(margeRelation);
273-
todoMargeRecord.divMargeCount();
274-
if (todoMargeRecord.hasMargeCount()) {
270+
todoMargeRecord.divMergeCount();
271+
if (todoMargeRecord.hasMergeCount()) {
275272
flowTodoRecordRepository.save(todoMargeRecord);
276273
} else {
277274
flowTodoRecordRepository.remove(todoMargeRecord);
@@ -293,7 +290,7 @@ private void removeTodoMargeRecords() {
293290
public void saveAll() {
294291
this.saveRecords();
295292
this.saveTodoMargeRecords();
296-
this.removeTodoMargeRecords();
293+
this.removeTodoMergeRecords();
297294
}
298295

299296

flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowTodoRecord.java

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
import lombok.Setter;
66

77
/**
8-
* 待办记录数据,所有的待办列表
8+
* 待办记录数据,所有的待办列表(自动合并记录)
99
*/
1010
@Getter
1111
@AllArgsConstructor
1212
public class FlowTodoRecord {
1313

1414
/**
15-
* 合并记录id
15+
* 待办记录id (todoId,无业务属性,流程处理还是通过recordId来处理)
1616
*/
1717
@Setter
1818
private long id;
@@ -81,6 +81,7 @@ public class FlowTodoRecord {
8181

8282
/**
8383
* 合并记录数量
84+
* 当 {@link FlowTodoRecord#mergeable} 为true时,该字段有效,否则为0
8485
*/
8586
private int margeCount;
8687

@@ -101,11 +102,12 @@ public class FlowTodoRecord {
101102

102103

103104
public FlowTodoRecord(FlowRecord flowRecord) {
104-
this.update(flowRecord);
105+
this.update(flowRecord);
106+
this.margeCount = flowRecord.isMergeable() ? 1 : 0;
105107
}
106108

107109

108-
public void update(FlowRecord flowRecord){
110+
public void update(FlowRecord flowRecord) {
109111
this.processId = flowRecord.getProcessId();
110112
this.workBackupId = flowRecord.getWorkBackupId();
111113
this.workCode = flowRecord.getWorkCode();
@@ -124,19 +126,28 @@ public void update(FlowRecord flowRecord){
124126
this.timeoutTime = flowRecord.getTimeoutTime();
125127
}
126128

127-
public void addMargeCount(){
128-
if(this.mergeable) {
129+
/**
130+
* 添加合并记录数量
131+
*/
132+
public void addMergeCount() {
133+
if (this.mergeable) {
129134
this.margeCount++;
130135
}
131136
}
132137

133-
public void divMargeCount(){
134-
if(this.mergeable) {
138+
/**
139+
* 减去合并记录数量
140+
*/
141+
public void divMergeCount() {
142+
if (this.mergeable) {
135143
this.margeCount--;
136144
}
137145
}
138146

139-
public boolean hasMargeCount(){
147+
/**
148+
* 是否有合并记录数量
149+
*/
150+
public boolean hasMergeCount() {
140151
return this.mergeable && this.margeCount > 0;
141152
}
142153

flow-engine-framework/src/test/java/com/codingapi/flow/repository/FlowTodoMergeRepositoryImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,9 @@ public List<FlowTodoMerge> findByTodoId(long todoId) {
3838
filter(relation -> relation.getTodoId() == todoId)
3939
.toList();
4040
}
41+
42+
43+
public List<FlowTodoMerge> findAll() {
44+
return cache.values().stream().toList();
45+
}
4146
}

flow-engine-framework/src/test/java/com/codingapi/flow/repository/FlowTodoRecordRepositoryImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,8 @@ public List<FlowTodoRecord> findByOperatorId(long operatorId) {
4545
return cache.values().stream().filter(record -> record.getCurrentOperatorId() == operatorId).toList();
4646
}
4747

48+
public List<FlowTodoRecord> findAll() {
49+
return cache.values().stream().toList();
50+
}
51+
4852
}

flow-engine-framework/src/test/java/com/codingapi/flow/service/FlowMergeableServiceTest.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,16 @@
3737

3838
public class FlowMergeableServiceTest {
3939

40-
private final FlowTodoRecordRepositoryImpl flowTodoMargeRecordRepository = new FlowTodoRecordRepositoryImpl();
41-
private final FlowTodoMergeRepositoryImpl flowTodoMargeRelationRepository = new FlowTodoMergeRepositoryImpl();
40+
private final FlowTodoRecordRepositoryImpl flowTodoRecordRepository = new FlowTodoRecordRepositoryImpl();
41+
private final FlowTodoMergeRepositoryImpl flowTodoMergeRepository = new FlowTodoMergeRepositoryImpl();
4242
private final FlowRecordRepositoryImpl flowRecordRepository = new FlowRecordRepositoryImpl();
4343
private final UserGateway userGateway = new UserGateway();
4444
private final WorkflowBackupRepository workflowBackupRepository = new WorkflowBackupRepositoryImpl();
4545
private final WorkflowRepository workflowRepository = new WorkflowRepositoryImpl();
4646
private final ParallelBranchRepository parallelBranchRepository = new ParallelBranchRepositoryImpl();
4747
private final DelayTaskRepository delayTaskRepository = new DelayTaskRepositoryImpl();
4848
private final UrgeIntervalRepository urgeIntervalRepository = new UrgeIntervalRepositoryImpl();
49-
private final FlowService flowService = new FlowService(workflowRepository, userGateway, flowRecordRepository,flowTodoMargeRecordRepository,flowTodoMargeRelationRepository, workflowBackupRepository, parallelBranchRepository, delayTaskRepository, urgeIntervalRepository);
49+
private final FlowService flowService = new FlowService(workflowRepository, userGateway, flowRecordRepository, flowTodoRecordRepository, flowTodoMergeRepository, workflowBackupRepository, parallelBranchRepository, delayTaskRepository, urgeIntervalRepository);
5050

5151

5252
/**
@@ -143,12 +143,12 @@ void mergeableRecords() {
143143
Set<String> set = new HashSet<>(mergeIdList);
144144
assertEquals(1,set.size());
145145

146-
List<FlowTodoRecord> todoMargeRecords = flowTodoMargeRecordRepository.findByOperatorId(boss.getUserId());
147-
assertEquals(1, todoMargeRecords.size());
146+
List<FlowTodoRecord> todoRecords = flowTodoRecordRepository.findByOperatorId(boss.getUserId());
147+
assertEquals(1, todoRecords.size());
148148

149-
FlowTodoRecord todoMargeRecord = todoMargeRecords.get(0);
150-
List<FlowTodoMerge> relationList = flowTodoMargeRelationRepository.findByTodoId(todoMargeRecord.getId());
151-
assertEquals(count, relationList.size());
149+
FlowTodoRecord todoMargeRecord = todoRecords.get(0);
150+
List<FlowTodoMerge> mergeList = flowTodoMergeRepository.findByTodoId(todoMargeRecord.getId());
151+
assertEquals(count, mergeList.size());
152152

153153

154154
List<IFlowAction> bossActions = bossNode.actionManager().getActions();
@@ -167,5 +167,12 @@ void mergeableRecords() {
167167
assertEquals(3, records.stream().filter(FlowRecord::isFinish).toList().size());
168168
}
169169

170-
}
170+
List<FlowTodoRecord> todoRecordList = flowTodoRecordRepository.findAll();
171+
assertEquals(0, todoRecordList.size());
172+
173+
List<FlowTodoMerge> todoMargeList = flowTodoMergeRepository.findAll();
174+
assertEquals(0, todoMargeList.size());
175+
176+
177+
}
171178
}

flow-engine-framework/src/test/java/com/codingapi/flow/service/FlowParallelServiceTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,16 @@
2929

3030
class FlowParallelServiceTest {
3131

32-
private final FlowTodoRecordRepositoryImpl flowTodoMargeRecordRepository = new FlowTodoRecordRepositoryImpl();
33-
private final FlowTodoMergeRepositoryImpl flowTodoMargeRelationRepository = new FlowTodoMergeRepositoryImpl();
32+
private final FlowTodoRecordRepositoryImpl flowTodoRecordRepository = new FlowTodoRecordRepositoryImpl();
33+
private final FlowTodoMergeRepositoryImpl flowTodoMergeRepository = new FlowTodoMergeRepositoryImpl();
3434
private final FlowRecordRepositoryImpl flowRecordRepository = new FlowRecordRepositoryImpl();
3535
private final UserGateway userGateway = new UserGateway();
3636
private final WorkflowBackupRepository workflowBackupRepository = new WorkflowBackupRepositoryImpl();
3737
private final WorkflowRepository workflowRepository = new WorkflowRepositoryImpl();
3838
private final ParallelBranchRepository parallelBranchRepository = new ParallelBranchRepositoryImpl();
3939
private final DelayTaskRepository delayTaskRepository = new DelayTaskRepositoryImpl();
4040
private final UrgeIntervalRepository urgeIntervalRepository = new UrgeIntervalRepositoryImpl();
41-
private final FlowService flowService = new FlowService(workflowRepository, userGateway, flowRecordRepository,flowTodoMargeRecordRepository,flowTodoMargeRelationRepository, workflowBackupRepository, parallelBranchRepository, delayTaskRepository, urgeIntervalRepository);
41+
private final FlowService flowService = new FlowService(workflowRepository, userGateway, flowRecordRepository, flowTodoRecordRepository, flowTodoMergeRepository, workflowBackupRepository, parallelBranchRepository, delayTaskRepository, urgeIntervalRepository);
4242

4343

4444
/**

flow-engine-framework/src/test/java/com/codingapi/flow/service/FlowSampleServiceTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,16 @@
3737

3838
class FlowSampleServiceTest {
3939

40-
private final FlowTodoRecordRepositoryImpl flowTodoMargeRecordRepository = new FlowTodoRecordRepositoryImpl();
41-
private final FlowTodoMergeRepositoryImpl flowTodoMargeRelationRepository = new FlowTodoMergeRepositoryImpl();
40+
private final FlowTodoRecordRepositoryImpl flowTodoRecordRepository = new FlowTodoRecordRepositoryImpl();
41+
private final FlowTodoMergeRepositoryImpl flowTodoMergeRepository = new FlowTodoMergeRepositoryImpl();
4242
private final FlowRecordRepositoryImpl flowRecordRepository = new FlowRecordRepositoryImpl();
4343
private final UserGateway userGateway = new UserGateway();
4444
private final WorkflowBackupRepository workflowBackupRepository = new WorkflowBackupRepositoryImpl();
4545
private final WorkflowRepository workflowRepository = new WorkflowRepositoryImpl();
4646
private final ParallelBranchRepository parallelBranchRepository = new ParallelBranchRepositoryImpl();
4747
private final DelayTaskRepository delayTaskRepository = new DelayTaskRepositoryImpl();
4848
private final UrgeIntervalRepository urgeIntervalRepository = new UrgeIntervalRepositoryImpl();
49-
private final FlowService flowService = new FlowService(workflowRepository, userGateway, flowRecordRepository,flowTodoMargeRecordRepository,flowTodoMargeRelationRepository, workflowBackupRepository, parallelBranchRepository, delayTaskRepository, urgeIntervalRepository);
49+
private final FlowService flowService = new FlowService(workflowRepository, userGateway, flowRecordRepository, flowTodoRecordRepository, flowTodoMergeRepository, workflowBackupRepository, parallelBranchRepository, delayTaskRepository, urgeIntervalRepository);
5050

5151
@Test
5252
void create() {

0 commit comments

Comments
 (0)