Le framework UIMA permet de mettre en place des annotations sur des textes (ou d'autres informations non structurées). Ces annotations sont définies en amont par le TypeSystem en reprenant les paradigms de la programmation orientée objet : héritage, composition, ... Le framework offre alors des méthodes permettant de placer ces annotations, les récupérer, les manipuler.

Il est de bon ton de fixer les noms des paramètres comme des constantes de classe et d'avoir une variable pour récupérer la valeur passée :

private final static String PARAM_TYPE = "NomDuParamètreDansDescripteur";
private String theParameterTypeStr;

La récupération de la valeur du paramètre doit se faire dans la méthode initialize du composant, il s'agit pour le moment uniquement du nom du type (ex: 'org.apache.uima.TokenType') :

@Override
public void initialize(UimaContext context) throws ResourceInitializationException {
  ...
  theParameterTypeStr = (String) context.getConfigParameterValue(PARAM_TYPE);
  ...
}

La récupération du type en tant qu'objet ne peut se faire qu'en présence d'un CAS, en d'autres termes, dans la méthode process :

@Override
public void process(JCas jcas) throws AnalysisEngineProcessException {
  ...
  Type mMonType  = cas.getTypeSystem().getType(theParameterTypeStr);
  // On s'assure que le type existe bien
  if (  (mTokenType == null) ) {
    String errmsg = "Le type " + theTokenTypeStr + " n'est pas déclaré dans le TypeSystem !";
    throw new AnalysisEngineProcessException(errmsg, new Object[]{mTokenType});
  }
  // Après il s'agit de manipulations classiques !
  AnnotationIndex idxMonType   =
     (AnnotationIndex) cas.getAnnotationIndex(mMonType);
  FSIterator monTypeIt = idxMonType.iterator();
  while (monTypeIt.hasNext()) {
    // On peut le manipuler comme on veut ...
  }
  ...
}

Voilà, désormais il est possible de paramétrer les types à utiliser, ce qui rend les composants plus souples...