From 67742f72bf704c733cc4924ac60453e4a42345d2 Mon Sep 17 00:00:00 2001 From: lorne <1991wangliang@gmail.com> Date: Wed, 11 Mar 2026 17:45:52 +0800 Subject: [PATCH 1/4] Update flow-frontend to latest main --- .../example/handler/MyFlowRecordUrgeEventHandler.java | 4 ++++ flow-frontend | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 flow-engine-example/src/main/java/com/codingapi/example/handler/MyFlowRecordUrgeEventHandler.java diff --git a/flow-engine-example/src/main/java/com/codingapi/example/handler/MyFlowRecordUrgeEventHandler.java b/flow-engine-example/src/main/java/com/codingapi/example/handler/MyFlowRecordUrgeEventHandler.java new file mode 100644 index 00000000..936bddd4 --- /dev/null +++ b/flow-engine-example/src/main/java/com/codingapi/example/handler/MyFlowRecordUrgeEventHandler.java @@ -0,0 +1,4 @@ +package com.codingapi.example.handler; + +public class MyFlowRecordUrgeEventHandler { +} diff --git a/flow-frontend b/flow-frontend index 2eb98346..6447f525 160000 --- a/flow-frontend +++ b/flow-frontend @@ -1 +1 @@ -Subproject commit 2eb98346cb392b948a3e54135a3d58509d9ba76f +Subproject commit 6447f52595c6a5a272c8c9675a34e5eb138b4e61 From 4c43e6ac97c70e86cb4ecbaa41aa24e979d17ab1 Mon Sep 17 00:00:00 2001 From: lorne <1991wangliang@gmail.com> Date: Wed, 11 Mar 2026 17:46:06 +0800 Subject: [PATCH 2/4] fix #80 --- .../handler/MyFlowRecordUrgeEventHandler.java | 14 ++++- .../flow/manager/NodeStrategyManager.java | 15 ++++- .../codingapi/flow/node/BaseAuditNode.java | 2 +- .../flow/pojo/response/FlowContent.java | 60 +++++++++++++++---- .../com/codingapi/flow/record/FlowRecord.java | 2 +- .../flow/service/impl/FlowDetailService.java | 4 +- .../api/controller/FlowRecordController.java | 20 +++++-- 7 files changed, 97 insertions(+), 20 deletions(-) diff --git a/flow-engine-example/src/main/java/com/codingapi/example/handler/MyFlowRecordUrgeEventHandler.java b/flow-engine-example/src/main/java/com/codingapi/example/handler/MyFlowRecordUrgeEventHandler.java index 936bddd4..6d6b454c 100644 --- a/flow-engine-example/src/main/java/com/codingapi/example/handler/MyFlowRecordUrgeEventHandler.java +++ b/flow-engine-example/src/main/java/com/codingapi/example/handler/MyFlowRecordUrgeEventHandler.java @@ -1,4 +1,16 @@ package com.codingapi.example.handler; -public class MyFlowRecordUrgeEventHandler { +import com.codingapi.flow.event.FlowRecordUrgeEvent; +import com.codingapi.springboot.framework.event.IHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class MyFlowRecordUrgeEventHandler implements IHandler { + + @Override + public void handler(FlowRecordUrgeEvent event) { + log.info("催办 event:{}",event); + } } diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/manager/NodeStrategyManager.java b/flow-engine-framework/src/main/java/com/codingapi/flow/manager/NodeStrategyManager.java index 09bd775f..57a80927 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/manager/NodeStrategyManager.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/manager/NodeStrategyManager.java @@ -38,7 +38,7 @@ public long getTimeoutTime() { /** * 是否可合并 */ - public boolean isMergeable() { + public boolean isEnableMergeable() { List strategies = this.strategies; for (INodeStrategy strategy : strategies) { if (strategy instanceof RecordMergeStrategy) { @@ -48,6 +48,19 @@ public boolean isMergeable() { return false; } + /** + * 是否支持撤回 + */ + public boolean isEnableRevoke(){ + List strategies = this.strategies; + for (INodeStrategy strategy : strategies) { + if (strategy instanceof RevokeStrategy) { + return ((RevokeStrategy) strategy).isEnable(); + } + } + return false; + } + /** * 是否按顺序执行的审批策略 */ diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/node/BaseAuditNode.java b/flow-engine-framework/src/main/java/com/codingapi/flow/node/BaseAuditNode.java index 5b9a4123..6631f10f 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/node/BaseAuditNode.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/node/BaseAuditNode.java @@ -64,7 +64,7 @@ public void fillNewRecord(FlowSession session, FlowRecord flowRecord) { NodeStrategyManager nodeStrategyManager = this.strategyManager(); flowRecord.setTitle(nodeStrategyManager.generateTitle(session)); flowRecord.setTimeoutTime(nodeStrategyManager.getTimeoutTime()); - flowRecord.setMergeable(nodeStrategyManager.isMergeable()); + flowRecord.setMergeable(nodeStrategyManager.isEnableMergeable()); flowRecord.newRecord(); } diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/pojo/response/FlowContent.java b/flow-engine-framework/src/main/java/com/codingapi/flow/pojo/response/FlowContent.java index 65e92bfd..d177adab 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/pojo/response/FlowContent.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/pojo/response/FlowContent.java @@ -93,7 +93,7 @@ public class FlowContent { /** * 流程按钮 */ - private List> actions; + private List> actions; /** * 是否可合并 @@ -130,6 +130,44 @@ public class FlowContent { */ private List nodes; + /** + * 支持撤销 + */ + private boolean revoke; + + /** + * 支持催办 + */ + private boolean urge; + + + /** + * 设置操作动作按钮 + * + */ + public void setOperationAction(Workflow workflow, FlowRecord flowRecord) { + if (flowRecord == null) { + this.revoke = false; + this.urge = false; + } else { + if (flowRecord.isFinish()) { + this.revoke = false; + this.urge = false; + } + + if (flowRecord.isTodo()) { + this.revoke = false; + this.urge = false; + } + + if (flowRecord.isDone() && !flowRecord.isFinish()) { + IFlowNode node = workflow.getFlowNode(flowRecord.getNodeId()); + this.revoke = node.strategyManager().isEnableRevoke(); + this.urge = workflow.strategyManager().isEnableUrge(); + } + } + } + public void pushCurrentNode(IFlowNode currentNode) { ActionManager actionManager = currentNode.actionManager(); @@ -141,7 +179,7 @@ public void pushCurrentNode(IFlowNode currentNode) { this.nodeName = currentNode.getName(); this.nodeType = currentNode.getType(); this.fieldPermissions = strategyManager.getFieldPermissions(); - Map nodeData = currentNode.toMap(); + Map nodeData = currentNode.toMap(); this.view = (String) nodeData.get("view"); } @@ -162,7 +200,7 @@ public void pushRecords(FlowRecord record, List mergeRecords) { this.title = record.getTitle(); this.todos = new ArrayList<>(); - for (FlowRecord item : mergeRecords){ + for (FlowRecord item : mergeRecords) { Body body = new Body(); body.setRecordId(item.getId()); body.setTitle(item.getTitle()); @@ -173,9 +211,9 @@ public void pushRecords(FlowRecord record, List mergeRecords) { } } - public void pushHistory(Workflow workflow,List historyRecords) { + public void pushHistory(Workflow workflow, List historyRecords) { this.histories = new ArrayList<>(); - for (FlowRecord item : historyRecords){ + for (FlowRecord item : historyRecords) { IFlowNode node = workflow.getFlowNode(item.getNodeId()); History history = new History(); history.setRecordId(item.getId()); @@ -193,18 +231,18 @@ public void pushHistory(Workflow workflow,List historyRecords) { public void pushCurrentOperator(IFlowOperator currentOperator) { this.currentOperator = new FlowOperator(currentOperator); - this.createOperator = new FlowOperator(currentOperator); + this.createOperator = new FlowOperator(currentOperator); } @Data - public static class History{ + public static class History { /** * 流程编号 */ private long recordId; /** - * 流程标题 + * 流程标题 */ private String title; @@ -246,15 +284,15 @@ public static class History{ @Data public static class Body { /** - * 流程记录编号 + * 流程记录编号 */ private long recordId; /** - * 流程标题 + * 流程标题 */ private String title; /** - * 表单数据 + * 表单数据 */ private Map data; diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowRecord.java b/flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowRecord.java index 0cb2d2e8..67883caa 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowRecord.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowRecord.java @@ -461,7 +461,7 @@ public void notifyRecord(FlowSession flowSession) { NodeStrategyManager nodeStrategyManager = currentNode.strategyManager(); this.setTitle(nodeStrategyManager.generateTitle(flowSession)); this.setTimeoutTime(nodeStrategyManager.getTimeoutTime()); - this.setMergeable(nodeStrategyManager.isMergeable()); + this.setMergeable(nodeStrategyManager.isEnableMergeable()); this.update(flowSession, true); this.notify = true; this.forwardOperatorId = 0; diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowDetailService.java b/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowDetailService.java index 25c8da59..1247a7ef 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowDetailService.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowDetailService.java @@ -86,7 +86,7 @@ private void loadWorkflow(){ private void loadTodoFlowRecords(){ if(this.flowRecord!=null){ - if(this.flowRecord.isMergeable()){ + if(this.flowRecord.isMergeable() && this.flowRecord.isTodo()){ List margeRecords = flowRecordService.getMergeRecord(flowRecord.getMergeKey()); this.flowContent.pushRecords(this.flowRecord, margeRecords); }else { @@ -122,6 +122,8 @@ public FlowContent create() { this.loadCurrentNode(); this.loadTodoFlowRecords(); this.loadHistoryRecords(); + + flowContent.setOperationAction(this.workflow,this.flowRecord); return flowContent; } } diff --git a/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/controller/FlowRecordController.java b/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/controller/FlowRecordController.java index e0ee0155..2d62fcac 100644 --- a/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/controller/FlowRecordController.java +++ b/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/controller/FlowRecordController.java @@ -1,10 +1,7 @@ package com.codingapi.flow.api.controller; import com.codingapi.flow.operator.IFlowOperator; -import com.codingapi.flow.pojo.request.FlowActionRequest; -import com.codingapi.flow.pojo.request.FlowCreateRequest; -import com.codingapi.flow.pojo.request.FlowDetailRequest; -import com.codingapi.flow.pojo.request.FlowProcessNodeRequest; +import com.codingapi.flow.pojo.request.*; import com.codingapi.flow.pojo.response.FlowContent; import com.codingapi.flow.pojo.response.ProcessNode; import com.codingapi.flow.service.FlowService; @@ -45,6 +42,21 @@ public SingleResponse create(@RequestBody FlowCreateRequest request) { } + @PostMapping("/urge") + public Response urge(@RequestBody IdRequest request) { + IFlowOperator current = (IFlowOperator) UserContext.getInstance().current(); + flowService.urge(new FlowUrgeRequest(request.getLongId(),current.getUserId())); + return Response.buildSuccess(); + } + + @PostMapping("/revoke") + public Response revoke(@RequestBody IdRequest request) { + IFlowOperator current = (IFlowOperator) UserContext.getInstance().current(); + flowService.revoke(new FlowRevokeRequest(request.getLongId(),current.getUserId())); + return Response.buildSuccess(); + } + + @PostMapping("/action") public Response action(@RequestBody FlowActionRequest request) { IFlowOperator current = (IFlowOperator) UserContext.getInstance().current(); From 4f1ced3e294aac20ba4ebbe89e1c269a7e2c2bbb Mon Sep 17 00:00:00 2001 From: lorne <1991wangliang@gmail.com> Date: Wed, 11 Mar 2026 18:11:17 +0800 Subject: [PATCH 3/4] Update flow-frontend to latest main --- flow-frontend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow-frontend b/flow-frontend index 6447f525..1aa0cc0a 160000 --- a/flow-frontend +++ b/flow-frontend @@ -1 +1 @@ -Subproject commit 6447f52595c6a5a272c8c9675a34e5eb138b4e61 +Subproject commit 1aa0cc0a2026d80116928140a52d724db163a1c7 From 8542346ef82fee0c1a4d7b3a83fbaca65a7fa57d Mon Sep 17 00:00:00 2001 From: lorne <1991wangliang@gmail.com> Date: Wed, 11 Mar 2026 18:11:28 +0800 Subject: [PATCH 4/4] fix #80 --- .../com/codingapi/flow/domain/UrgeInterval.java | 2 +- .../flow/exception/FlowStateException.java | 4 ++-- .../java/com/codingapi/flow/record/FlowRecord.java | 4 ++-- .../com/codingapi/flow/record/FlowTodoRecord.java | 4 ++-- .../flow/repository/FlowTodoRecordRepository.java | 2 +- .../flow/service/FlowRecordSaveService.java | 13 ++++++++++--- .../codingapi/flow/service/FlowRecordService.java | 2 +- .../flow/service/impl/FlowDetailService.java | 2 +- .../flow/service/impl/FlowUrgeService.java | 2 +- .../flow/strategy/workflow/UrgeStrategy.java | 2 +- .../repository/FlowTodoRecordRepositoryImpl.java | 2 +- .../flow/service/FlowMergeableServiceTest.java | 2 +- .../flow/infra/entity/FlowTodoRecordEntity.java | 2 +- .../flow/infra/pojo/FlowRecordContent.java | 2 +- .../impl/FlowTodoRecordRepositoryImpl.java | 2 +- .../query/controller/FlowRecordQueryController.java | 2 ++ 16 files changed, 29 insertions(+), 20 deletions(-) diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/domain/UrgeInterval.java b/flow-engine-framework/src/main/java/com/codingapi/flow/domain/UrgeInterval.java index d89c5373..7b374105 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/domain/UrgeInterval.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/domain/UrgeInterval.java @@ -21,6 +21,6 @@ public class UrgeInterval { public UrgeInterval(FlowRecord flowRecord) { this.processId = flowRecord.getProcessId(); this.recordId = flowRecord.getId(); - this.createTime = flowRecord.getCreateTime(); + this.createTime = System.currentTimeMillis(); } } diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/exception/FlowStateException.java b/flow-engine-framework/src/main/java/com/codingapi/flow/exception/FlowStateException.java index 3ab896c8..0f6d8fdf 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/exception/FlowStateException.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/exception/FlowStateException.java @@ -114,7 +114,7 @@ public static FlowStateException nodeNotSupportRevoke() { * * @return exception */ - public static FlowStateException recordNotSupportUrge() { - return new FlowStateException("record.notSupportUrge", "record not support urge"); + public static FlowStateException recordLimitUrgeError() { + return new FlowStateException("record.urge.limit", "record urge limit error"); } } diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowRecord.java b/flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowRecord.java index 67883caa..191f9053 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowRecord.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowRecord.java @@ -210,7 +210,7 @@ public class FlowRecord { private long timeoutTime; /** * 是否可合并 - * {@link FlowRecord#getMergeKey()} + * {@link FlowRecord#getTodoKey()} */ private boolean mergeable; /** @@ -247,7 +247,7 @@ public class FlowRecord { * 数据合并的依据,当开启时值为固定值,否则为随机数据 * 相同的 {@link FlowRecord#currentOperatorId} {@link FlowRecord#workRuntimeId} {@link FlowRecord#nodeId}字段的数据合并到一条记录上。 */ - public String getMergeKey() { + public String getTodoKey() { if (mergeable) { return String.format("%s-%s-%s", currentOperatorId, workRuntimeId, nodeId); } else { diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowTodoRecord.java b/flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowTodoRecord.java index c25be63a..a8d662a0 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowTodoRecord.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/record/FlowTodoRecord.java @@ -80,7 +80,7 @@ public class FlowTodoRecord { /** * 合并记录id,当存在合并记录数据时待办记录数量不会增加,内容会更新至最新的待办数据信息。 - * {@link FlowRecord#getMergeKey()} + * {@link FlowRecord#getTodoKey()} */ private String mergeKey; @@ -126,7 +126,7 @@ public void update(FlowRecord flowRecord) { this.createTime = flowRecord.getCreateTime(); this.createOperatorId = flowRecord.getCreateOperatorId(); this.createOperatorName = flowRecord.getCreateOperatorName(); - this.mergeKey = flowRecord.getMergeKey(); + this.mergeKey = flowRecord.getTodoKey(); this.mergeable = flowRecord.isMergeable(); this.recordId = flowRecord.getId(); this.timeoutTime = flowRecord.getTimeoutTime(); diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/repository/FlowTodoRecordRepository.java b/flow-engine-framework/src/main/java/com/codingapi/flow/repository/FlowTodoRecordRepository.java index f232bbfa..40408829 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/repository/FlowTodoRecordRepository.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/repository/FlowTodoRecordRepository.java @@ -8,7 +8,7 @@ public interface FlowTodoRecordRepository { void saveAll(List margeRecords); - FlowTodoRecord getByMergeKey(String key); + FlowTodoRecord getByTodoKey(String key); void delete(FlowTodoRecord margeRecord); diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/service/FlowRecordSaveService.java b/flow-engine-framework/src/main/java/com/codingapi/flow/service/FlowRecordSaveService.java index 4846674b..6b040b65 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/service/FlowRecordSaveService.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/service/FlowRecordSaveService.java @@ -44,7 +44,7 @@ private void saveTodoMargeRecords() { List flowTodoRecords = new ArrayList<>(); for (FlowRecord flowRecord : flowRecords) { if (flowRecord.isTodo()) { - FlowTodoRecord todoMargeRecord = flowTodoRecordRepository.getByMergeKey(flowRecord.getMergeKey()); + FlowTodoRecord todoMargeRecord = flowTodoRecordRepository.getByTodoKey(flowRecord.getTodoKey()); if (todoMargeRecord == null) { todoMargeRecord = new FlowTodoRecord(flowRecord); } else { @@ -83,7 +83,7 @@ private void removeTodoMergeRecords() { for (FlowRecord flowRecord : flowRecords) { if (flowRecord.isDone()) { if (flowRecord.isMergeable()) { - FlowTodoRecord todoMargeRecord = flowTodoRecordRepository.getByMergeKey(flowRecord.getMergeKey()); + FlowTodoRecord todoMargeRecord = flowTodoRecordRepository.getByTodoKey(flowRecord.getTodoKey()); if (todoMargeRecord != null) { List margeRelations = flowTodoMergeRepository.findByTodoId(todoMargeRecord.getId()); if (margeRelations != null && !margeRelations.isEmpty()) { @@ -101,7 +101,14 @@ private void removeTodoMergeRecords() { } } } else { - FlowTodoRecord flowTodoRecord = flowTodoRecordRepository.getByMergeKey(flowRecord.getMergeKey()); + FlowTodoRecord flowTodoRecord = flowTodoRecordRepository.getByTodoKey(flowRecord.getTodoKey()); + if (flowTodoRecord != null) { + flowTodoRecordRepository.delete(flowTodoRecord); + } + } + }else { + if(flowRecord.isRevoked()){ + FlowTodoRecord flowTodoRecord = flowTodoRecordRepository.getByTodoKey(flowRecord.getTodoKey()); if (flowTodoRecord != null) { flowTodoRecordRepository.delete(flowTodoRecord); } diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/service/FlowRecordService.java b/flow-engine-framework/src/main/java/com/codingapi/flow/service/FlowRecordService.java index 80c40005..c57735fa 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/service/FlowRecordService.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/service/FlowRecordService.java @@ -48,7 +48,7 @@ public void saveFlowRecord(FlowRecord flowRecord) { * @return 流程合并记录 */ public List getMergeRecord(String mergeKey){ - FlowTodoRecord todoRecord = flowTodoRecordRepository.getByMergeKey(mergeKey); + FlowTodoRecord todoRecord = flowTodoRecordRepository.getByTodoKey(mergeKey); List todoMerges = flowTodoMergeRepository.findByTodoId(todoRecord.getId()); return this.findFlowRecordByIds(todoMerges.stream().map(FlowTodoMerge::getRecordId).toList()); } diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowDetailService.java b/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowDetailService.java index 1247a7ef..f863633a 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowDetailService.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowDetailService.java @@ -87,7 +87,7 @@ private void loadWorkflow(){ private void loadTodoFlowRecords(){ if(this.flowRecord!=null){ if(this.flowRecord.isMergeable() && this.flowRecord.isTodo()){ - List margeRecords = flowRecordService.getMergeRecord(flowRecord.getMergeKey()); + List margeRecords = flowRecordService.getMergeRecord(flowRecord.getTodoKey()); this.flowContent.pushRecords(this.flowRecord, margeRecords); }else { this.flowContent.pushRecords(this.flowRecord,List.of(this.flowRecord)); diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowUrgeService.java b/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowUrgeService.java index e4f32043..e5bf2734 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowUrgeService.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowUrgeService.java @@ -71,7 +71,7 @@ public void urge() { if (strategyManager.isEnableUrge()) { UrgeStrategy urgeStrategy = strategyManager.getStrategy(UrgeStrategy.class); if (!urgeStrategy.hasUrge(urgeInterval)) { - throw FlowStateException.recordNotSupportUrge(); + throw FlowStateException.recordLimitUrgeError(); } } } diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/strategy/workflow/UrgeStrategy.java b/flow-engine-framework/src/main/java/com/codingapi/flow/strategy/workflow/UrgeStrategy.java index 39420ea6..c2a24182 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/strategy/workflow/UrgeStrategy.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/strategy/workflow/UrgeStrategy.java @@ -56,7 +56,7 @@ public static UrgeStrategy fromMap(Map map) { } /** - * 是否有催办 + * 是否可催办 */ public boolean hasUrge(UrgeInterval urgeInterval) { long interval = this.interval * 1000L; diff --git a/flow-engine-framework/src/test/java/com/codingapi/flow/repository/FlowTodoRecordRepositoryImpl.java b/flow-engine-framework/src/test/java/com/codingapi/flow/repository/FlowTodoRecordRepositoryImpl.java index ab277f73..b4295fb6 100644 --- a/flow-engine-framework/src/test/java/com/codingapi/flow/repository/FlowTodoRecordRepositoryImpl.java +++ b/flow-engine-framework/src/test/java/com/codingapi/flow/repository/FlowTodoRecordRepositoryImpl.java @@ -37,7 +37,7 @@ public void delete(FlowTodoRecord margeRecord) { } @Override - public FlowTodoRecord getByMergeKey(String key) { + public FlowTodoRecord getByTodoKey(String key) { return cacheByMageKey.get(key); } diff --git a/flow-engine-framework/src/test/java/com/codingapi/flow/service/FlowMergeableServiceTest.java b/flow-engine-framework/src/test/java/com/codingapi/flow/service/FlowMergeableServiceTest.java index ee5e0912..792d6e37 100644 --- a/flow-engine-framework/src/test/java/com/codingapi/flow/service/FlowMergeableServiceTest.java +++ b/flow-engine-framework/src/test/java/com/codingapi/flow/service/FlowMergeableServiceTest.java @@ -143,7 +143,7 @@ void mergeableRecords() { assertEquals(count, bossRecordList.size()); assertEquals(count, bossRecordList.stream().filter(FlowRecord::isMergeable).toList().size()); - List mergeIdList = bossRecordList.stream().map(FlowRecord::getMergeKey).toList(); + List mergeIdList = bossRecordList.stream().map(FlowRecord::getTodoKey).toList(); Set set = new HashSet<>(mergeIdList); assertEquals(1,set.size()); diff --git a/flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/entity/FlowTodoRecordEntity.java b/flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/entity/FlowTodoRecordEntity.java index c36ae754..64932dfe 100644 --- a/flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/entity/FlowTodoRecordEntity.java +++ b/flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/entity/FlowTodoRecordEntity.java @@ -78,7 +78,7 @@ public class FlowTodoRecordEntity { /** * 合并记录id,当存在合并记录数据时待办记录数量不会增加,内容会更新至最新的待办数据信息。 - * {@link FlowRecord#getMergeKey()} + * {@link FlowRecord#getTodoKey()} */ private String mergeKey; diff --git a/flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/pojo/FlowRecordContent.java b/flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/pojo/FlowRecordContent.java index a4282993..e92765f6 100644 --- a/flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/pojo/FlowRecordContent.java +++ b/flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/pojo/FlowRecordContent.java @@ -71,7 +71,7 @@ public class FlowRecordContent { /** * 合并记录id,当存在合并记录数据时待办记录数量不会增加,内容会更新至最新的待办数据信息。 - * {@link FlowRecord#getMergeKey()} + * {@link FlowRecord#getTodoKey()} */ private String mergeKey; diff --git a/flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/repository/impl/FlowTodoRecordRepositoryImpl.java b/flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/repository/impl/FlowTodoRecordRepositoryImpl.java index 3148e3bb..bc3c57f8 100644 --- a/flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/repository/impl/FlowTodoRecordRepositoryImpl.java +++ b/flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/repository/impl/FlowTodoRecordRepositoryImpl.java @@ -22,7 +22,7 @@ public void saveAll(List margeRecords) { } @Override - public FlowTodoRecord getByMergeKey(String key) { + public FlowTodoRecord getByTodoKey(String key) { return FlowTodoRecordConvertor.convert(flowTodoRecordEntityRepository.getByMergeKey(key)); } diff --git a/flow-engine-starter-query/src/main/java/com/codingapi/flow/query/controller/FlowRecordQueryController.java b/flow-engine-starter-query/src/main/java/com/codingapi/flow/query/controller/FlowRecordQueryController.java index 6378c0e0..b3cf691a 100644 --- a/flow-engine-starter-query/src/main/java/com/codingapi/flow/query/controller/FlowRecordQueryController.java +++ b/flow-engine-starter-query/src/main/java/com/codingapi/flow/query/controller/FlowRecordQueryController.java @@ -6,6 +6,7 @@ import com.codingapi.flow.infra.jpa.FlowTodoRecordEntityRepository; import com.codingapi.flow.infra.pojo.FlowRecordContent; import com.codingapi.flow.operator.IFlowOperator; +import com.codingapi.springboot.framework.dto.request.Relation; import com.codingapi.springboot.framework.dto.request.SearchRequest; import com.codingapi.springboot.framework.dto.response.MultiResponse; import com.codingapi.springboot.framework.user.UserContext; @@ -31,6 +32,7 @@ public class FlowRecordQueryController { @GetMapping("/list") public MultiResponse list(SearchRequest request) { request.addSort(Sort.by("id").descending()); + request.addFilter("revoked", Relation.EQUAL,false); Page page = flowRecordEntityRepository.searchRequest(request); return MultiResponse.of(page.map(FlowRecordContent::convert)); }