Switched arguments to the WorkflowException, WorkflowTaskException - which now always takes a string message as the first argument, and named arguments thereafter to be consistent with all other error messages in Python.
Consistently raise ValidationExceptions whenever we encounter an error anywhere during parsing of xml.
The BPMN/WorkflowTaskExecException is removed, in favor of just calling a WorkflowTaskException. There is nothing BPMN Specific in the logic, so no need for this.
Consolidated error message logic so that things like "Did you mean" just get added by default if possible. So we don't have to separately deal with that logic each time.
Better Error messages for DMN (include row number as a part of the error information)
Validators now catch more general exceptions from lxml
When catching errors, check to see if they are SpiffWorkflow errors already, and if so, just add a note to help provide additional context for the error.
2) MultInstance functions as a mixin, and should not overwrite the spec_type, a releating User Task is stil a User Task
3) We implemented "Did you mean ..." twice - and with the latest changes to the PythonScriptEngine.py and DMNEngine.py, we can do it once. - Removed the check in the DMNEngine, and improved in exceptions.py
4) The Python Script engines "evaluate" method should accept external methods.
5) The Levenshtein function should return a list, not a list coverted to a string.
6) For the base excetion handler, don't stuff the name of the task infront of the error, it's passed along as the sender - no need to alter the message.