Skip to content

Commit e437704

Browse files
committed
add todo
1 parent 4f637b2 commit e437704

9 files changed

Lines changed: 71 additions & 33 deletions

File tree

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

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
package com.codingapi.flow.api.controller;
22

33
import com.alibaba.fastjson.JSONObject;
4-
import com.codingapi.flow.api.pojo.BackNodeRequest;
54
import com.codingapi.flow.api.pojo.NodeCreateRequest;
6-
import com.codingapi.flow.api.pojo.SelectOption;
75
import com.codingapi.flow.node.IBlockNode;
8-
import com.codingapi.flow.node.IDisplayNode;
96
import com.codingapi.flow.node.IFlowNode;
107
import com.codingapi.flow.node.NodeType;
118
import com.codingapi.flow.node.factory.NodeFactory;
@@ -14,14 +11,12 @@
1411
import com.codingapi.flow.workflow.Workflow;
1512
import com.codingapi.flow.workflow.WorkflowBuilder;
1613
import com.codingapi.springboot.framework.dto.request.IdRequest;
17-
import com.codingapi.springboot.framework.dto.response.MultiResponse;
1814
import com.codingapi.springboot.framework.dto.response.Response;
1915
import com.codingapi.springboot.framework.dto.response.SingleResponse;
2016
import com.codingapi.springboot.framework.user.UserContext;
2117
import lombok.AllArgsConstructor;
2218
import org.springframework.web.bind.annotation.*;
2319

24-
import java.util.List;
2520
import java.util.Map;
2621

2722

@@ -72,24 +67,6 @@ public SingleResponse<Map<String, Object>> createNode(@RequestBody NodeCreateReq
7267
return SingleResponse.of(node.toMap());
7368
}
7469

75-
76-
@PostMapping("/back-nodes")
77-
public MultiResponse<SelectOption> backNodes(@RequestBody BackNodeRequest request) {
78-
Workflow workflow = workflowRepository.get(request.getWorkId());
79-
IFlowNode backNode = workflow.getFlowNode(request.getNodeId());
80-
List<IFlowNode> backNodes = workflow.getNackNodes(backNode).stream().filter(node -> node instanceof IDisplayNode).toList();
81-
return MultiResponse.of(backNodes.stream().map(node -> new SelectOption(node.getId(), node.getName())).toList());
82-
}
83-
84-
85-
@PostMapping("/nodes")
86-
public MultiResponse<SelectOption> nodes(@RequestBody IdRequest request) {
87-
Workflow workflow = workflowRepository.get(request.getStringId());
88-
List<IFlowNode> backNodes = workflow.getNodes().stream().filter(node -> node instanceof IDisplayNode).toList();
89-
return MultiResponse.of(backNodes.stream().map(node -> new SelectOption(node.getId(), node.getName())).toList());
90-
}
91-
92-
9370
@PostMapping("/save")
9471
public Response save(@RequestBody JSONObject request) {
9572
IFlowOperator current = (IFlowOperator) UserContext.getInstance().current();
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import {useDesignContext} from "@/components/design-panel/hooks/use-design-context";
2+
import {NodeRouterManager} from "@/components/design-panel/manager/node";
3+
4+
export const useNodeRouterManager = ()=>{
5+
const {state} = useDesignContext();
6+
const nodes = state.workflow.nodes || [];
7+
return new NodeRouterManager(nodes);
8+
}

frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/manager/node.ts

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import {FlowNode} from "@/components/design-panel/types";
22

3-
export class NodeManager {
3+
/**
4+
* 节点数据转换服务
5+
*/
6+
export class NodeConvertorManager {
47

58
public static readonly STRATEGY_SUFFIX = 'Strategy';
69
public static readonly STRATEGY_KEY = 'strategyType';
@@ -60,7 +63,7 @@ export class NodeManager {
6063

6164
for (let i = 0; i < strategies.length; i++) {
6265
const strategy = strategies[i];
63-
const key = strategy[NodeManager.STRATEGY_KEY];
66+
const key = strategy[NodeConvertorManager.STRATEGY_KEY];
6467
strategyMap[key] = {
6568
...strategy
6669
}
@@ -74,15 +77,47 @@ export class NodeManager {
7477
const keys = Object.keys(node);
7578
const strategies: any[] = [];
7679
for (const key of keys) {
77-
if (key.endsWith(NodeManager.STRATEGY_SUFFIX)) {
80+
if (key.endsWith(NodeConvertorManager.STRATEGY_SUFFIX)) {
7881
const strategy = node[key];
7982
strategies.push({
80-
[NodeManager.STRATEGY_KEY]: key,
83+
[NodeConvertorManager.STRATEGY_KEY]: key,
8184
...strategy,
8285
});
8386
}
8487
}
8588
return strategies;
8689
}
8790

91+
}
92+
93+
/**
94+
* 节点关系分析管理,分析所有的节点,可回退的节点等信息
95+
*/
96+
export class NodeRouterManager {
97+
private readonly nodes: FlowNode[];
98+
99+
constructor(nodes: FlowNode[]) {
100+
this.nodes = nodes;
101+
}
102+
103+
public size() {
104+
return this.nodes.length;
105+
}
106+
107+
/**
108+
* 查看全部的可选节点
109+
* TODO 需要对blocks的节点进行展开查看,并提出条件控制节点
110+
*/
111+
public getNodes() {
112+
return this.nodes;
113+
}
114+
115+
/**
116+
* 获取可退回的节点
117+
* TODO 需要对blocks的节点进行展开查看,并提出条件控制节点
118+
* @param nodeId
119+
*/
120+
public getBackNodes(nodeId: string) {
121+
return this.nodes;
122+
}
88123
}

frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/presenters/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {DesignPanelApi, FlowNode, initStateData, State, TabPanelType} from "../t
22
import {Dispatch} from "@flow-engine/flow-core";
33
import {FormActionContext} from "@/components/design-panel/presenters/form";
44
import {WorkflowFormManager} from "@/components/design-panel/manager/form";
5-
import {NodeManager} from "@/components/design-panel/manager/node";
5+
import {NodeConvertorManager} from "@/components/design-panel/manager/node";
66
import {WorkflowConvertor} from "@/components/design-panel/presenters/convertor";
77

88
export class Presenter {
@@ -128,7 +128,7 @@ export class Presenter {
128128

129129
public async createNode(form: string, type: string) {
130130
const flowNode = await this.api.createNode(type);
131-
const nodeManager = new NodeManager();
131+
const nodeManager = new NodeConvertorManager();
132132
return nodeManager.toItemRender(flowNode);
133133
}
134134

frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/tabs/flow.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from "react";
22
import {FlowEditor, FlowEditorAction} from "@/components/design-editor";
33
import {useDesignContext} from "@/components/design-panel/hooks/use-design-context";
4-
import {NodeManager} from "@/components/design-panel/manager/node";
4+
import {NodeConvertorManager} from "@/components/design-panel/manager/node";
55

66
export const TabFlow = () => {
77

@@ -10,7 +10,7 @@ export const TabFlow = () => {
1010

1111
const actionRef = React.useRef<FlowEditorAction | null>(null);
1212

13-
const nodeManager = new NodeManager();
13+
const nodeManager = new NodeConvertorManager();
1414

1515
// 注册form行为
1616
React.useEffect(() => {

frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/condition-view.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ import {ViewBindPlugin} from "@flow-engine/flow-types";
44
import {AdvancedScriptEditor} from "@/components/script/components/advanced-script-editor";
55
import {DEFAULT_CONDITION_SCRIPT} from "@/components/script/default-script";
66

7+
/**
8+
* TODO 条件控制界面
9+
* @param props
10+
* @constructor
11+
*/
712
export const ConditionPluginView: React.FC<ConditionViewPlugin> = (props) => {
813
const ConditionPluginViewComponent = ViewBindPlugin.getInstance().get(VIEW_KEY);
914
if(ConditionPluginViewComponent){

frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/error-trigger-view.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ import {ViewBindPlugin} from "@flow-engine/flow-types";
1010

1111
const {TextArea} = Input;
1212

13-
// TODO 异常触发界面
13+
/**
14+
* TODO 异常触发界面
15+
* @param props
16+
* @constructor
17+
*/
1418
export const ErrorTriggerPluginView: React.FC<ErrorTriggerViewPlugin> = (props) => {
1519
const nodeTitleGroovyConvertor = new NodeTitleGroovyConvertor(props.script, props.variables);
1620
const ErrorTriggerPluginViewComponent = ViewBindPlugin.getInstance().get(VIEW_KEY);

frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/router-view.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ import {ViewBindPlugin} from "@flow-engine/flow-types";
44
import {AdvancedScriptEditor} from "@/components/script/components/advanced-script-editor";
55
import {DEFAULT_ROUTER_SCRIPT} from "@/components/script/default-script";
66

7+
/**
8+
* TODO 路由配置界面
9+
* @param props
10+
* @constructor
11+
*/
712
export const RouterPluginView: React.FC<RouterViewPlugin> = (props) => {
813
const TriggerPluginViewComponent = ViewBindPlugin.getInstance().get(VIEW_KEY);
914
if(TriggerPluginViewComponent){

frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/sub-process-view.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ import {ViewBindPlugin} from "@flow-engine/flow-types";
88

99
const {TextArea} = Input;
1010

11-
// TODO 异常触发界面
11+
/**
12+
* TODO 子流程配置界面
13+
* @param props
14+
* @constructor
15+
*/
1216
export const SubProcessPluginView: React.FC<SubProcessViewPlugin> = (props) => {
1317
const SubProcessPluginViewComponent = ViewBindPlugin.getInstance().get(VIEW_KEY);
1418
if(SubProcessPluginViewComponent){

0 commit comments

Comments
 (0)