public boolean runWithEntity(IEntity<?> entity) {
    super.beforeRun();

    boolean result = false;

    /* Verifica se a entidade é compatível */
    /* Verifica se a entidade passada eh um DocumentoCobranca ou pertence eh descendente */
    if (ClassUtils.isAssignable(entity.getInfo().getType(), Contrato.class)) {
      Contrato oContrato = (Contrato) entity.getObject();
      this.cpfCnpj = oContrato.getPessoa().getDocumento();

      /* Alguns dados poderao ser inicializados aqui */
      this.categoriaContratoId = IDAO.ENTITY_UNSAVED;

      /* Define as datas de vencimento e recebimento amplas */
      Calendar dataInicial = CalendarUtils.getCalendar(1900, Calendar.JANUARY, 1);
      Calendar dataAtual = CalendarUtils.getCalendar();

      this.dataVencimentoInicial = (Calendar) dataInicial.clone();
      this.dataVencimentoFinal = (Calendar) dataAtual.clone();

      this.dataRecebimentoInicial = (Calendar) dataInicial.clone();
      this.dataRecebimentoFinal = (Calendar) dataAtual.clone();

      /* Não executa nada, pois o processo gera um PDF e é importante
       * que o operador defina as propriedades do relatório antes de gerar o PDF */
      result = true;
    } else if (ClassUtils.isAssignable(entity.getInfo().getType(), Pessoa.class)) {
      Pessoa oPessoa = (Pessoa) entity.getObject();
      this.cpfCnpj = oPessoa.getDocumento();

      /* Alguns dados poderao ser inicializados aqui */
      this.categoriaContratoId = IDAO.ENTITY_UNSAVED;

      /* Define as datas de vencimento e recebimento amplas */
      Calendar dataInicial = CalendarUtils.getCalendar(1900, Calendar.JANUARY, 1);
      Calendar dataAtual = CalendarUtils.getCalendar();

      this.dataVencimentoInicial = (Calendar) dataInicial.clone();
      this.dataVencimentoFinal = (Calendar) dataAtual.clone();

      this.dataRecebimentoInicial = (Calendar) dataInicial.clone();
      this.dataRecebimentoFinal = (Calendar) dataAtual.clone();

      /* Não executa nada, pois o processo gera um PDF e é importante
       * que o operador defina as propriedades do relatório antes de gerar o PDF */
      result = true;
    } else {
      this.getMessageList()
          .add(
              new BusinessMessage(
                  IRunnableEntityProcess.class,
                  "ENTITY_NOT_COMPATIBLE",
                  PROCESS_NAME,
                  entity.getInfo().getType().getName()));
    }

    return result;
  }
 @Override
 public void start() throws ProcessException {
   super.start();
   //		dataLancamentoInicial.set(Calendar.DATE,
   // dataLancamentoInicial.getActualMinimum(Calendar.DATE));
   dataVencimentoInicial.set(Calendar.DATE, dataVencimentoInicial.getActualMinimum(Calendar.DATE));
   dataRecebimentoInicial.set(
       Calendar.DATE, dataRecebimentoInicial.getActualMinimum(Calendar.DATE));
 }