code: public static Process getProcessSmart(AssetVersionSpec spec) throws DataAccessException {
          if (spec.getPackageName() == null)
              throw new DataAccessException("Spec must be package-qualified: " + spec);
          Process match = null;
          String specQualifiedName = spec.getQualifiedName();
          if (specQualifiedName.endsWith(".proc"))
              specQualifiedName = specQualifiedName.substring(0, specQualifiedName.length() - 5);
          for (Process process : getAllProcesses()) {
              if (specQualifiedName.equals(process.getQualifiedName())) {
                  if (process.meetsVersionSpec(spec.getVersion()) && (match == null || process.getVersion() > match.getVersion()))
                      match = process;
              }
          }
          if (match == null) {
              return null;
          }
          else {
              return getProcess(match.getId());
          }
      }
docs: Either a specific version number can be specified, or a Smart Version can be specified which designates an allowable range.
  @see com.centurylink.mdw.model.asset.Asset#meetsVersionSpec(String)