Skip to content

Commit 25d0f32

Browse files
committed
add #82
1 parent 8542346 commit 25d0f32

36 files changed

Lines changed: 815 additions & 606 deletions

flow-engine-framework/src/main/java/com/codingapi/flow/action/actions/AddAuditAction.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.codingapi.flow.action.ActionType;
55
import com.codingapi.flow.action.BaseAction;
66
import com.codingapi.flow.action.IFlowAction;
7-
import com.codingapi.flow.context.RepositoryHolderContext;
87
import com.codingapi.flow.event.FlowRecordTodoEvent;
98
import com.codingapi.flow.event.IFlowEvent;
109
import com.codingapi.flow.exception.FlowExecutionException;
@@ -15,6 +14,7 @@
1514
import com.codingapi.flow.record.FlowRecord;
1615
import com.codingapi.flow.script.node.OperatorLoadScript;
1716
import com.codingapi.flow.session.FlowSession;
17+
import com.codingapi.flow.session.IRepositoryHolder;
1818
import com.codingapi.flow.utils.RandomUtils;
1919
import com.codingapi.springboot.framework.event.EventPusher;
2020
import org.springframework.util.StringUtils;
@@ -66,6 +66,7 @@ public void copy(IFlowAction action) {
6666

6767
@Override
6868
public void run(FlowSession flowSession) {
69+
IRepositoryHolder repositoryHolder = flowSession.getRepositoryHolder();
6970
List<IFlowEvent> flowEvents = new ArrayList<>();
7071
List<FlowRecord> flowRecords = new ArrayList<>();
7172
FlowRecord currentRecord = flowSession.getCurrentRecord();
@@ -110,7 +111,7 @@ public void run(FlowSession flowSession) {
110111
}
111112
}
112113

113-
RepositoryHolderContext.getInstance().saveRecords(flowRecords);
114+
repositoryHolder.saveRecords(flowRecords);
114115
flowEvents.forEach(EventPusher::push);
115116
}
116117

flow-engine-framework/src/main/java/com/codingapi/flow/action/actions/CustomAction.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
import com.codingapi.flow.action.ActionType;
55
import com.codingapi.flow.action.BaseAction;
66
import com.codingapi.flow.action.IFlowAction;
7-
import com.codingapi.flow.context.RepositoryHolderContext;
87
import com.codingapi.flow.exception.FlowExecutionException;
98
import com.codingapi.flow.manager.ActionManager;
109
import com.codingapi.flow.node.IFlowNode;
1110
import com.codingapi.flow.script.action.CustomScript;
1211
import com.codingapi.flow.session.FlowSession;
12+
import com.codingapi.flow.session.IRepositoryHolder;
1313
import com.codingapi.flow.utils.RandomUtils;
1414
import org.springframework.util.StringUtils;
1515

@@ -41,6 +41,7 @@ public CustomAction() {
4141

4242
@Override
4343
public void run(FlowSession flowSession) {
44+
IRepositoryHolder repositoryHolder = flowSession.getRepositoryHolder();
4445
String actionType = script.execute(flowSession);
4546
IFlowNode currentNode = flowSession.getCurrentNode();
4647
ActionManager actionManager = currentNode.actionManager();
@@ -52,7 +53,7 @@ public void run(FlowSession flowSession) {
5253
}
5354

5455
FlowSession triggerSession = flowSession.updateSession(nextAction);
55-
RepositoryHolderContext.getInstance().createFlowActionService(triggerSession).action();
56+
repositoryHolder.createFlowActionService(triggerSession).action();
5657
}
5758

5859
@Override

flow-engine-framework/src/main/java/com/codingapi/flow/action/actions/DelegateAction.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.codingapi.flow.action.ActionType;
55
import com.codingapi.flow.action.BaseAction;
66
import com.codingapi.flow.action.IFlowAction;
7-
import com.codingapi.flow.context.RepositoryHolderContext;
87
import com.codingapi.flow.event.FlowRecordDoneEvent;
98
import com.codingapi.flow.event.FlowRecordTodoEvent;
109
import com.codingapi.flow.event.IFlowEvent;
@@ -14,6 +13,7 @@
1413
import com.codingapi.flow.record.FlowRecord;
1514
import com.codingapi.flow.script.node.OperatorLoadScript;
1615
import com.codingapi.flow.session.FlowSession;
16+
import com.codingapi.flow.session.IRepositoryHolder;
1717
import com.codingapi.flow.utils.RandomUtils;
1818
import com.codingapi.springboot.framework.event.EventPusher;
1919
import org.springframework.util.StringUtils;
@@ -51,6 +51,7 @@ public DelegateAction() {
5151

5252
@Override
5353
public void run(FlowSession flowSession) {
54+
IRepositoryHolder repositoryHolder = flowSession.getRepositoryHolder();
5455
List<IFlowEvent> flowEvents = new ArrayList<>();
5556
List<FlowRecord> recordList = new ArrayList<>();
5657

@@ -78,7 +79,7 @@ public void run(FlowSession flowSession) {
7879
flowEvents.add(new FlowRecordTodoEvent(flowRecord));
7980
}
8081

81-
RepositoryHolderContext.getInstance().saveRecords(recordList);
82+
repositoryHolder.saveRecords(recordList);
8283
flowEvents.forEach(EventPusher::push);
8384

8485
}

flow-engine-framework/src/main/java/com/codingapi/flow/action/actions/PassAction.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.codingapi.flow.action.ActionDisplay;
44
import com.codingapi.flow.action.ActionType;
55
import com.codingapi.flow.action.BaseAction;
6-
import com.codingapi.flow.context.RepositoryHolderContext;
76
import com.codingapi.flow.event.FlowRecordDoneEvent;
87
import com.codingapi.flow.event.FlowRecordTodoEvent;
98
import com.codingapi.flow.event.IFlowEvent;
@@ -13,6 +12,7 @@
1312
import com.codingapi.flow.operator.IFlowOperator;
1413
import com.codingapi.flow.record.FlowRecord;
1514
import com.codingapi.flow.session.FlowSession;
15+
import com.codingapi.flow.session.IRepositoryHolder;
1616
import com.codingapi.flow.utils.RandomUtils;
1717
import com.codingapi.springboot.framework.event.EventPusher;
1818

@@ -66,6 +66,7 @@ public List<FlowRecord> generateRecords(FlowSession flowSession) {
6666

6767
@Override
6868
public void run(FlowSession flowSession) {
69+
IRepositoryHolder repositoryHolder = flowSession.getRepositoryHolder();
6970
List<IFlowEvent> flowEvents = new ArrayList<>();
7071
List<FlowRecord> recordList = new ArrayList<>();
7172
FlowRecord currentRecord = flowSession.getCurrentRecord();
@@ -92,18 +93,18 @@ public void run(FlowSession flowSession) {
9293
if (isFinish) {
9394
// 是否转交审批人的流程
9495
if (currentRecord.isForward()) {
95-
IFlowOperator forwardOperator = RepositoryHolderContext.getInstance().getOperatorById(currentRecord.getForwardOperatorId());
96+
IFlowOperator forwardOperator = repositoryHolder.getOperatorById(currentRecord.getForwardOperatorId());
9697
FlowRecord notifyRecord = currentRecord.create(flowSession.updateSession(forwardOperator));
9798
notifyRecord.notifyRecord(flowSession.updateSession(forwardOperator));
9899
// 如果不存储这个记录,若下一流程是结束流程时,无法更新流程状态为结束状态。
99-
RepositoryHolderContext.getInstance().saveRecord(notifyRecord);
100+
repositoryHolder.saveRecord(notifyRecord);
100101
flowEvents.add(new FlowRecordDoneEvent(notifyRecord));
101102
}
102103

103104
// 是否委托记录
104105
if (currentRecord.isDelegate()) {
105-
FlowRecord delegateRecord = RepositoryHolderContext.getInstance().getRecordById(currentRecord.getDelegateId());
106-
IFlowOperator delegateOperator = RepositoryHolderContext.getInstance().getOperatorById(delegateRecord.getCurrentOperatorId());
106+
FlowRecord delegateRecord = repositoryHolder.getRecordById(currentRecord.getDelegateId());
107+
IFlowOperator delegateOperator = repositoryHolder.getOperatorById(delegateRecord.getCurrentOperatorId());
107108
FlowRecord rebackRecord = delegateRecord.create(flowSession.updateSession(delegateOperator));
108109
rebackRecord.clearDelegate();
109110

@@ -127,7 +128,7 @@ public void run(FlowSession flowSession) {
127128
});
128129
}
129130
}
130-
RepositoryHolderContext.getInstance().saveRecords(recordList);
131+
repositoryHolder.saveRecords(recordList);
131132

132133
flowEvents.forEach(EventPusher::push);
133134
}

flow-engine-framework/src/main/java/com/codingapi/flow/action/actions/RejectAction.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
import com.codingapi.flow.action.ActionType;
55
import com.codingapi.flow.action.BaseAction;
66
import com.codingapi.flow.action.IFlowAction;
7-
import com.codingapi.flow.context.RepositoryHolderContext;
87
import com.codingapi.flow.event.FlowRecordTodoEvent;
98
import com.codingapi.flow.event.IFlowEvent;
109
import com.codingapi.flow.exception.FlowStateException;
1110
import com.codingapi.flow.node.IFlowNode;
1211
import com.codingapi.flow.record.FlowRecord;
1312
import com.codingapi.flow.script.action.RejectActionScript;
1413
import com.codingapi.flow.session.FlowSession;
14+
import com.codingapi.flow.session.IRepositoryHolder;
1515
import com.codingapi.flow.utils.RandomUtils;
1616
import com.codingapi.springboot.framework.event.EventPusher;
1717
import lombok.Getter;
@@ -84,6 +84,7 @@ public List<FlowRecord> generateRecords(FlowSession flowSession) {
8484

8585
@Override
8686
public void run(FlowSession flowSession) {
87+
IRepositoryHolder repositoryHolder = flowSession.getRepositoryHolder();
8788
List<IFlowEvent> flowEvents = new ArrayList<>();
8889
List<FlowRecord> recordList = new ArrayList<>();
8990

@@ -100,7 +101,7 @@ public void run(FlowSession flowSession) {
100101
}
101102
}
102103
}
103-
RepositoryHolderContext.getInstance().saveRecords(recordList);
104+
repositoryHolder.saveRecords(recordList);
104105
flowEvents.forEach(EventPusher::push);
105106

106107
}

flow-engine-framework/src/main/java/com/codingapi/flow/action/actions/ReturnAction.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
import com.codingapi.flow.action.ActionDisplay;
44
import com.codingapi.flow.action.ActionType;
55
import com.codingapi.flow.action.BaseAction;
6-
import com.codingapi.flow.context.RepositoryHolderContext;
76
import com.codingapi.flow.event.FlowRecordDoneEvent;
87
import com.codingapi.flow.event.FlowRecordTodoEvent;
98
import com.codingapi.flow.event.IFlowEvent;
109
import com.codingapi.flow.node.IFlowNode;
1110
import com.codingapi.flow.record.FlowRecord;
1211
import com.codingapi.flow.session.FlowSession;
12+
import com.codingapi.flow.session.IRepositoryHolder;
1313
import com.codingapi.flow.utils.RandomUtils;
1414
import com.codingapi.springboot.framework.event.EventPusher;
1515

@@ -37,6 +37,7 @@ public static ReturnAction fromMap(Map<String, Object> data) {
3737

3838
@Override
3939
public void run(FlowSession flowSession) {
40+
IRepositoryHolder repositoryHolder = flowSession.getRepositoryHolder();
4041
List<IFlowEvent> flowEvents = new ArrayList<>();
4142
List<FlowRecord> recordList = new ArrayList<>();
4243

@@ -57,7 +58,7 @@ public void run(FlowSession flowSession) {
5758
}
5859
}
5960

60-
RepositoryHolderContext.getInstance().saveRecords(recordList);
61+
repositoryHolder.saveRecords(recordList);
6162

6263
flowEvents.forEach(EventPusher::push);
6364

flow-engine-framework/src/main/java/com/codingapi/flow/action/actions/SaveAction.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import com.codingapi.flow.action.ActionDisplay;
44
import com.codingapi.flow.action.ActionType;
55
import com.codingapi.flow.action.BaseAction;
6-
import com.codingapi.flow.context.RepositoryHolderContext;
76
import com.codingapi.flow.record.FlowRecord;
87
import com.codingapi.flow.session.FlowSession;
8+
import com.codingapi.flow.session.IRepositoryHolder;
99
import com.codingapi.flow.utils.RandomUtils;
1010

1111
import java.util.Map;
@@ -30,8 +30,9 @@ public static SaveAction fromMap(Map<String, Object> data) {
3030

3131
@Override
3232
public void run(FlowSession flowSession) {
33+
IRepositoryHolder repositoryHolder = flowSession.getRepositoryHolder();
3334
FlowRecord flowRecord = flowSession.getCurrentRecord();
3435
flowRecord.update(flowSession, false);
35-
RepositoryHolderContext.getInstance().saveRecord(flowRecord);
36+
repositoryHolder.saveRecord(flowRecord);
3637
}
3738
}

flow-engine-framework/src/main/java/com/codingapi/flow/action/actions/TransferAction.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.codingapi.flow.action.ActionType;
55
import com.codingapi.flow.action.BaseAction;
66
import com.codingapi.flow.action.IFlowAction;
7-
import com.codingapi.flow.context.RepositoryHolderContext;
87
import com.codingapi.flow.event.FlowRecordDoneEvent;
98
import com.codingapi.flow.event.FlowRecordTodoEvent;
109
import com.codingapi.flow.event.IFlowEvent;
@@ -14,6 +13,7 @@
1413
import com.codingapi.flow.record.FlowRecord;
1514
import com.codingapi.flow.script.node.OperatorLoadScript;
1615
import com.codingapi.flow.session.FlowSession;
16+
import com.codingapi.flow.session.IRepositoryHolder;
1717
import com.codingapi.flow.utils.RandomUtils;
1818
import com.codingapi.springboot.framework.event.EventPusher;
1919
import org.springframework.util.StringUtils;
@@ -58,6 +58,7 @@ public List<IFlowOperator> operators(FlowSession flowSession) {
5858

5959
@Override
6060
public void run(FlowSession flowSession) {
61+
IRepositoryHolder repositoryHolder = flowSession.getRepositoryHolder();
6162
List<IFlowEvent> flowEvents = new ArrayList<>();
6263
List<FlowRecord> recordList = new ArrayList<>();
6364

@@ -83,7 +84,7 @@ public void run(FlowSession flowSession) {
8384
flowEvents.add(new FlowRecordTodoEvent(flowRecord));
8485
}
8586

86-
RepositoryHolderContext.getInstance().saveRecords(recordList);
87+
repositoryHolder.saveRecords(recordList);
8788
flowEvents.forEach(EventPusher::push);
8889
}
8990

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

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

33
import com.codingapi.flow.domain.DelayTask;
4+
import com.codingapi.flow.domain.UrgeInterval;
45
import com.codingapi.flow.exception.FlowStateException;
56
import com.codingapi.flow.gateway.FlowOperatorGateway;
67
import com.codingapi.flow.operator.IFlowOperator;
@@ -12,14 +13,15 @@
1213
import com.codingapi.flow.service.impl.FlowActionService;
1314
import com.codingapi.flow.service.impl.FlowDelayTriggerService;
1415
import com.codingapi.flow.session.FlowSession;
16+
import com.codingapi.flow.session.IRepositoryHolder;
1517
import lombok.Getter;
1618

1719
import java.util.List;
1820

1921
/**
2022
* 流程引擎仓库持有者上下文,负责持有流程引擎相关的仓库实例,并提供相关服务的构建方法
2123
*/
22-
public class RepositoryHolderContext {
24+
public class RepositoryHolderContext implements IRepositoryHolder {
2325

2426
@Getter
2527
private final static RepositoryHolderContext instance = new RepositoryHolderContext();
@@ -82,10 +84,7 @@ public void register(WorkflowService workflowService,
8284
*/
8385
public FlowDelayTriggerService createDelayTriggerService(DelayTask task) {
8486
this.verify();
85-
return new FlowDelayTriggerService(task,
86-
flowOperatorGateway,
87-
flowRecordService,
88-
workflowService);
87+
return new FlowDelayTriggerService(task,this);
8988
}
9089

9190

@@ -97,7 +96,7 @@ public FlowDelayTriggerService createDelayTriggerService(DelayTask task) {
9796
*/
9897
public FlowActionService createFlowActionService(FlowSession flowSession) {
9998
this.verify();
100-
return new FlowActionService(flowSession.toActionRequest());
99+
return new FlowActionService(flowSession.toActionRequest(),this);
101100
}
102101

103102

@@ -108,13 +107,7 @@ public FlowActionService createFlowActionService(FlowSession flowSession) {
108107
*/
109108
public FlowService createFlowService() {
110109
this.verify();
111-
return new FlowService(
112-
workflowService,
113-
flowOperatorGateway,
114-
flowRecordService,
115-
parallelBranchRepository,
116-
delayTaskRepository,
117-
urgeIntervalRepository);
110+
return new FlowService(this);
118111
}
119112

120113
public FlowRecord getRecordById(long id) {
@@ -176,5 +169,13 @@ public List<DelayTask> findDelayTasks() {
176169
return delayTaskRepository.findAll();
177170
}
178171

172+
@Override
173+
public void saveUrgeInterval(UrgeInterval interval) {
174+
urgeIntervalRepository.save(interval);
175+
}
179176

177+
@Override
178+
public UrgeInterval getLatestUrgeInterval(String processId, long recordId) {
179+
return urgeIntervalRepository.getLatest(processId, recordId);
180+
}
180181
}

0 commit comments

Comments
 (0)