You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flower.js跨Flow跳转:如何从Flow A节点跳转到Flow B指定节点?

Flower跨流程跳转实现方案

问题分析

你当前的代码未处理当前流程的终止操作,且未确保目标流程实例就绪后再执行跳转,导致跨流程跳转失效。要实现从流程A(partners)跳转到流程B(events)的指定节点,需完成「终止当前流程」+「初始化目标流程并跳转」两个核心步骤。

修正后的代码实现

自动触发跳转(如进入节点后立即跳转)

import { useEffect } from 'react';
import { Loader } from '@components';
import { useFlower } from '@flowerforce/flower-react';

const NavigateToEvents = () => {
  // 获取当前运行的partners流程实例
  const { stop: stopPartnersFlow } = useFlower({ flowName: "partners" });
  // 获取目标events流程实例
  const { jump: jumpToEventsNode } = useFlower({ flowName: "events" });

  useEffect(() => {
    const executeJump = async () => {
      // 1. 终止当前partners流程,避免多流程冲突
      await stopPartnersFlow();
      // 2. 跳转到events流程的eventDetail节点
      await jumpToEventsNode("eventDetail");
    };

    executeJump();
  }, [stopPartnersFlow, jumpToEventsNode]);

  return <Loader />;
};

用户交互触发跳转(如按钮点击)

如果是根据用户选择触发跳转,可将逻辑绑定到交互事件:

import { useFlower } from '@flowerforce/flower-react';

const JumpButton = () => {
  const { stop: stopPartnersFlow } = useFlower({ flowName: "partners" });
  const { jump: jumpToEventsNode } = useFlower({ flowName: "events" });

  const handleJump = async () => {
    await stopPartnersFlow();
    await jumpToEventsNode("eventDetail");
  };

  return <button onClick={handleJump}>跳转到活动详情</button>;
};

关键注意事项

  • 确认目标节点ID(eventDetail)与流程定义中的节点ID完全一致,拼写错误会导致跳转失败。
  • 若跳转后无响应,检查Flower版本是否兼容当前API,部分版本可能需要显式调用init()方法初始化目标流程。
  • 必须终止当前流程,否则两个流程同时运行会导致状态冲突,影响渲染逻辑。

内容的提问来源于stack exchange,提问作者Francesco Sanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:02:13