public void start() {
		if (AzotConfig.GLOBAL.DEBUG) {
			final List<Variable> workflowVariables = workflow.getContext().getVariables();
			for (final Variable variable : workflowVariables) {
				if (variable.getId() != null && !variable.getId().startsWith("azot-")) {
					println("Available variable: ${" + variable.getId() + "} = " + variable.getValue() + " [" +variable+ "]");
				}
			}
		}

		if (AzotConfig.GLOBAL.DUMP || AzotConfig.GLOBAL.REPORT) {
			if (AzotConfig.GLOBAL.DEBUG) {
				println("Output file: " + workflowReport.getOutputDirectory().getAbsolutePath());
			}
		}

		println("==========================================================================================");

		final List<Object> executables = workflow.getCallsAndWorkflowsAndLoops();
		processExecutables(executables, 0);

		if (AzotConfig.GLOBAL.REPORT) {
			final List<Variable> workflowVariables = workflow.getContext().getVariables();
			for (final Variable workflowVariable : workflowVariables) {
				if (workflowVariable.isReport()) {
					workflowReport.getVariables().put(workflowVariable.getId(), workflowVariable.getValue());
				}
			}
			workflowReport.dump();
		}
	}