A semantics for workflow processes is proposed, based on tasks that have a duration and may be executed concurrently. The semantics supports operators that can be used to compose processes from simpler ones. An important operator is refinement, replacing a task by a process. By abstracting from certain tasks, a related notion allows verifications based upon step by step reduction of the process. The approach is illustrated by means of an example Petri net model.