Блоки это обычные html div,
используем
jquery - общий функционал
jquery ui dragable - для перемещения блоков
jquery ui resize - для изменения размеров блоков
при перемещении блока нужно отловить событии и переместить все связанные линии следом.
при удалении блока нужно отловить событие и удалить все связанные через таргет или source линии.
связи реализуются силами SVG,
один из примеров SVG линий из библиотеки raphael
http://raphaeljs.com/graffle.html
схема описывается как граф. (использовать обьекты или массивы для описания нод и рёбер, это скорее дело вкуса)
model={
node:{
"1":{x:10,y:10,width:50,height:20,text:"я первый блок"},
"2":{x:110,y:110,width:50,height:20,text:"я второй блок"}
},
edge:{
"3":{source:"1", target:"2" }
}
}