public Result isValid() {
   if (!Strings.isValid(getSubject())) {
     return new Result("Must enter subject");
   }
   if (!Strings.isValid(getBody())) {
     return new Result("Must enter body");
   }
   if (workflows.isEmpty()) {
     return new Result("No workflows dropped");
   }
   for (Artifact workflow : workflows) {
     if (!(workflow instanceof AbstractWorkflowArtifact)) {
       return new Result(
           "Only valid for Workflow Artifacts, not [%s]", workflow.getArtifactTypeName());
     }
   }
   return Result.TrueResult;
 }