code: private void processTasks() throws SQLException
     {
        //
        // Yes... we could probably read this in one query in the right order
        // using a CTE... but life's too short.
        //
        List<Row> rows = getRows("select * from zscheduleitem where zproject=? and zparentactivity_ is null and z_ent=? order by zorderinparentactivity", m_projectID, m_entityMap.get("Activity"));
        for (Row row : rows)
        {
           Task task = m_project.addTask();
           populateTask(row, task);
           processChildTasks(task);
        }
     }
docs: Read all top level tasks.