Skip to content

Commit c8a88e5

Browse files
authored
Merge pull request #91 from codingapi/dev
Dev
2 parents 03f3165 + 8b5ecf2 commit c8a88e5

6 files changed

Lines changed: 124 additions & 10 deletions

File tree

flow-engine-framework/src/main/java/com/codingapi/flow/pojo/request/FlowCreateRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class FlowCreateRequest {
3232
private long operatorId;
3333

3434
/**
35-
* 父流程id
35+
* 父流程id,系统自动赋值
3636
*/
3737
private long parentRecordId;
3838

flow-engine-framework/src/main/java/com/codingapi/flow/script/request/GroovyScriptRequest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,32 @@ public FlowCreateRequest toCreateRequest(){
187187
return flowSession.toCreateRequest();
188188
}
189189

190+
/**
191+
* 创建流程请求,用于自流程的创建
192+
* @param workId 流程设计id
193+
* @param actionId 动作类型
194+
* @param formData 流程数据
195+
*/
196+
public FlowCreateRequest toCreateRequest(String workId,
197+
long operatorId,
198+
String actionId,
199+
String formData){
200+
return flowSession.toCreateRequest(workId, operatorId, actionId, formData);
201+
}
202+
203+
/**
204+
* 创建流程请求,用于自流程的创建
205+
* @param workId 流程设计id
206+
* @param actionId 动作类型
207+
* @param formData 流程数据
208+
*/
209+
public FlowCreateRequest toCreateRequest(String workId,
210+
long operatorId,
211+
String actionId,
212+
Map<String,Object> formData){
213+
return flowSession.toCreateRequest(workId, operatorId, actionId, formData);
214+
}
215+
190216

191217
/**
192218
* 获取表单字段值(Groovy脚本调用)

flow-engine-framework/src/main/java/com/codingapi/flow/session/FlowSession.java

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.codingapi.flow.session;
22

3+
import com.alibaba.fastjson.JSONObject;
4+
import com.codingapi.flow.action.ActionType;
35
import com.codingapi.flow.action.IFlowAction;
46
import com.codingapi.flow.form.FormData;
57
import com.codingapi.flow.mock.MockRepositoryHolder;
@@ -15,6 +17,7 @@
1517

1618
import java.util.ArrayList;
1719
import java.util.List;
20+
import java.util.Map;
1821

1922
/**
2023
* 流程会话对象
@@ -139,22 +142,56 @@ public static FlowSession startSession(
139142

140143

141144
/**
142-
* 创建流程请求
145+
* 创建流程请求,用于自流程的创建
143146
*/
144147
public FlowCreateRequest toCreateRequest() {
145-
FlowCreateRequest request = new FlowCreateRequest();
146148
IFlowNode startNode = workflow.getStartNode();
147-
IFlowAction action = startNode.actionManager().getFirstAction();
148-
request.setWorkId(workflow.getId());
149-
request.setFormData(formData.toMapData());
150-
request.setActionId(action.id());
151-
request.setOperatorId(currentOperator.getUserId());
149+
IFlowAction action = startNode.actionManager().getActionByType(ActionType.SAVE.name());
150+
return this.toCreateRequest(workflow.getId(),currentOperator.getUserId(),action.id(),formData.toMapData());
151+
}
152+
153+
154+
/**
155+
* 创建流程请求,用于自流程的创建
156+
* @param workId 流程设计id
157+
* @param actionId 动作类型
158+
* @param formData 流程数据
159+
*/
160+
public FlowCreateRequest toCreateRequest(String workId,
161+
long operatorId,
162+
String actionId,
163+
String formData){
164+
165+
FlowCreateRequest request = new FlowCreateRequest();
166+
request.setActionId(actionId);
167+
request.setWorkId(workId);
168+
request.setOperatorId(operatorId);
169+
request.setFormData(JSONObject.parseObject(formData));
170+
return request;
171+
}
172+
173+
/**
174+
* 创建流程请求,用于自流程的创建
175+
* @param workId 流程设计id
176+
* @param actionId 动作类型
177+
* @param formData 流程数据
178+
*/
179+
public FlowCreateRequest toCreateRequest(String workId,
180+
long operatorId,
181+
String actionId,
182+
Map<String,Object> formData){
183+
184+
FlowCreateRequest request = new FlowCreateRequest();
185+
request.setActionId(actionId);
186+
request.setWorkId(workId);
187+
request.setOperatorId(operatorId);
188+
request.setFormData(formData);
152189
return request;
153190
}
154191

155192

156193
/**
157-
* 创建流程动作请求
194+
* 创建流程动作请求,用于自定义脚本的执行
158195
*/
159196
public FlowActionRequest toActionRequest() {
160197
FlowActionRequest request = new FlowActionRequest();

flow-engine-starter-api/src/main/java/com/codingapi/flow/api/controller/WorkflowController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import com.alibaba.fastjson.JSONObject;
44
import com.codingapi.flow.api.pojo.NodeCreateRequest;
5+
import com.codingapi.flow.api.pojo.WorkflowMeta;
56
import com.codingapi.flow.api.pojo.WorkflowUpdateVersionNameRequest;
7+
import com.codingapi.flow.exception.FlowNotFoundException;
68
import com.codingapi.flow.exception.FlowPermissionException;
79
import com.codingapi.flow.gateway.FlowOperatorGateway;
810
import com.codingapi.flow.mock.MockInstance;
@@ -53,6 +55,15 @@ public Response updateVersionName(@RequestBody WorkflowUpdateVersionNameRequest
5355
return Response.buildSuccess();
5456
}
5557

58+
@GetMapping("/meta")
59+
public SingleResponse<WorkflowMeta> getMeta(IdRequest request){
60+
Workflow workflow = workflowService.getWorkflow(request.getStringId());
61+
if(workflow!=null){
62+
return SingleResponse.of(new WorkflowMeta(workflow));
63+
}
64+
throw FlowNotFoundException.workflow(request.getStringId());
65+
}
66+
5667

5768
@PostMapping("/changeVersion")
5869
public Response changeVersion(@RequestBody IdRequest request) {
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.codingapi.flow.api.pojo;
2+
3+
import com.codingapi.flow.action.IFlowAction;
4+
import com.codingapi.flow.form.FlowForm;
5+
import com.codingapi.flow.manager.ActionManager;
6+
import com.codingapi.flow.node.IFlowNode;
7+
import com.codingapi.flow.workflow.Workflow;
8+
import lombok.Data;
9+
10+
import java.util.List;
11+
12+
@Data
13+
public class WorkflowMeta {
14+
15+
private String workId;
16+
private List<ActionOption> actions;
17+
private FlowForm form;
18+
19+
public WorkflowMeta(Workflow workflow) {
20+
this.workId = workflow.getId();
21+
this.form = workflow.getForm();
22+
IFlowNode startNode = workflow.getStartNode();
23+
ActionManager actionManager = startNode.actionManager();
24+
this.actions = actionManager.getActions().stream().map(ActionOption::new).toList();
25+
}
26+
27+
28+
@Data
29+
public static class ActionOption {
30+
private String actionId;
31+
private String title;
32+
private String type;
33+
34+
public ActionOption(IFlowAction action) {
35+
this.actionId = action.id();
36+
this.title = action.title();
37+
this.type = action.type();
38+
}
39+
}
40+
}

flow-frontend

Submodule flow-frontend updated 25 files

0 commit comments

Comments
 (0)