It depends on how you're launching the EVL script from your job. Since you're running the EVL script from Eclipse, you're probably calling EclipseContextManager#setup to set up Eclipse integration for the context of the EVL module, right?
IBatchValidator validator = (IBatchValidator) ModelValidationService.getInstance().newValidator(EvaluationMode.BATCH); ... validator.validate(myObject);
EObject target = ctx.getTarget(); Diagnostician diagnostician = new MyDiagnostician(); Diagnostic diagnostics = diagnostician.validate(target);
There's a version of setup that takes both the IEolContext and an IProgressMonitor. If you tie up the return value of the IProgressMonitor#isCanceled() method to the cancel button, the EVL script should be cancelled properly when the user hits the cancel button.
As for the progress bar, I don't think we have anything in Epsilon for that. Could you file a feature request for that? How should we measure progress? Should we measure progress by the number of checked constraints, or by the number of checked objects? I think the second option won't scale well to large models, though.