How to attach a sequence with a particular sequencer?

I have 3 sequences, and 4 sequencers.

I want sequencer1 to run sequence1,
sequencer2 to run sequence1,
sequencer3 to run sequence2, sequence3 in serial order.
sequencer4 to run sequence1, sequence2 in serial order.

One method to do so is inside the test class

task run_phase(uvm_phase phase);
fork
sequence1.start(sequencer1);
sequence1.start(sequencer2);
begin
sequence2.start(sequencer3);
//wait for request…
sequence3.start(sequencer3);
end
begin
sequence2.start(sequencer4);
//wait for req…
sequence1.start(sequencer4);
end
join
endtask

How can I do the same inside each of the sequencers, than doing inside test?

In reply to smukerji:

To implement this functionality you have to define a virtual sequence. It describes which sequence is executed on which sequencer and how they are working together.
From the test this virtual sequence will be started.