class DataSetBasicAttributesWorkflow extends DataSetEditorWorkflow<T> {

    public DataSetEditorWorkflow basicAttributesEdition() {
        checkDataSetDefNotNull();

        dataSetDefBasicAttributesDriver = beanManager.lookupBean(DataSetDefBasicAttributesDriver.class).newInstance();
        dataSetDefBasicAttributesDriver.initialize(basicAttributesEditor);
        dataSetDefBasicAttributesDriver.edit(getDataSetDef());

        driver = beanManager.lookupBean( getDriverClass() ).newInstance();
        editor = beanManager.lookupBean( getEditorClass() ).newInstance();
        driver.initialize(editor);
        driver.edit(getDataSetDef());

        this.flushCommand = new Command() {
            @Override
            public void execute() {
                flush(dataSetDefBasicAttributesDriver);
                flush(driver);
            }
        };

        this.stepValidator = new Command() {
            @Override
            public void execute() {

                // Data set definition basic attributes validation.
                Iterable<ConstraintViolation<?>> basicAttsViolations = validatorProvider.validateBasicAttributes(getDataSetDef());
                dataSetDefBasicAttributesDriver.setConstraintViolations(basicAttsViolations);
                addViolations(basicAttsViolations);

                Iterable<ConstraintViolation<?>> violations = validate();
                driver.setConstraintViolations(violations);
                addViolations(violations);
            }
        };

        // Show the view.
        view.clearView();
        view.add(basicAttributesEditor.asWidget());
        view.add(((IsWidget) editor));

        return this;
    }

    @Inject public  DataSetBasicAttributesWorkflow(final DataSetClientServices clientServices,
                                          final DataSetValidatorProvider validatorProvider,
                                          final SyncBeanManager beanManager,
                                          final DataSetDefBasicAttributesEditor basicAttributesEditor,
                                          final Event<SaveRequestEvent> saveRequestEvent,
                                          final Event<TestDataSetRequestEvent> testDataSetEvent,
                                          final Event<CancelRequestEvent> cancelRequestEvent,
                                          final View view);

}