\documentclass{minimal}
\usepackage{logreq}

% biblatex example
% (this is a mockup of code which will be used in biblatex >= 0.9b)

% sample code:

% \usepackage{biblatex}
% \bibliography{bibfile1,bibfile2,bibfile3}
% \begin{document}
% ...
% \begin{refsection}[bibfile1,bibfile3]
% ...
% \end{refsection}
% ...
% \begin{refsection}[bibfile4,bibfile6,bibfile2]
% ...
% \end{refsection}
% ...
% \begin{refsection}[bibfile5,bibfile6]
% ...
% \end{refsection}
% \end{document}

% workflow:

% latex file	(-> all requests active)
% bibtex file
% bibtex file1-blx
% bibtex file2-blx
% bibtex file3-blx
% latex file	(-> all requests inactive)

% additional bibtex passes may be required to resolve xrefs,
% additional latex passes may be required to resolve labels;
% i.e., the workflow may get as complex as this:

% latex file	(-> all requests active)
% bibtex file
% bibtex file1-blx
% bibtex file2-blx
% bibtex file3-blx
% latex file	(-> all requests inactive)
% bibtex file
% bibtex file1-blx
% bibtex file2-blx
% bibtex file3-blx
% latex file	(-> latex request active, bibtex requests inactive)
% latex file	(-> both requests inactive)

\logrequest[package=biblatex,priority=5,active=1]{
  \generic{bibtex}
  \cmdline{
    \binary{bibtex}
    \option{--min_crossrefs 2}
    \infile{\jobname}
  }
  \input{
    \file{\jobname.aux}
  }
  \output{
    \file{\jobname.bbl}
  }
  \provides[type=dynamic]{
    \file{\jobname.bbl}
  }
  \requires[type=dynamic]{
    \file{\jobname.aux}
    \file{\jobname-blx.bib}
  }
  \requires[type=editable]{
    \let\do=\file
    \docsvlist{bibfile1,bibfile2,bibfile3}
  }
  \requires[type=static]{
    \file{biblatex.bst}
  }
}

\logrequest[package=biblatex,priority=5,active=1]{
  \generic{bibtex}
  \cmdline{
    \binary{bibtex}
    \option{--min_crossrefs 2}
    \infile{\jobname1-blx}
  }
  \input{
    \file{\jobname1-blx.aux}
  }
  \output{
    \file{\jobname1-blx.bbl}
  }
  \provides[type=dynamic]{
    \file{\jobname1-blx.bbl}
  }
  \requires[type=dynamic]{
    \file{\jobname1-blx.aux}
    \file{\jobname-blx.bib}
  }
  \requires[type=editable]{
    \let\do=\file
    \docsvlist{bibfile1,bibfile3}
  }
  \requires[type=static]{
    \file{biblatex.bst}
  }
}

\logrequest[package=biblatex,priority=5,active=1]{
  \generic{bibtex}
  \cmdline{
    \binary{bibtex}
    \option{--min_crossrefs 2}
    \infile{\jobname2-blx}
  }
  \input{
    \file{\jobname2-blx.aux}
  }
  \output{
    \file{\jobname2-blx.bbl}
  }
  \provides[type=dynamic]{
    \file{\jobname2-blx.bbl}
  }
  \requires[type=dynamic]{
    \file{\jobname2-blx.aux}
    \file{\jobname-blx.bib}
  }
  \requires[type=editable]{
    \let\do=\file
    \docsvlist{bibfile4,bibfile6,bibfile2}
  }
  \requires[type=static]{
    \file{biblatex.bst}
  }
}

\logrequest[package=biblatex,priority=5,active=1]{
  \generic{bibtex}
  \cmdline{
    \binary{bibtex}
    \option{--min_crossrefs 2}
    \infile{\jobname3-blx}
  }
  \input{
    \file{\jobname3-blx.aux}
  }
  \output{
    \file{\jobname3-blx.bbl}
  }
  \provides[type=dynamic]{
    \file{\jobname3-blx.bbl}
  }
  \requires[type=dynamic]{
    \file{\jobname3-blx.aux}
    \file{\jobname-blx.bib}
  }
  \requires[type=editable]{
    \let\do=\file
    \docsvlist{bibfile5,bibfile6}
  }
  \requires[type=static]{
    \file{biblatex.bst}
  }
}

\ltxrequest{biblatex}{1}{
  \provides[type=dynamic]{
    \file{\jobname.aux}
    \file{\jobname1-blx.aux}
    \file{\jobname2-blx.aux}
    \file{\jobname3-blx.aux}
    \file{\jobname-blx.bib}
  }
  \requires[type=dynamic]{
    \file{\jobname.bbl}
    \file{\jobname1-blx.bbl}
    \file{\jobname2-blx.bbl}
    \file{\jobname3-blx.bbl}
  }
  \requires[type=static]{
    \let\do=\file
    \docsvlist{biblatex.def,numeric.bbx,standard.bbx,numeric.cbx,
               biblatex.cfg,american.lbx,english.lbx}
  }
}

\begin{document}
\end{document}
