Here's one possibility using a chain
(requires the chains
library) and some styles; the "Begin" shape was produced using a signal
shape (with signal to east and west
) from the shapes.symbols
library; the "Accept" shape is a diamond
from the shapes.geometric
library:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{chains,fit,positioning,shapes.symbols,shapes.geometric}
\definecolor{myblue}{RGB}{89,142,213}
\definecolor{myred}{RGB}{199,101,93}
\newcounter{myframe}
\tikzset{
common/.style={
text width=4cm,
align=center,
text depth=1.75ex,
text height=3ex,
thick},
mynode/.style={
common,
draw=#1,
on chain,
join},
mytitle/.style={
common,
draw=none,
fill=#1!20},
every join/.style={->},
begin/.style={
common,
signal,
draw=green!65!black,
signal to=east and west},
accept/.style={
common,
shape aspect=2,
diamond,text width=1.5cm},
end/.style={
common,
draw,
rounded corners=12pt,
text width=2cm}
}
\newcommand\TitleBox[5][15pt]{%
\stepcounter{myframe}%
\node[thick,draw=#4,rounded corners=#1,fit=(#2) (#3),inner xsep=40pt,inner ysep=8pt] (f\themyframe) {};
\fill[#4]
([yshift=-#1-5pt]f\themyframe.north west) --
([yshift=-#1]f\themyframe.north west)
arc[start angle=180, end angle=90,radius=#1] --
([xshift=#1]f\themyframe.north west) --
([xshift=-#1]f\themyframe.north east)
arc[start angle=90, end angle=0,radius=#1] --
([yshift=-#1]f\themyframe.north east) --
([yshift=-#1-5pt]f\themyframe.north east) -- cycle;
\node at ([yshift=-0.5*#1-0.3ex]f\themyframe.north) {#5};
}
\begin{document}
\begin{tikzpicture}[
start chain=going below,
>=latex,
node distance = 0.7cm,
yscale=0.9,transform shape
]
\node[begin] (begin) {Begin};
\begin{scope}[every join/.append style={myblue}]
\node[mynode=myblue,below=2cm of begin] (a1) {A1};
\coordinate (aux1) at ([yshift=40pt]a1);
\node[mynode=myblue] (a2) {A2};
\node[mynode=myblue] (a3) {A3};
\end{scope}
\begin{scope}[every join/.append style={myred}]
\node[mynode=myred,yshift=-1.2cm] (b1) {B1};
\coordinate (aux2) at ([yshift=40pt]b1);
\node[mynode=myred] (b2) {B2};
\node[mynode=myred] (b3) {B3};
\node[draw=myred,accept,on chain,join] (acc) {Accept?};
\node[below=-10pt of acc,text width=4cm] (aux3) {};
\end{scope}
\node[mynode=black,below=1.1cm of acc] (c1) {C1};
\node[end,on chain,join] (end) {End};
\node[label=above right:Yes] at (c1.north) {};
\TitleBox{aux1}{a3}{myblue}{Framework A}
\TitleBox{aux2}{aux3}{myred}{Framework B}
\draw[->,myblue] (begin) -- (a1.north);
\draw[->,myred] ([yshift=-12pt]aux2) -- (b1.north);
\draw[->,myred] (acc.east) -- node[above,black] {No} +(17pt,0) |- (b1);
\end{tikzpicture}
\end{document}

The frame with a title around some nodes is produced with the command
\TitleBox[<length>]{<coordinate1>}{<coordinate2>}{<color>}{<title>}
that uses the fit
library to produce a fitting shape for the coordinates <coordinate1>
and <coordinate2>
using the color specified by <color>
and produces the title given in the fourth argument. The optional argument gives control over the rounded corners
value used (default=15pt
).
begin
shape you can refer to TikZ picture shapes where a bunch of style for flow charts are defined.