@Override
	public final void execute() 
	{
		if (verbose) {
			System.out.println("verbose: " + verbose);
			System.out.println("debug: " + debug);
			System.out.println("dump: " + dump);
			System.out.println("concurrent:" + concurrent);
			System.out.println("report:" + report);
			System.out.println("analyze:" + analyze);
		}

		if (workflow != null && workflow.getFilename() != null) {
			final File workflowFile = new File(workflow.getFilename());
			
			if (workflowFile.isFile()) 
			{
				final AzotTaskWorkflowStarter starter = new AzotTaskWorkflowStarter(workflowFile.getAbsolutePath());
				starter.run();
			} 
			else if (workflowFile.isDirectory()) 
			{
				final File[] workflowFiles = workflowFile.listFiles();
				for (final File file : workflowFiles) {
					if (file.getName().endsWith(".xml")) {
						final AzotTaskWorkflowStarter starter = new AzotTaskWorkflowStarter(file.getAbsolutePath());
						if (concurrent) {
							final Thread workflowThread = new Thread(antWorkflowStarterGroup, starter);
							workflowThread.start();	
						} else {
							starter.run();
						}
					}
				}
			}
		}

		while (antWorkflowStarterGroup.activeCount() > 0) {
			try {
				Thread.sleep(1000);
			} catch (final InterruptedException e) {
				throw new AzotException(e);
			}
		}
	}