Skip to content
Merged

Dev #32

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -222,17 +222,14 @@ private void saveTodoMargeRecords() {
List<FlowTodoRecord> flowTodoRecords = new ArrayList<>();
for (FlowRecord flowRecord : flowRecords) {
if (flowRecord.isTodo()) {
FlowTodoRecord todoMargeRecord = null;
if (flowRecord.isMergeable()) {
todoMargeRecord = flowTodoRecordRepository.getByMergeKey(flowRecord.getMergeKey());
if (todoMargeRecord == null) {
todoMargeRecord = new FlowTodoRecord(flowRecord);
} else {
todoMargeRecord.update(flowRecord);
todoMargeRecord.addMargeCount();
}
} else {
FlowTodoRecord todoMargeRecord = flowTodoRecordRepository.getByMergeKey(flowRecord.getMergeKey());
if (todoMargeRecord == null) {
todoMargeRecord = new FlowTodoRecord(flowRecord);
} else {
todoMargeRecord.update(flowRecord);
if (flowRecord.isMergeable()) {
todoMargeRecord.addMergeCount();
}
}
flowTodoRecords.add(todoMargeRecord);
}
Expand All @@ -259,7 +256,7 @@ private void saveRecords() {
}


private void removeTodoMargeRecords() {
private void removeTodoMergeRecords() {
for (FlowRecord flowRecord : flowRecords) {
if (flowRecord.isDone()) {
if (flowRecord.isMergeable()) {
Expand All @@ -270,8 +267,8 @@ private void removeTodoMargeRecords() {
for (FlowTodoMerge margeRelation : margeRelations) {
if (margeRelation.isRecord(flowRecord.getId())) {
flowTodoMergeRepository.remove(margeRelation);
todoMargeRecord.divMargeCount();
if (todoMargeRecord.hasMargeCount()) {
todoMargeRecord.divMergeCount();
if (todoMargeRecord.hasMergeCount()) {
flowTodoRecordRepository.save(todoMargeRecord);
} else {
flowTodoRecordRepository.remove(todoMargeRecord);
Expand All @@ -293,7 +290,7 @@ private void removeTodoMargeRecords() {
public void saveAll() {
this.saveRecords();
this.saveTodoMargeRecords();
this.removeTodoMargeRecords();
this.removeTodoMergeRecords();
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
import lombok.Setter;

/**
* 待办记录数据,所有的待办列表
* 待办记录数据,所有的待办列表(自动合并记录)
*/
@Getter
@AllArgsConstructor
public class FlowTodoRecord {

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

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

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


public FlowTodoRecord(FlowRecord flowRecord) {
this.update(flowRecord);
this.update(flowRecord);
this.margeCount = flowRecord.isMergeable() ? 1 : 0;
}


public void update(FlowRecord flowRecord){
public void update(FlowRecord flowRecord) {
this.processId = flowRecord.getProcessId();
this.workBackupId = flowRecord.getWorkBackupId();
this.workCode = flowRecord.getWorkCode();
Expand All @@ -124,19 +126,28 @@ public void update(FlowRecord flowRecord){
this.timeoutTime = flowRecord.getTimeoutTime();
}

public void addMargeCount(){
if(this.mergeable) {
/**
* 添加合并记录数量
*/
public void addMergeCount() {
if (this.mergeable) {
this.margeCount++;
}
}

public void divMargeCount(){
if(this.mergeable) {
/**
* 减去合并记录数量
*/
public void divMergeCount() {
if (this.mergeable) {
this.margeCount--;
}
}

public boolean hasMargeCount(){
/**
* 是否有合并记录数量
*/
public boolean hasMergeCount() {
return this.mergeable && this.margeCount > 0;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,9 @@ public List<FlowTodoMerge> findByTodoId(long todoId) {
filter(relation -> relation.getTodoId() == todoId)
.toList();
}


public List<FlowTodoMerge> findAll() {
return cache.values().stream().toList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,8 @@ public List<FlowTodoRecord> findByOperatorId(long operatorId) {
return cache.values().stream().filter(record -> record.getCurrentOperatorId() == operatorId).toList();
}

public List<FlowTodoRecord> findAll() {
return cache.values().stream().toList();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -37,16 +37,16 @@

public class FlowMergeableServiceTest {

private final FlowTodoRecordRepositoryImpl flowTodoMargeRecordRepository = new FlowTodoRecordRepositoryImpl();
private final FlowTodoMergeRepositoryImpl flowTodoMargeRelationRepository = new FlowTodoMergeRepositoryImpl();
private final FlowTodoRecordRepositoryImpl flowTodoRecordRepository = new FlowTodoRecordRepositoryImpl();
private final FlowTodoMergeRepositoryImpl flowTodoMergeRepository = new FlowTodoMergeRepositoryImpl();
private final FlowRecordRepositoryImpl flowRecordRepository = new FlowRecordRepositoryImpl();
private final UserGateway userGateway = new UserGateway();
private final WorkflowBackupRepository workflowBackupRepository = new WorkflowBackupRepositoryImpl();
private final WorkflowRepository workflowRepository = new WorkflowRepositoryImpl();
private final ParallelBranchRepository parallelBranchRepository = new ParallelBranchRepositoryImpl();
private final DelayTaskRepository delayTaskRepository = new DelayTaskRepositoryImpl();
private final UrgeIntervalRepository urgeIntervalRepository = new UrgeIntervalRepositoryImpl();
private final FlowService flowService = new FlowService(workflowRepository, userGateway, flowRecordRepository,flowTodoMargeRecordRepository,flowTodoMargeRelationRepository, workflowBackupRepository, parallelBranchRepository, delayTaskRepository, urgeIntervalRepository);
private final FlowService flowService = new FlowService(workflowRepository, userGateway, flowRecordRepository, flowTodoRecordRepository, flowTodoMergeRepository, workflowBackupRepository, parallelBranchRepository, delayTaskRepository, urgeIntervalRepository);


/**
Expand Down Expand Up @@ -143,12 +143,12 @@ void mergeableRecords() {
Set<String> set = new HashSet<>(mergeIdList);
assertEquals(1,set.size());

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

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


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

}
List<FlowTodoRecord> todoRecordList = flowTodoRecordRepository.findAll();
assertEquals(0, todoRecordList.size());

List<FlowTodoMerge> todoMargeList = flowTodoMergeRepository.findAll();
assertEquals(0, todoMargeList.size());


}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,16 @@

class FlowParallelServiceTest {

private final FlowTodoRecordRepositoryImpl flowTodoMargeRecordRepository = new FlowTodoRecordRepositoryImpl();
private final FlowTodoMergeRepositoryImpl flowTodoMargeRelationRepository = new FlowTodoMergeRepositoryImpl();
private final FlowTodoRecordRepositoryImpl flowTodoRecordRepository = new FlowTodoRecordRepositoryImpl();
private final FlowTodoMergeRepositoryImpl flowTodoMergeRepository = new FlowTodoMergeRepositoryImpl();
private final FlowRecordRepositoryImpl flowRecordRepository = new FlowRecordRepositoryImpl();
private final UserGateway userGateway = new UserGateway();
private final WorkflowBackupRepository workflowBackupRepository = new WorkflowBackupRepositoryImpl();
private final WorkflowRepository workflowRepository = new WorkflowRepositoryImpl();
private final ParallelBranchRepository parallelBranchRepository = new ParallelBranchRepositoryImpl();
private final DelayTaskRepository delayTaskRepository = new DelayTaskRepositoryImpl();
private final UrgeIntervalRepository urgeIntervalRepository = new UrgeIntervalRepositoryImpl();
private final FlowService flowService = new FlowService(workflowRepository, userGateway, flowRecordRepository,flowTodoMargeRecordRepository,flowTodoMargeRelationRepository, workflowBackupRepository, parallelBranchRepository, delayTaskRepository, urgeIntervalRepository);
private final FlowService flowService = new FlowService(workflowRepository, userGateway, flowRecordRepository, flowTodoRecordRepository, flowTodoMergeRepository, workflowBackupRepository, parallelBranchRepository, delayTaskRepository, urgeIntervalRepository);


/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,16 +37,16 @@

class FlowSampleServiceTest {

private final FlowTodoRecordRepositoryImpl flowTodoMargeRecordRepository = new FlowTodoRecordRepositoryImpl();
private final FlowTodoMergeRepositoryImpl flowTodoMargeRelationRepository = new FlowTodoMergeRepositoryImpl();
private final FlowTodoRecordRepositoryImpl flowTodoRecordRepository = new FlowTodoRecordRepositoryImpl();
private final FlowTodoMergeRepositoryImpl flowTodoMergeRepository = new FlowTodoMergeRepositoryImpl();
private final FlowRecordRepositoryImpl flowRecordRepository = new FlowRecordRepositoryImpl();
private final UserGateway userGateway = new UserGateway();
private final WorkflowBackupRepository workflowBackupRepository = new WorkflowBackupRepositoryImpl();
private final WorkflowRepository workflowRepository = new WorkflowRepositoryImpl();
private final ParallelBranchRepository parallelBranchRepository = new ParallelBranchRepositoryImpl();
private final DelayTaskRepository delayTaskRepository = new DelayTaskRepositoryImpl();
private final UrgeIntervalRepository urgeIntervalRepository = new UrgeIntervalRepositoryImpl();
private final FlowService flowService = new FlowService(workflowRepository, userGateway, flowRecordRepository,flowTodoMargeRecordRepository,flowTodoMargeRelationRepository, workflowBackupRepository, parallelBranchRepository, delayTaskRepository, urgeIntervalRepository);
private final FlowService flowService = new FlowService(workflowRepository, userGateway, flowRecordRepository, flowTodoRecordRepository, flowTodoMergeRepository, workflowBackupRepository, parallelBranchRepository, delayTaskRepository, urgeIntervalRepository);

@Test
void create() {
Expand Down