class AssignmentsEditorWidget extends Composite implements HasValue<String> {

    public void showDataIOEditor(final String datatypes) {
        String taskName = getTaskName();
        String processvars = getProcessVariables();

        Map<String, String> assignmentsProperties = AssignmentParser.parseAssignmentsInfo(assignmentsInfo);
        String datainput = assignmentsProperties.get(AssignmentParser.DATAINPUT);
        String datainputset = assignmentsProperties.get(AssignmentParser.DATAINPUTSET);
        String dataoutput = assignmentsProperties.get(AssignmentParser.DATAOUTPUT);
        String dataoutputset = assignmentsProperties.get(AssignmentParser.DATAOUTPUTSET);
        String assignments = assignmentsProperties.get(AssignmentParser.ASSIGNMENTS);

        String disallowedpropertynames = getDisallowedPropertyNames();

        String inputvars = null;
        if (datainput != null) {
            inputvars = datainput;
        }
        if (datainputset != null) {
            inputvars = datainputset;
        }
        String outputvars = null;
        if (dataoutput != null) {
            outputvars = dataoutput;
        }
        if (dataoutputset != null) {
            outputvars = dataoutputset;
        }
        AssignmentData assignmentData = new AssignmentData(inputvars,
                                                           outputvars,
                                                           processvars,
                                                           assignments,
                                                           datatypes,
                                                           disallowedpropertynames);
        assignmentData.setVariableCountsString(hasInputVars,
                                               isSingleInputVar,
                                               hasOutputVars,
                                               isSingleOutputVar);

        ActivityDataIOEditor.GetDataCallback callback = assignmentDataJson -> {
            AssignmentData assignmentData1 = Marshalling.fromJSON(assignmentDataJson,
                                                                  AssignmentData.class);
            String assignmentsInfoString = createAssignmentsInfoString(assignmentData1);
            setValue(assignmentsInfoString,
                     true);
        };

        activityDataIOEditor.setCallback(callback);
        activityDataIOEditor.setAssignmentData(assignmentData);
        activityDataIOEditor.setDisallowedPropertyNames(assignmentData.getDisallowedPropertyNames());
        activityDataIOEditor.setInputAssignmentRows(assignmentData.getAssignmentRows(Variable.VariableType.INPUT));
        activityDataIOEditor.setOutputAssignmentRows(assignmentData.getAssignmentRows(Variable.VariableType.OUTPUT));
        activityDataIOEditor.setDataTypes(assignmentData.getDataTypes(),
                                          assignmentData.getDataTypeDisplayNames());
        activityDataIOEditor.setProcessVariables(assignmentData.getProcessVariableNames().stream()
                                                         .distinct()
                                                         .collect(Collectors.toList()));
        activityDataIOEditor.configureDialog(taskName,
                                             hasInputVars,
                                             isSingleInputVar,
                                             hasOutputVars,
                                             isSingleOutputVar);
        activityDataIOEditor.show();
    }

      AssignmentsEditorWidget(final BPMNDefinition bpmnModel,
                            final String assignmentsInfo,
                            final boolean hasInputVars,
                            final boolean isSingleInputVar,
                            final boolean hasOutputVars,
                            final boolean isSingleOutputVar,
                            final SessionManager canvasSessionManager,
                            final GraphUtils graphUtils);
    public  AssignmentsEditorWidget();

}