An increasingly popular application programming model for Grids is to deploy often-used functionalities as remote services on high-performance hosts, following the principles of a service-oriented architecture. Complex applications are created by using several services and specifying a workflow between them. We discuss how workflows of Grid applications can be described easily as High-Level Petri Nets (HLPN), in order to orchestrate and execute distributed applications on the Grid automatically. In order to simplify the handling of complex and large-scale workflows, we introduce hierarchical Grid workflows, making use of the Petri Net refinement paradigm that allows to represent sub-workflows by single graph elements. We show how a complex application, the Barnes-Hut algorithm for N-Body simulation can be expressed as a hierarchical HLPN, using our platform-independent, XML-based Grid Workflow Description Language (GWorkflowDL). We discuss how the GWorkflowDL can be adapted to current Grid technologies, in particular to Java/RMI and the recent WSRF framework.