public void activate(String id) {

    boolean needActivate = true;
    if (_activePhaseMethod != null) {
      if (!_activePhaseMethod.getId().equals(id)) {
        deactivateCurrentActive();
      } else {
        needActivate = false;
      }
    }

    if (needActivate) {
      _activePhaseMethod = getPhaseMethod(id);
      if (_activePhaseMethod != null) {
        _activePhaseMethod.activate();
      }
    }
  }
  public PhaseMethod getPhaseMethod(String id) {

    if (_phasesMethod.containsKey(id)) {
      return _phasesMethod.get(id);

    } else {
      try {

        PhaseMethodRegistryExtension phaseMethodRegistry = getRegistry(id);

        PhaseMethod phaseMethod = new PhaseMethod();
        phaseMethod.setId(id);
        phaseMethod.setName(phaseMethodRegistry.getAttribute(EPhaseMethodElements.name));
        phaseMethod.setRegistryExtension(phaseMethodRegistry);

        _phasesMethod.put(id, phaseMethod);

        return phaseMethod;

      } catch (Exception e) {
        return null;
      }
    }
  }
 public void deactivateCurrentActive() {
   if (_activePhaseMethod != null) {
     _activePhaseMethod.deactivate();
     _activePhaseMethod = null;
   }
 }