\pgfdeclarelayer{background layer}
\pgfsetlayers{background layer,main}




\begin{tikzpicture}
  \tikzstyle{getstyle}=[fill opacity=1,draw opacity=1]
  \tikzstyle{programnode}=[minimum height=0.75cm, text width=2cm, text centered, draw=black,fill opacity=0.8];
  \useasboundingbox (0,-4) rectangle (13,3);
  %\draw (8,2.5) node[name=keywords,style=programnode,anchor=west,text width=2cm,fill=yellow!90] {\small Keywords};
  \draw (2,1) node[name=mail_in,style=programnode,style=getstyle,anchor=west,fill=blue!60] {\small Mail In};
  \draw (2,0) node[name=spamscan,style=programnode,style=getstyle,anchor=west,fill=green!60] {\small spamscan};
  \draw (2,0) node[name=spam,style=programnode,style=getstyle,anchor=west,fill=red!60] {\small spam};
  \draw (2,-1) node[name=processall,style=programnode,style=getstyle,anchor=west,fill=green!60] {\small processall};
  \draw (0.75,-2) node[name=service,style=programnode,style=getstyle,anchor=west,fill=green!60] {\small service};
  \draw (3.25,-2) node[name=process,style=programnode,style=getstyle,anchor=west,fill=green!60] {\small process};
  \draw[style=getstyle,-stealth,line width = 1pt] (mail_in.-90) -- (spamscan.90);
  \draw[style=getstyle,-stealth,line width = 1pt] (spamscan.-90) -- (processall.90);
  \draw[style=getstyle,-stealth,line width = 1pt] (processall.-120) -- (service.60);
  \draw[style=getstyle,-stealth,line width = 1pt] (processall.-60) -- (process.60);
  
  \draw (5.5,-2) node[name=db-h,style=programnode,style=getstyle,anchor=west,fill=yellow!60] {\small db-h};
  \draw[style=getstyle,-stealth,line width = 1pt] (process.-90) |- (6.4,-2.75) -- (db-h.-120);
  \draw[style=getstyle,-stealth,line width = 1pt] (service.-90) |- (6.85,-3) -- (db-h.-60);
  \draw (5.5,-1) node[name=indexes,style=programnode,style=getstyle,anchor=west,fill=yellow!60] {\small indexes};
  \draw[style=getstyle,-stealth,line width = 1pt] (db-h.90) -- (indexes.-90);
  \draw (5.5,0) node[name=cgi,style=programnode,style=getstyle,anchor=west,fill=blue!20] {\small cgi/...};
  \draw[style=getstyle,-stealth,line width = 1pt] (indexes.90) -- (cgi.-90);

  \draw (8,-2) node[name=loadsql,style=programnode,style=getstyle,anchor=west,fill=green!60] {\small debbugs-loadsql};
  \draw[style=getstyle,-stealth,line width = 1pt] (db-h.0) -- (loadsql.180);
  \draw (8,-0.9) node[name=database,style=programnode,style=getstyle,anchor=west,fill=yellow!60] {\small database};
  \draw[style=getstyle,-stealth,line width = 1pt] (loadsql.90) -- (database.-90);
  \draw[style=getstyle,-stealth,line width = 1pt] (database.90) |- (cgi.0);

  % \draw (2,1) node[name=parse_ncbi,style=programnode,style=parsestyle,anchor=west,fill=red!60] {\small parse\_ncbi\_results};
  % \draw (2,0) node[name=parse_genecard,style=programnode,style=parsestyle,anchor=west,fill=red!60] {\small parse\_genecard\_results};
  % \draw (2,-1) node[name=parse_harvester,style=programnode,style=parsestyle,anchor=west,fill=red!60] {\small parse\_harvester\_results};
  % \draw[-stealth,style=parsestyle,line width = 1pt] (get_harvester) -- (parse_harvester);
  % \draw[-stealth,style=parsestyle,line width = 1pt] (get_ncbi) -- (parse_ncbi);
  % \draw[-stealth,style=parsestyle,line width = 1pt] (get_genecard) -- (parse_genecard);
  % \draw (1,0) node[name=combine_results,style=programnode,style=combinestyle,anchor=center,fill=green!40,rotate=90,text width=3cm] {\small combine\_results};
  % \draw[-stealth,style=combinestyle,line width = 1pt] (parse_harvester.west) -- (combine_results);
  % \draw[-stealth,style=combinestyle,line width = 1pt] (parse_ncbi.west) -- (combine_results);
  % \draw[-stealth,style=combinestyle,line width = 1pt] (parse_genecard.west) -- (combine_results);
  % 
  % \draw (2,-2) node[name=expert_judgement,style=programnode,style=expertstyle,anchor=west,fill=blue!20!red!20] {\small Expert Information};
  % \draw[-stealth,line width = 2pt,style=expertstyle] (combine_results.north) -| (0.25,-2) -- (expert_judgement.west);
  % 
  % \draw (7,-2) node[name=snp_selection,style=programnode,style=snpselectionstyle,anchor=west,fill=blue!20!red!20] {\small SNP Selection};
  % \draw[-stealth,style=snpselectionstyle,line width = 1pt] (expert_judgement) -- (snp_selection);
\end{tikzpicture}

% Use only<>{} to get the above to change appropriately