1. A computer-implemented method for executing a task model at runtime, the method comprising: providing a task model comprising a plurality of tasks, wherein the task model defines: semantic relationships between the tasks, the semantic relationships including parent and child relationships between the tasks and indications that one of the tasks is an alternative for another one of the tasks, and an input port and an export port for exchanging between tasks that have different parent tasks; executing an application, using a processor, to schedule one or more of the tasks; monitoring the state of one or more of the tasks; detecting a change in the state of one or more of the tasks; generating, during runtime execution of the application, a graphical user interface that presents one or more tasks for selection; monitoring a selection of one or more tasks through the graphical user interface by a plurality of users, the selection changing the state of one or more of the tasks; learning characteristics of a user from a user's task selection history; updating, during runtime execution of the application, the task model based on the changes in the state of one or more of the tasks; updating the task model based on the learned characteristics; and modifying, during runtime execution of the application, the graphical user interface based on the updated task model.