Modelling, Optimization and Execution of Workflow Applications with Data Distribution, Service Selection and Budget Constraints