Skip to content

Commit 86a9218

Browse files
committed
add #72
1 parent 4ee11a6 commit 86a9218

53 files changed

Lines changed: 1036 additions & 272 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

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

Lines changed: 21 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package com.codingapi.flow.context;
22

3-
import com.codingapi.flow.context.service.FlowRecordSaveService;
43
import com.codingapi.flow.domain.DelayTask;
54
import com.codingapi.flow.exception.FlowStateException;
65
import com.codingapi.flow.gateway.FlowOperatorGateway;
76
import com.codingapi.flow.operator.IFlowOperator;
87
import com.codingapi.flow.record.FlowRecord;
98
import com.codingapi.flow.repository.*;
9+
import com.codingapi.flow.service.FlowRecordService;
1010
import com.codingapi.flow.service.FlowService;
11+
import com.codingapi.flow.service.WorkflowService;
1112
import com.codingapi.flow.service.impl.FlowActionService;
1213
import com.codingapi.flow.service.impl.FlowDelayTriggerService;
1314
import com.codingapi.flow.session.FlowSession;
@@ -27,15 +28,9 @@ private RepositoryHolderContext() {
2728
}
2829

2930
@Getter
30-
private WorkflowRepository workflowRepository;
31+
private WorkflowService workflowService;
3132
@Getter
32-
private WorkflowRuntimeRepository workflowRuntimeRepository;
33-
@Getter
34-
private FlowRecordRepository flowRecordRepository;
35-
@Getter
36-
private FlowTodoRecordRepository flowTodoRecordRepository;
37-
@Getter
38-
private FlowTodoMergeRepository flowTodoMergeRepository;
33+
private FlowRecordService flowRecordService;
3934
@Getter
4035
private FlowOperatorGateway flowOperatorGateway;
4136
@Getter
@@ -51,12 +46,9 @@ private RepositoryHolderContext() {
5146
public boolean isRegistered() {
5247
return parallelBranchRepository != null
5348
&& delayTaskRepository != null
54-
&& workflowRuntimeRepository != null
55-
&& flowRecordRepository != null
56-
&& flowTodoRecordRepository != null
57-
&& flowTodoMergeRepository != null
49+
&& workflowService != null
50+
&& flowRecordService != null
5851
&& flowOperatorGateway != null
59-
&& workflowRepository != null
6052
&& urgeIntervalRepository != null;
6153
}
6254

@@ -67,20 +59,14 @@ public void verify() {
6759
}
6860
}
6961

70-
public void register(WorkflowRepository workflowRepository,
71-
WorkflowRuntimeRepository workflowRuntimeRepository,
72-
FlowRecordRepository flowRecordRepository,
73-
FlowTodoRecordRepository flowTodoRecordRepository,
74-
FlowTodoMergeRepository flowTodoMergeRepository,
62+
public void register(WorkflowService workflowService,
63+
FlowRecordService flowRecordService,
7564
FlowOperatorGateway flowOperatorGateway,
7665
ParallelBranchRepository parallelBranchRepository,
7766
DelayTaskRepository delayTaskRepository,
7867
UrgeIntervalRepository urgeIntervalRepository) {
79-
this.workflowRepository = workflowRepository;
80-
this.workflowRuntimeRepository = workflowRuntimeRepository;
81-
this.flowRecordRepository = flowRecordRepository;
82-
this.flowTodoRecordRepository = flowTodoRecordRepository;
83-
this.flowTodoMergeRepository = flowTodoMergeRepository;
68+
this.workflowService = workflowService;
69+
this.flowRecordService = flowRecordService;
8470
this.flowOperatorGateway = flowOperatorGateway;
8571
this.parallelBranchRepository = parallelBranchRepository;
8672
this.delayTaskRepository = delayTaskRepository;
@@ -98,8 +84,8 @@ public FlowDelayTriggerService createDelayTriggerService(DelayTask task) {
9884
this.verify();
9985
return new FlowDelayTriggerService(task,
10086
flowOperatorGateway,
101-
flowRecordRepository,
102-
workflowRuntimeRepository);
87+
flowRecordService,
88+
workflowService);
10389
}
10490

10591

@@ -122,19 +108,17 @@ public FlowActionService createFlowActionService(FlowSession flowSession) {
122108
*/
123109
public FlowService createFlowService() {
124110
this.verify();
125-
return new FlowService(workflowRepository,
111+
return new FlowService(
112+
workflowService,
126113
flowOperatorGateway,
127-
flowRecordRepository,
128-
flowTodoRecordRepository,
129-
flowTodoMergeRepository,
130-
workflowRuntimeRepository,
114+
flowRecordService,
131115
parallelBranchRepository,
132116
delayTaskRepository,
133117
urgeIntervalRepository);
134118
}
135119

136120
public FlowRecord getRecordById(long id) {
137-
return flowRecordRepository.get(id);
121+
return flowRecordService.getFlowRecord(id);
138122
}
139123

140124
public List<IFlowOperator> findOperatorByIds(List<Long> ids) {
@@ -157,25 +141,23 @@ public void deleteDelayTask(DelayTask delayTask) {
157141

158142

159143
public void saveRecords(List<FlowRecord> flowRecords) {
160-
FlowRecordSaveService flowRecordSaveService = new FlowRecordSaveService(flowRecords);
161-
flowRecordSaveService.saveAll();
144+
flowRecordService.saveFlowRecords(flowRecords);
162145
}
163146

164147
public void saveRecord(FlowRecord flowRecord) {
165-
FlowRecordSaveService flowRecordSaveService = new FlowRecordSaveService(flowRecord);
166-
flowRecordSaveService.saveAll();
148+
flowRecordService.saveFlowRecord(flowRecord);
167149
}
168150

169151
public List<FlowRecord> findCurrentNodeRecords(long fromId, String nodeId) {
170-
return flowRecordRepository.findCurrentNodeRecords(fromId, nodeId);
152+
return flowRecordService.findFlowRecordCurrentNodeRecords(fromId, nodeId);
171153
}
172154

173155
public List<FlowRecord> findProcessRecords(String processId) {
174-
return flowRecordRepository.findProcessRecords(processId);
156+
return flowRecordService.findFlowRecordByProcessId(processId);
175157
}
176158

177159
public List<FlowRecord> findAfterRecords(String processId, long currentId) {
178-
return flowRecordRepository.findAfterRecords(processId, currentId);
160+
return flowRecordService.findFlowRecordAfterRecords(processId, currentId);
179161
}
180162

181163
public int getParallelBranchTriggerCount(String parallelId) {

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class FlowRecord {
4747
/**
4848
* 工作id
4949
*/
50-
private long workBackupId;
50+
private long workRuntimeId;
5151
/**
5252
* 流程编码
5353
*/
@@ -245,11 +245,11 @@ public class FlowRecord {
245245

246246
/**
247247
* 数据合并的依据,当开启时值为固定值,否则为随机数据
248-
* 相同的 {@link FlowRecord#currentOperatorId} {@link FlowRecord#workBackupId} {@link FlowRecord#nodeId}字段的数据合并到一条记录上。
248+
* 相同的 {@link FlowRecord#currentOperatorId} {@link FlowRecord#workRuntimeId} {@link FlowRecord#nodeId}字段的数据合并到一条记录上。
249249
*/
250250
public String getMergeKey() {
251251
if (mergeable) {
252-
return String.format("%s-%s-%s", currentOperatorId, workBackupId, nodeId);
252+
return String.format("%s-%s-%s", currentOperatorId, workRuntimeId, nodeId);
253253
} else {
254254
return String.valueOf(id);
255255
}
@@ -263,7 +263,7 @@ public FlowRecord(FlowSession flowSession, int nodeOrder) {
263263
// 获取转交之后的审批人
264264
IFlowOperator currentOperator = flowSession.loadFinalForwardOperator(sourceOperator);
265265
this.workCode = flowSession.getWorkCode();
266-
this.workBackupId = flowSession.getBackupId();
266+
this.workRuntimeId = flowSession.getBackupId();
267267
this.nodeId = flowSession.getCurrentNodeId();
268268
this.nodeType = flowSession.getCurrentNodeType();
269269
this.nodeName = flowSession.getCurrentNodeName();
@@ -591,7 +591,7 @@ public FlowSession createFlowSession( Workflow workflow,
591591
formData,
592592
this,
593593
currentRecords,
594-
this.workBackupId,
594+
this.workRuntimeId,
595595
advice
596596
);
597597
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public FlowTodoRecord(FlowRecord flowRecord) {
114114

115115
public void update(FlowRecord flowRecord) {
116116
this.processId = flowRecord.getProcessId();
117-
this.workBackupId = flowRecord.getWorkBackupId();
117+
this.workBackupId = flowRecord.getWorkRuntimeId();
118118
this.workCode = flowRecord.getWorkCode();
119119
this.nodeId = flowRecord.getNodeId();
120120
this.nodeType = flowRecord.getNodeType();

flow-engine-framework/src/main/java/com/codingapi/flow/repository/FlowTodoMergeRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public interface FlowTodoMergeRepository {
88

99
void saveAll(List<FlowTodoMerge> list);
1010

11-
void remove(FlowTodoMerge todoMerge);
11+
void delete(FlowTodoMerge todoMerge);
1212

1313
List<FlowTodoMerge> findByTodoId(long todoId);
1414

flow-engine-framework/src/main/java/com/codingapi/flow/repository/FlowTodoRecordRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public interface FlowTodoRecordRepository {
1010

1111
FlowTodoRecord getByMergeKey(String key);
1212

13-
void remove(FlowTodoRecord margeRecord);
13+
void delete(FlowTodoRecord margeRecord);
1414

1515
void save(FlowTodoRecord margeRecord);
1616

flow-engine-framework/src/main/java/com/codingapi/flow/repository/WorkflowRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ public interface WorkflowRepository {
1111

1212
Workflow get(String id);
1313

14-
void delete(Workflow workflow);
14+
void delete(String id);
1515

1616
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.codingapi.flow.repository;
2+
3+
import com.codingapi.flow.workflow.WorkflowVersion;
4+
5+
import java.util.List;
6+
7+
/**
8+
* 工作流版本仓库
9+
*/
10+
public interface WorkflowVersionRepository {
11+
12+
WorkflowVersion get(long id);
13+
14+
void delete(String workId);
15+
16+
List<WorkflowVersion> findVersion(String workId);
17+
18+
void saveAll(List<WorkflowVersion> versionList);
19+
20+
void save(WorkflowVersion workflowVersion);
21+
22+
void delete(long id);
23+
24+
}

flow-engine-framework/src/main/java/com/codingapi/flow/context/service/FlowRecordSaveService.java renamed to flow-engine-framework/src/main/java/com/codingapi/flow/service/FlowRecordSaveService.java

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,39 @@
1-
package com.codingapi.flow.context.service;
1+
package com.codingapi.flow.service;
22

33
import com.codingapi.flow.context.RepositoryHolderContext;
44
import com.codingapi.flow.record.FlowRecord;
55
import com.codingapi.flow.record.FlowTodoMerge;
66
import com.codingapi.flow.record.FlowTodoRecord;
7-
import com.codingapi.flow.repository.FlowRecordRepository;
8-
import com.codingapi.flow.repository.FlowTodoMergeRepository;
9-
import com.codingapi.flow.repository.FlowTodoRecordRepository;
107

118
import java.util.ArrayList;
129
import java.util.List;
1310

1411
/**
1512
* 流程记录保存服务,负责保存流程记录和待办记录的合并关系
1613
*/
17-
public class FlowRecordSaveService {
14+
class FlowRecordSaveService {
1815

1916
private final List<FlowRecord> flowRecords;
20-
private final FlowTodoRecordRepository flowTodoRecordRepository;
21-
private final FlowTodoMergeRepository flowTodoMergeRepository;
22-
private final FlowRecordRepository flowRecordRepository;
17+
private final FlowRecordService flowRecordService;
2318

2419

2520
public FlowRecordSaveService(List<FlowRecord> flowRecords) {
26-
this.flowTodoRecordRepository = RepositoryHolderContext.getInstance().getFlowTodoRecordRepository();
27-
this.flowTodoMergeRepository = RepositoryHolderContext.getInstance().getFlowTodoMergeRepository();
28-
this.flowRecordRepository = RepositoryHolderContext.getInstance().getFlowRecordRepository();
21+
this.flowRecordService = RepositoryHolderContext.getInstance().getFlowRecordService();
2922
this.flowRecords = flowRecords;
3023
}
3124

3225
public FlowRecordSaveService(FlowRecord flowRecord) {
33-
this.flowTodoRecordRepository = RepositoryHolderContext.getInstance().getFlowTodoRecordRepository();
34-
this.flowTodoMergeRepository = RepositoryHolderContext.getInstance().getFlowTodoMergeRepository();
35-
this.flowRecordRepository = RepositoryHolderContext.getInstance().getFlowRecordRepository();
3626
this.flowRecords = new ArrayList<>();
3727
this.flowRecords.add(flowRecord);
28+
this.flowRecordService = RepositoryHolderContext.getInstance().getFlowRecordService();
3829
}
3930

4031

4132
private void saveTodoMargeRecords() {
4233
List<FlowTodoRecord> flowTodoRecords = new ArrayList<>();
4334
for (FlowRecord flowRecord : flowRecords) {
4435
if (flowRecord.isTodo()) {
45-
FlowTodoRecord todoMargeRecord = flowTodoRecordRepository.getByMergeKey(flowRecord.getMergeKey());
36+
FlowTodoRecord todoMargeRecord = flowRecordService.getFlowTodoByMergeKey(flowRecord.getMergeKey());
4637
if (todoMargeRecord == null) {
4738
todoMargeRecord = new FlowTodoRecord(flowRecord);
4839
} else {
@@ -55,7 +46,7 @@ private void saveTodoMargeRecords() {
5546
}
5647
}
5748
if (!flowTodoRecords.isEmpty()) {
58-
flowTodoRecordRepository.saveAll(flowTodoRecords);
49+
flowRecordService.saveFlowTodos(flowTodoRecords);
5950
}
6051

6152
if (!flowTodoRecords.isEmpty()) {
@@ -65,44 +56,43 @@ private void saveTodoMargeRecords() {
6556
relationList.add(new FlowTodoMerge(margeRecord));
6657
}
6758
}
68-
flowTodoMergeRepository.saveAll(relationList);
59+
flowRecordService.saveFlowMerges(relationList);
6960
}
7061
}
7162

7263
private void saveRecords() {
7364
if (!flowRecords.isEmpty()) {
7465
// 只保存非结束节点的记录,结束节点的记录由流程引擎自动生成,不允许外部修改
7566
List<FlowRecord> flowRecordList = flowRecords.stream().filter(FlowRecord::isNotEndNode).toList();
76-
flowRecordRepository.saveAll(flowRecordList);
67+
flowRecordService.saveAll(flowRecordList);
7768
}
7869
}
7970

80-
8171
private void removeTodoMergeRecords() {
8272
for (FlowRecord flowRecord : flowRecords) {
8373
if (flowRecord.isDone()) {
8474
if (flowRecord.isMergeable()) {
85-
FlowTodoRecord todoMargeRecord = flowTodoRecordRepository.getByMergeKey(flowRecord.getMergeKey());
75+
FlowTodoRecord todoMargeRecord = flowRecordService.getFlowTodoByMergeKey(flowRecord.getMergeKey());
8676
if (todoMargeRecord != null) {
87-
List<FlowTodoMerge> margeRelations = flowTodoMergeRepository.findByTodoId(todoMargeRecord.getId());
77+
List<FlowTodoMerge> margeRelations = flowRecordService.findFlowTodoMergeByTodoId(todoMargeRecord.getId());
8878
if (margeRelations != null && !margeRelations.isEmpty()) {
8979
for (FlowTodoMerge margeRelation : margeRelations) {
9080
if (margeRelation.isRecord(flowRecord.getId())) {
91-
flowTodoMergeRepository.remove(margeRelation);
81+
flowRecordService.deleteFlowMerge(margeRelation);
9282
todoMargeRecord.divMergeCount();
9383
if (todoMargeRecord.hasMergeCount()) {
94-
flowTodoRecordRepository.save(todoMargeRecord);
84+
flowRecordService.saveFlowTodo(todoMargeRecord);
9585
} else {
96-
flowTodoRecordRepository.remove(todoMargeRecord);
86+
flowRecordService.deleteFlowTodo(todoMargeRecord);
9787
}
9888
}
9989
}
10090
}
10191
}
10292
} else {
103-
FlowTodoRecord todoMargeRecord = flowTodoRecordRepository.getByMergeKey(flowRecord.getMergeKey());
104-
if (todoMargeRecord != null) {
105-
flowTodoRecordRepository.remove(todoMargeRecord);
93+
FlowTodoRecord flowTodoRecord = flowRecordService.getFlowTodoByMergeKey(flowRecord.getMergeKey());
94+
if (flowTodoRecord != null) {
95+
flowRecordService.deleteFlowTodo(flowTodoRecord);
10696
}
10797
}
10898
}

0 commit comments

Comments
 (0)