サブフロー
サブフローは、本質的にノード内に含まれるフローです。サブフローは独立したエンティティとして機能することも、親ノードの外にあるノードと相互接続することもできます。この機能は、ノードをグループ化するために使用できます。このドキュメントのセクションでは、サブフローを含むフローを実装し、子ノードで使用可能なオプションについて説明します。
ノードの順序: 正しく処理されるように、親ノードは子ノードの前にnodes
配列に表示する必要があります。
子ノードの定義
ノードを別のノードの子として定義するには、parentId
オプションを使用する必要があります(すべてのオプションのリストはノードオプションセクションにあります)。これを行うと、子ノードは親ノードを基準に配置されます。{ x: 0, y: 0 }
の位置は、親ノードの左上隅です。
const nodes = writable([
// this is a regular node
{
id: 'A',
data: {},
position: { x: 0, y: 0 },
},
// this gets a child node by using the parentId option
{
id: 'B',
data: { label: 'child 1' },
position: { x: 10, y: 10 },
// 👇
parentId: 'A',
},
]);
次の例では、style
オプションを使用して、親ノードの幅と高さを固定で定義します。さらに、子ノードの範囲を「親」に設定して、親ノードの境界を超えて子ノードが移動するのを制限します。
子ノードの動作
親ノードをドラッグすると、子ノードもそれに応じて移動することに気付くでしょう。parentId
オプションを使用してノードを別のノードに追加すると、親ノードを基準に配置されます。マークアップの観点からは、子ノードは従属ではありません。extent: 'parent'
オプションが設定されていない場合、親ノードの外側に子ノードをドラッグまたは配置できます。それにもかかわらず、親ノードをドラッグすると、子ノードも移動します。
この例では、親ノードにgroup
タイプを使用しています。「group」タイプはハンドルがない便利なノードタイプですが、これには他のノードタイプを使用することもできます。
さらにノードとエッジを追加してみましょう。ご覧のとおり、グループ内のノードを接続し、サブフローから外部ノードへの接続を作成できます。
任意のノードを親ノードにできる
これを示すために、ノードBからラベルを削除し、いくつかの子ノードを追加してみましょう。この例は、デフォルトのノードタイプの1つを親として使用する柔軟性を示しています。さらに、子ノードにdraggable: false
を設定して、移動できないようにします。