diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/node/IDisplayNode.java b/flow-engine-framework/src/main/java/com/codingapi/flow/node/IDisplayNode.java new file mode 100644 index 00000000..5f5e3d1e --- /dev/null +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/node/IDisplayNode.java @@ -0,0 +1,10 @@ +package com.codingapi.flow.node; + +/** + * 流程审批中呈现的节点 + * 在流程审批过程中可界面的节点,包括{@link com.codingapi.flow.node.nodes.StartNode}{@link com.codingapi.flow.node.nodes.EndNode} 等节点 + * 过滤条件节点例如 {@link com.codingapi.flow.node.nodes.ConditionNode} {@link com.codingapi.flow.node.nodes.ConditionBranchNode} 等逻辑控制节点 + */ +public interface IDisplayNode { + +} diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/ApprovalNode.java b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/ApprovalNode.java index 84932666..b8760dc1 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/ApprovalNode.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/ApprovalNode.java @@ -4,6 +4,7 @@ import com.codingapi.flow.action.actions.*; import com.codingapi.flow.builder.BaseNodeBuilder; import com.codingapi.flow.node.BaseAuditNode; +import com.codingapi.flow.node.IDisplayNode; import com.codingapi.flow.node.NodeType; import com.codingapi.flow.strategy.node.*; import com.codingapi.flow.utils.RandomUtils; @@ -15,7 +16,7 @@ /** * 审批节点 */ -public class ApprovalNode extends BaseAuditNode { +public class ApprovalNode extends BaseAuditNode implements IDisplayNode { public static final String NODE_TYPE = NodeType.APPROVAL.name(); public static final String DEFAULT_NAME = "审批节点"; diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/DelayNode.java b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/DelayNode.java index 8a816711..91470337 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/DelayNode.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/DelayNode.java @@ -5,6 +5,7 @@ import com.codingapi.flow.domain.DelayTaskManager; import com.codingapi.flow.manager.NodeStrategyManager; import com.codingapi.flow.node.BaseFlowNode; +import com.codingapi.flow.node.IDisplayNode; import com.codingapi.flow.node.NodeType; import com.codingapi.flow.record.FlowRecord; import com.codingapi.flow.session.FlowSession; @@ -19,7 +20,7 @@ /** * 延迟节点 */ -public class DelayNode extends BaseFlowNode { +public class DelayNode extends BaseFlowNode implements IDisplayNode { public static final String NODE_TYPE = NodeType.DELAY.name(); public static final String DEFAULT_NAME = "延迟节点"; diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/EndNode.java b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/EndNode.java index 430ee828..b74ca4a7 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/EndNode.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/EndNode.java @@ -6,6 +6,7 @@ import com.codingapi.flow.context.RepositoryHolderContext; import com.codingapi.flow.event.FlowRecordFinishEvent; import com.codingapi.flow.node.BaseFlowNode; +import com.codingapi.flow.node.IDisplayNode; import com.codingapi.flow.node.NodeType; import com.codingapi.flow.record.FlowRecord; import com.codingapi.flow.session.FlowSession; @@ -18,7 +19,7 @@ /** * 结束节点 */ -public class EndNode extends BaseFlowNode { +public class EndNode extends BaseFlowNode implements IDisplayNode { public static final String NODE_TYPE = NodeType.END.name(); public static final String DEFAULT_NAME = "结束节点"; diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/HandleNode.java b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/HandleNode.java index 5724942c..b738f8fd 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/HandleNode.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/HandleNode.java @@ -4,6 +4,7 @@ import com.codingapi.flow.action.actions.PassAction; import com.codingapi.flow.builder.BaseNodeBuilder; import com.codingapi.flow.node.BaseAuditNode; +import com.codingapi.flow.node.IDisplayNode; import com.codingapi.flow.node.NodeType; import com.codingapi.flow.strategy.node.*; import com.codingapi.flow.utils.RandomUtils; @@ -15,7 +16,7 @@ /** * 办理节点 */ -public class HandleNode extends BaseAuditNode { +public class HandleNode extends BaseAuditNode implements IDisplayNode { public static final String NODE_TYPE = NodeType.HANDLE.name(); public static final String DEFAULT_NAME = "办理节点"; diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/NotifyNode.java b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/NotifyNode.java index 1f095a9c..d085c468 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/NotifyNode.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/NotifyNode.java @@ -6,6 +6,7 @@ import com.codingapi.flow.manager.NodeStrategyManager; import com.codingapi.flow.manager.OperatorManager; import com.codingapi.flow.node.BaseAuditNode; +import com.codingapi.flow.node.IDisplayNode; import com.codingapi.flow.node.NodeType; import com.codingapi.flow.operator.IFlowOperator; import com.codingapi.flow.record.FlowRecord; @@ -20,7 +21,7 @@ /** * 抄送节点 */ -public class NotifyNode extends BaseAuditNode { +public class NotifyNode extends BaseAuditNode implements IDisplayNode { public static final String NODE_TYPE = NodeType.NOTIFY.name(); public static final String DEFAULT_NAME = "抄送节点"; diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/RouterNode.java b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/RouterNode.java index daea4d0a..11934aad 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/RouterNode.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/RouterNode.java @@ -5,6 +5,7 @@ import com.codingapi.flow.form.FormMeta; import com.codingapi.flow.manager.NodeStrategyManager; import com.codingapi.flow.node.BaseFlowNode; +import com.codingapi.flow.node.IDisplayNode; import com.codingapi.flow.node.IFlowNode; import com.codingapi.flow.node.NodeType; import com.codingapi.flow.session.FlowSession; @@ -20,7 +21,7 @@ /** * 路由分支节点 */ -public class RouterNode extends BaseFlowNode { +public class RouterNode extends BaseFlowNode implements IDisplayNode { public static final String NODE_TYPE = NodeType.ROUTER.name(); public static final String DEFAULT_NAME = "路由节点"; diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/StartNode.java b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/StartNode.java index 06c24ecb..939456a5 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/StartNode.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/StartNode.java @@ -8,6 +8,7 @@ import com.codingapi.flow.context.GatewayContext; import com.codingapi.flow.manager.NodeStrategyManager; import com.codingapi.flow.node.BaseFlowNode; +import com.codingapi.flow.node.IDisplayNode; import com.codingapi.flow.node.NodeType; import com.codingapi.flow.operator.IFlowOperator; import com.codingapi.flow.record.FlowRecord; @@ -27,7 +28,7 @@ /** * 开始节点 */ -public class StartNode extends BaseFlowNode { +public class StartNode extends BaseFlowNode implements IDisplayNode { public static final String NODE_TYPE = NodeType.START.name(); public static final String DEFAULT_NAME = "开始节点"; diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/SubProcessNode.java b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/SubProcessNode.java index c05a2e4b..0d1fefd3 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/SubProcessNode.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/SubProcessNode.java @@ -3,6 +3,7 @@ import com.codingapi.flow.builder.BaseNodeBuilder; import com.codingapi.flow.manager.NodeStrategyManager; import com.codingapi.flow.node.BaseFlowNode; +import com.codingapi.flow.node.IDisplayNode; import com.codingapi.flow.node.NodeType; import com.codingapi.flow.session.FlowSession; import com.codingapi.flow.strategy.node.INodeStrategy; @@ -16,7 +17,7 @@ /** * 子流程 */ -public class SubProcessNode extends BaseFlowNode { +public class SubProcessNode extends BaseFlowNode implements IDisplayNode { public static final String NODE_TYPE = NodeType.SUB_PROCESS.name(); public static final String DEFAULT_NAME = "子流程"; diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/TriggerNode.java b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/TriggerNode.java index e145b0d4..85f7c227 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/TriggerNode.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/node/nodes/TriggerNode.java @@ -3,6 +3,7 @@ import com.codingapi.flow.builder.BaseNodeBuilder; import com.codingapi.flow.manager.NodeStrategyManager; import com.codingapi.flow.node.BaseFlowNode; +import com.codingapi.flow.node.IDisplayNode; import com.codingapi.flow.node.NodeType; import com.codingapi.flow.session.FlowSession; import com.codingapi.flow.strategy.node.INodeStrategy; @@ -16,7 +17,7 @@ /** * 触发节点 */ -public class TriggerNode extends BaseFlowNode { +public class TriggerNode extends BaseFlowNode implements IDisplayNode { public static final String NODE_TYPE = NodeType.TRIGGER.name(); public static final String DEFAULT_NAME = "触发节点"; diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/pojo/response/ProcessNode.java b/flow-engine-framework/src/main/java/com/codingapi/flow/pojo/response/ProcessNode.java index 00a1f89b..c84565bb 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/pojo/response/ProcessNode.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/pojo/response/ProcessNode.java @@ -1,5 +1,6 @@ package com.codingapi.flow.pojo.response; +import com.codingapi.flow.node.IDisplayNode; import com.codingapi.flow.node.IFlowNode; import com.codingapi.flow.operator.IFlowOperator; import com.codingapi.flow.record.FlowRecord; @@ -35,6 +36,11 @@ public class ProcessNode { */ private String nodeType; + /** + * 是否呈现节点 + */ + private boolean display; + /** * 记录状态 * -1 为历史状态 @@ -59,6 +65,7 @@ public ProcessNode(FlowRecord flowRecord, Workflow workflow) { this.nodeName = flowNode.getName(); this.nodeType = flowNode.getType(); this.operators = new ArrayList<>(); + this.display = true; this.state = STATE_HISTORY; this.operators.add(new FlowOperatorBody(flowRecord)); } @@ -70,6 +77,7 @@ public ProcessNode(IFlowNode flowNode, List operators) { this.nodeType = flowNode.getType(); this.operators = operators.stream().map(FlowOperatorBody::new).toList(); this.state = STATE_NEXT; + this.display = flowNode instanceof IDisplayNode; } diff --git a/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowProcessNodeService.java b/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowProcessNodeService.java index 6083616d..178dbfb0 100644 --- a/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowProcessNodeService.java +++ b/flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowProcessNodeService.java @@ -121,24 +121,10 @@ private class NextNodeLoader { @Getter private final List nodeList; private final IFlowNode currentNode; - private final List displayNodeTypes; public NextNodeLoader(IFlowNode currentNode) { this.currentNode = currentNode; this.nodeList = new ArrayList<>(); - this.displayNodeTypes = new ArrayList<>(); - this.initDisplayNodeTypes(); - } - - - private void initDisplayNodeTypes() { - this.displayNodeTypes.add(NodeType.START.name()); - this.displayNodeTypes.add(NodeType.END.name()); - this.displayNodeTypes.add(NodeType.APPROVAL.name()); - this.displayNodeTypes.add(NodeType.NOTIFY.name()); - this.displayNodeTypes.add(NodeType.HANDLE.name()); - this.displayNodeTypes.add(NodeType.TRIGGER.name()); - this.displayNodeTypes.add(NodeType.SUB_PROCESS.name()); } private void fetchNextNode(FlowSession flowSession, List nexNodes) { @@ -164,7 +150,7 @@ private void fetchNextNode(FlowSession flowSession, List nexNodes) { public List loadNextNode(FlowSession flowSession) { this.fetchNextNode(flowSession,List.of(this.currentNode)); - List displayNodes = nodeList.stream().filter(node-> this.displayNodeTypes.contains(node.getNodeType())).toList(); + List displayNodes = nodeList.stream().filter(ProcessNode::isDisplay).toList(); List processNodeList = new ArrayList<>(); for (ProcessNode node:displayNodes){ if(!processNodeList.contains(node)){ diff --git a/flow-engine-framework/src/test/java/com/codingapi/flow/workflow/WorkflowBuilderTest.java b/flow-engine-framework/src/test/java/com/codingapi/flow/workflow/WorkflowBuilderTest.java index f4b2a323..e2b8a9b8 100644 --- a/flow-engine-framework/src/test/java/com/codingapi/flow/workflow/WorkflowBuilderTest.java +++ b/flow-engine-framework/src/test/java/com/codingapi/flow/workflow/WorkflowBuilderTest.java @@ -9,6 +9,7 @@ import com.codingapi.flow.form.FormMetaBuilder; import com.codingapi.flow.form.permission.PermissionType; import com.codingapi.flow.gateway.impl.UserGateway; +import com.codingapi.flow.node.IDisplayNode; import com.codingapi.flow.node.IFlowNode; import com.codingapi.flow.node.nodes.*; import com.codingapi.flow.strategy.node.FormFieldPermissionStrategy; @@ -157,10 +158,14 @@ void backNodes() { List nackNodes = workflow.getNackNodes(endNode); assertEquals(2, nackNodes.size()); + assertEquals(2, nackNodes.stream().filter(node->node instanceof IDisplayNode).toList().size()); assertTrue(nackNodes.contains(startNode)); assertTrue(nackNodes.contains(approvalNode)); assertFalse(nackNodes.contains(endNode)); + List nodes = workflow.getNodes(); + assertEquals(3, nodes.size()); + assertEquals(3, nodes.stream().filter(node->node instanceof IDisplayNode).toList().size()); } 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 10a3acdf..573457c1 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 @@ -38,9 +38,9 @@ public Response remove(@RequestBody IdRequest request) { @PostMapping("/changeState") public Response changeState(@RequestBody IdRequest request) { Workflow workflow = workflowRepository.get(request.getStringId()); - if(workflow.isDisable()){ + if (workflow.isDisable()) { workflow.enable(); - }else { + } else { workflow.disable(); } workflowRepository.save(workflow); diff --git a/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/pojo/BackNodeRequest.java b/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/pojo/BackNodeRequest.java new file mode 100644 index 00000000..7155cee6 --- /dev/null +++ b/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/pojo/BackNodeRequest.java @@ -0,0 +1,10 @@ +package com.codingapi.flow.api.pojo; + +import lombok.Data; + +@Data +public class BackNodeRequest { + + private String workId; + private String nodeId; +} diff --git a/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/pojo/SelectOption.java b/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/pojo/SelectOption.java new file mode 100644 index 00000000..130d6034 --- /dev/null +++ b/flow-engine-starter-api/src/main/java/com/codingapi/flow/api/pojo/SelectOption.java @@ -0,0 +1,15 @@ +package com.codingapi.flow.api.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SelectOption { + + private String value; + private String label; + +} diff --git a/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/hooks/use-node-router-manager.ts b/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/hooks/use-node-router-manager.ts new file mode 100644 index 00000000..9e652138 --- /dev/null +++ b/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/hooks/use-node-router-manager.ts @@ -0,0 +1,8 @@ +import {useDesignContext} from "@/components/design-panel/hooks/use-design-context"; +import {NodeRouterManager} from "@/components/design-panel/manager/node"; + +export const useNodeRouterManager = ()=>{ + const {state} = useDesignContext(); + const nodes = state.workflow.nodes || []; + return new NodeRouterManager(nodes); +} \ No newline at end of file diff --git a/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/manager/node.ts b/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/manager/node.ts index 9b4a04d0..d3e8a6a6 100644 --- a/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/manager/node.ts +++ b/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/manager/node.ts @@ -1,6 +1,9 @@ import {FlowNode} from "@/components/design-panel/types"; -export class NodeManager { +/** + * 节点数据转换服务 + */ +export class NodeConvertorManager { public static readonly STRATEGY_SUFFIX = 'Strategy'; public static readonly STRATEGY_KEY = 'strategyType'; @@ -60,7 +63,7 @@ export class NodeManager { for (let i = 0; i < strategies.length; i++) { const strategy = strategies[i]; - const key = strategy[NodeManager.STRATEGY_KEY]; + const key = strategy[NodeConvertorManager.STRATEGY_KEY]; strategyMap[key] = { ...strategy } @@ -74,10 +77,10 @@ export class NodeManager { const keys = Object.keys(node); const strategies: any[] = []; for (const key of keys) { - if (key.endsWith(NodeManager.STRATEGY_SUFFIX)) { + if (key.endsWith(NodeConvertorManager.STRATEGY_SUFFIX)) { const strategy = node[key]; strategies.push({ - [NodeManager.STRATEGY_KEY]: key, + [NodeConvertorManager.STRATEGY_KEY]: key, ...strategy, }); } @@ -85,4 +88,36 @@ export class NodeManager { return strategies; } +} + +/** + * 节点关系分析管理,分析所有的节点,可回退的节点等信息 + */ +export class NodeRouterManager { + private readonly nodes: FlowNode[]; + + constructor(nodes: FlowNode[]) { + this.nodes = nodes; + } + + public size() { + return this.nodes.length; + } + + /** + * 查看全部的可选节点 + * TODO 需要对blocks的节点进行展开查看,并提出条件控制节点 + */ + public getNodes() { + return this.nodes; + } + + /** + * 获取可退回的节点 + * TODO 需要对blocks的节点进行展开查看,并提出条件控制节点 + * @param nodeId + */ + public getBackNodes(nodeId: string) { + return this.nodes; + } } \ No newline at end of file diff --git a/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/presenters/index.ts b/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/presenters/index.ts index e7f2d3bf..2a04039e 100644 --- a/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/presenters/index.ts +++ b/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/presenters/index.ts @@ -2,7 +2,7 @@ import {DesignPanelApi, FlowNode, initStateData, State, TabPanelType} from "../t import {Dispatch} from "@flow-engine/flow-core"; import {FormActionContext} from "@/components/design-panel/presenters/form"; import {WorkflowFormManager} from "@/components/design-panel/manager/form"; -import {NodeManager} from "@/components/design-panel/manager/node"; +import {NodeConvertorManager} from "@/components/design-panel/manager/node"; import {WorkflowConvertor} from "@/components/design-panel/presenters/convertor"; export class Presenter { @@ -128,7 +128,7 @@ export class Presenter { public async createNode(form: string, type: string) { const flowNode = await this.api.createNode(type); - const nodeManager = new NodeManager(); + const nodeManager = new NodeConvertorManager(); return nodeManager.toItemRender(flowNode); } diff --git a/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/tabs/flow.tsx b/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/tabs/flow.tsx index 086f8070..ec57f926 100644 --- a/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/tabs/flow.tsx +++ b/frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/tabs/flow.tsx @@ -1,7 +1,7 @@ import React from "react"; import {FlowEditor, FlowEditorAction} from "@/components/design-editor"; import {useDesignContext} from "@/components/design-panel/hooks/use-design-context"; -import {NodeManager} from "@/components/design-panel/manager/node"; +import {NodeConvertorManager} from "@/components/design-panel/manager/node"; export const TabFlow = () => { @@ -10,7 +10,7 @@ export const TabFlow = () => { const actionRef = React.useRef(null); - const nodeManager = new NodeManager(); + const nodeManager = new NodeConvertorManager(); // 注册form行为 React.useEffect(() => { diff --git a/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/condition-view.tsx b/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/condition-view.tsx index 2f6c33f8..d66d276d 100644 --- a/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/condition-view.tsx +++ b/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/condition-view.tsx @@ -4,6 +4,11 @@ import {ViewBindPlugin} from "@flow-engine/flow-types"; import {AdvancedScriptEditor} from "@/components/script/components/advanced-script-editor"; import {DEFAULT_CONDITION_SCRIPT} from "@/components/script/default-script"; +/** + * TODO 条件控制界面 + * @param props + * @constructor + */ export const ConditionPluginView: React.FC = (props) => { const ConditionPluginViewComponent = ViewBindPlugin.getInstance().get(VIEW_KEY); if(ConditionPluginViewComponent){ diff --git a/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/error-trigger-view.tsx b/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/error-trigger-view.tsx index 2dae77f4..76e9269a 100644 --- a/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/error-trigger-view.tsx +++ b/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/error-trigger-view.tsx @@ -10,7 +10,11 @@ import {ViewBindPlugin} from "@flow-engine/flow-types"; const {TextArea} = Input; -// TODO 异常触发界面 +/** + * TODO 异常触发界面 + * @param props + * @constructor + */ export const ErrorTriggerPluginView: React.FC = (props) => { const nodeTitleGroovyConvertor = new NodeTitleGroovyConvertor(props.script, props.variables); const ErrorTriggerPluginViewComponent = ViewBindPlugin.getInstance().get(VIEW_KEY); diff --git a/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/router-view.tsx b/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/router-view.tsx index 0b525695..263f656c 100644 --- a/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/router-view.tsx +++ b/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/router-view.tsx @@ -4,6 +4,11 @@ import {ViewBindPlugin} from "@flow-engine/flow-types"; import {AdvancedScriptEditor} from "@/components/script/components/advanced-script-editor"; import {DEFAULT_ROUTER_SCRIPT} from "@/components/script/default-script"; +/** + * TODO 路由配置界面 + * @param props + * @constructor + */ export const RouterPluginView: React.FC = (props) => { const TriggerPluginViewComponent = ViewBindPlugin.getInstance().get(VIEW_KEY); if(TriggerPluginViewComponent){ diff --git a/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/sub-process-view.tsx b/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/sub-process-view.tsx index c1c4ffef..396e0ff3 100644 --- a/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/sub-process-view.tsx +++ b/frontend/packages/flow-pc/flow-pc-design/src/components/script/plugins/view/sub-process-view.tsx @@ -8,7 +8,11 @@ import {ViewBindPlugin} from "@flow-engine/flow-types"; const {TextArea} = Input; -// TODO 异常触发界面 +/** + * TODO 子流程配置界面 + * @param props + * @constructor + */ export const SubProcessPluginView: React.FC = (props) => { const SubProcessPluginViewComponent = ViewBindPlugin.getInstance().get(VIEW_KEY); if(SubProcessPluginViewComponent){