From 4aba8bec87dcfa2cba7f490fb95a716686d9711e Mon Sep 17 00:00:00 2001 From: lorne <1991wangliang@gmail.com> Date: Sat, 14 Mar 2026 11:22:28 +0800 Subject: [PATCH 1/4] #87 --- .../flow/pojo/request/FlowCreateRequest.java | 2 +- .../script/request/GroovyScriptRequest.java | 13 ++++++++ .../codingapi/flow/session/FlowSession.java | 33 ++++++++++++++----- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/pojo/request/FlowCreateRequest.java b/flow-engine-framework/src/main/java/com/codingapi/flow/pojo/request/FlowCreateRequest.java index 74712de4..ff58b4c8 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/pojo/request/FlowCreateRequest.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/pojo/request/FlowCreateRequest.java @@ -32,7 +32,7 @@ public class FlowCreateRequest { private long operatorId; /** - * 父流程id + * 父流程id,系统自动赋值 */ private long parentRecordId; diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/script/request/GroovyScriptRequest.java b/flow-engine-framework/src/main/java/com/codingapi/flow/script/request/GroovyScriptRequest.java index 91ede035..21cdc88d 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/script/request/GroovyScriptRequest.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/script/request/GroovyScriptRequest.java @@ -187,6 +187,19 @@ public FlowCreateRequest toCreateRequest(){ return flowSession.toCreateRequest(); } + /** + * 创建流程请求,用于自流程的创建 + * @param workId 流程设计id + * @param actionId 动作类型 + * @param formData 流程数据 + */ + public FlowCreateRequest toCreateRequest(String workId, + long operatorId, + String actionId, + Map formData){ + return flowSession.toCreateRequest(workId, operatorId, actionId, formData); + } + /** * 获取表单字段值(Groovy脚本调用) diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/session/FlowSession.java b/flow-engine-framework/src/main/java/com/codingapi/flow/session/FlowSession.java index 5e3a09df..529d3702 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/session/FlowSession.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/session/FlowSession.java @@ -1,5 +1,6 @@ package com.codingapi.flow.session; +import com.codingapi.flow.action.ActionType; import com.codingapi.flow.action.IFlowAction; import com.codingapi.flow.form.FormData; import com.codingapi.flow.mock.MockRepositoryHolder; @@ -15,6 +16,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * 流程会话对象 @@ -139,22 +141,37 @@ public static FlowSession startSession( /** - * 创建流程请求 + * 创建流程请求,用于自流程的创建 */ public FlowCreateRequest toCreateRequest() { - FlowCreateRequest request = new FlowCreateRequest(); IFlowNode startNode = workflow.getStartNode(); - IFlowAction action = startNode.actionManager().getFirstAction(); - request.setWorkId(workflow.getId()); - request.setFormData(formData.toMapData()); - request.setActionId(action.id()); - request.setOperatorId(currentOperator.getUserId()); + IFlowAction action = startNode.actionManager().getActionByType(ActionType.SAVE.name()); + return this.toCreateRequest(workflow.getId(),currentOperator.getUserId(),action.id(),formData.toMapData()); + } + + + /** + * 创建流程请求,用于自流程的创建 + * @param workId 流程设计id + * @param actionId 动作类型 + * @param formData 流程数据 + */ + public FlowCreateRequest toCreateRequest(String workId, + long operatorId, + String actionId, + Map formData){ + + FlowCreateRequest request = new FlowCreateRequest(); + request.setActionId(actionId); + request.setWorkId(workId); + request.setOperatorId(operatorId); + request.setFormData(formData); return request; } /** - * 创建流程动作请求 + * 创建流程动作请求,用于自定义脚本的执行 */ public FlowActionRequest toActionRequest() { FlowActionRequest request = new FlowActionRequest(); From 75e7bb4b091ee271f094bc270ed4137a831df7e7 Mon Sep 17 00:00:00 2001 From: lorne <1991wangliang@gmail.com> Date: Sat, 14 Mar 2026 18:14:56 +0800 Subject: [PATCH 2/4] #87 --- .../api/controller/WorkflowController.java | 11 +++++ .../codingapi/flow/api/pojo/WorkflowMeta.java | 40 +++++++++++++++++++ flow-frontend | 2 +- 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 flow-engine-starter-api/src/main/java/com/codingapi/flow/api/pojo/WorkflowMeta.java diff --git a/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/controller/WorkflowController.java b/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/controller/WorkflowController.java index 3938ece9..290d044e 100644 --- a/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/controller/WorkflowController.java +++ b/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/controller/WorkflowController.java @@ -2,7 +2,9 @@ import com.alibaba.fastjson.JSONObject; import com.codingapi.flow.api.pojo.NodeCreateRequest; +import com.codingapi.flow.api.pojo.WorkflowMeta; import com.codingapi.flow.api.pojo.WorkflowUpdateVersionNameRequest; +import com.codingapi.flow.exception.FlowNotFoundException; import com.codingapi.flow.exception.FlowPermissionException; import com.codingapi.flow.gateway.FlowOperatorGateway; import com.codingapi.flow.mock.MockInstance; @@ -53,6 +55,15 @@ public Response updateVersionName(@RequestBody WorkflowUpdateVersionNameRequest return Response.buildSuccess(); } + @GetMapping("/meta") + public SingleResponse getMeta(IdRequest request){ + Workflow workflow = workflowService.getWorkflow(request.getStringId()); + if(workflow!=null){ + return SingleResponse.of(new WorkflowMeta(workflow)); + } + throw FlowNotFoundException.workflow(request.getStringId()); + } + @PostMapping("/changeVersion") public Response changeVersion(@RequestBody IdRequest request) { diff --git a/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/pojo/WorkflowMeta.java b/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/pojo/WorkflowMeta.java new file mode 100644 index 00000000..4166381f --- /dev/null +++ b/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/pojo/WorkflowMeta.java @@ -0,0 +1,40 @@ +package com.codingapi.flow.api.pojo; + +import com.codingapi.flow.action.IFlowAction; +import com.codingapi.flow.form.FlowForm; +import com.codingapi.flow.manager.ActionManager; +import com.codingapi.flow.node.IFlowNode; +import com.codingapi.flow.workflow.Workflow; +import lombok.Data; + +import java.util.List; + +@Data +public class WorkflowMeta { + + private String workId; + private List actions; + private FlowForm form; + + public WorkflowMeta(Workflow workflow) { + this.workId = workflow.getId(); + this.form = workflow.getForm(); + IFlowNode startNode = workflow.getStartNode(); + ActionManager actionManager = startNode.actionManager(); + this.actions = actionManager.getActions().stream().map(ActionOption::new).toList(); + } + + + @Data + public static class ActionOption { + private String actionId; + private String title; + private String type; + + public ActionOption(IFlowAction action) { + this.actionId = action.id(); + this.title = action.title(); + this.type = action.type(); + } + } +} diff --git a/flow-frontend b/flow-frontend index a2800f01..24c0e0e6 160000 --- a/flow-frontend +++ b/flow-frontend @@ -1 +1 @@ -Subproject commit a2800f01d3373ac736c946ffe29b5960013b75e6 +Subproject commit 24c0e0e642f6a31972ff5834b8ebd242707751cb From c486e9e1d4dfce93606e2b5f3c50221409d65aff Mon Sep 17 00:00:00 2001 From: lorne <1991wangliang@gmail.com> Date: Sun, 15 Mar 2026 10:33:03 +0800 Subject: [PATCH 3/4] #87 --- .../script/request/GroovyScriptRequest.java | 13 ++++++++++++ .../codingapi/flow/session/FlowSession.java | 20 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/script/request/GroovyScriptRequest.java b/flow-engine-framework/src/main/java/com/codingapi/flow/script/request/GroovyScriptRequest.java index 21cdc88d..0598ed92 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/script/request/GroovyScriptRequest.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/script/request/GroovyScriptRequest.java @@ -187,6 +187,19 @@ public FlowCreateRequest toCreateRequest(){ return flowSession.toCreateRequest(); } + /** + * 创建流程请求,用于自流程的创建 + * @param workId 流程设计id + * @param actionId 动作类型 + * @param formData 流程数据 + */ + public FlowCreateRequest toCreateRequest(String workId, + long operatorId, + String actionId, + String formData){ + return flowSession.toCreateRequest(workId, operatorId, actionId, formData); + } + /** * 创建流程请求,用于自流程的创建 * @param workId 流程设计id diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/session/FlowSession.java b/flow-engine-framework/src/main/java/com/codingapi/flow/session/FlowSession.java index 529d3702..1ff681ec 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/session/FlowSession.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/session/FlowSession.java @@ -1,5 +1,6 @@ package com.codingapi.flow.session; +import com.alibaba.fastjson.JSONObject; import com.codingapi.flow.action.ActionType; import com.codingapi.flow.action.IFlowAction; import com.codingapi.flow.form.FormData; @@ -150,6 +151,25 @@ public FlowCreateRequest toCreateRequest() { } + /** + * 创建流程请求,用于自流程的创建 + * @param workId 流程设计id + * @param actionId 动作类型 + * @param formData 流程数据 + */ + public FlowCreateRequest toCreateRequest(String workId, + long operatorId, + String actionId, + String formData){ + + FlowCreateRequest request = new FlowCreateRequest(); + request.setActionId(actionId); + request.setWorkId(workId); + request.setOperatorId(operatorId); + request.setFormData(JSONObject.parseObject(formData)); + return request; + } + /** * 创建流程请求,用于自流程的创建 * @param workId 流程设计id From 8b5ecf255619d991fe00d9a3185ddc97d823abdf Mon Sep 17 00:00:00 2001 From: lorne <1991wangliang@gmail.com> Date: Sun, 15 Mar 2026 10:33:42 +0800 Subject: [PATCH 4/4] #87 --- flow-frontend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow-frontend b/flow-frontend index 24c0e0e6..2e1a64b1 160000 --- a/flow-frontend +++ b/flow-frontend @@ -1 +1 @@ -Subproject commit 24c0e0e642f6a31972ff5834b8ebd242707751cb +Subproject commit 2e1a64b16eee632977f264ab26bdb09e16028515