Get Flow Tree
Source URL: https://docs.bullmq.io/guide/flows/get-flow-tree
Get Flow Tree
Section titled “Get Flow Tree”In some situations, you need to get a job and all of its children, grandchildren, and so on.
The pattern to solve this requirement consists of using the getFlow method.
const flow = new FlowProducer({ connection });
const originalTree = await flow.add({ name: 'root-job', queueName: 'topQueueName', data: {}, children: [ { name, data: { idx: 0, foo: 'bar' }, queueName: 'childrenQueueName', children: [ { name, data: { idx: 4, foo: 'baz' }, queueName: 'grandchildrenQueueName', }, ], }, { name, data: { idx: 2, foo: 'foo' }, queueName: 'childrenQueueName', }, { name, data: { idx: 3, foo: 'bis' }, queueName: 'childrenQueueName', }, ],});
const { job: topJob } = originalTree;
const tree = await flow.getFlow({ id: topJob.id, queueName: 'topQueueName',});
const { children, job } = tree;{% hint style=“info” %}
Each child may have a job property and in the case they have children as well, they would have the children property
{% endhint %}
You may also need a way to limit that information if you have many children for one of the job nodes.
const limitedTree = await flow.getFlow({ id: topJob.id, queueName: 'topQueueName', depth: 1, // get only the first level of children maxChildren: 2, // get only 2 children per node});
const { children, job } = limitedTree;