In previous work, JavaSymphony has been introduced as a high-level programming model for performance-oriented distributed and parallel Java programs. We have extended JavaSymphony to simplify the development of Grid applications, allowing the programmer to control parallelism, load balancing, and locality at a high level of abstraction. In this paper, we introduce new features to support the widely popular workflow paradigm. The overall idea is to provide a high-level programming paradigm that shields the programmer from low level implementation details such as RMI, sockets, and threads. Experiments are presented to demonstrate the usefulness of JavaSymphony as a programming paradigm for the Grid.