docs: public void dbSchemaCheckVersion() {
          try {
              String dbVersion = getDbVersion();
              if (!ProcessEngine.VERSION.equals(dbVersion)) {
                  throw new ActivitiWrongDbException(ProcessEngine.VERSION,
                                                     dbVersion);
              }
  
              String errorMessage = null;
              if (!isEngineTablePresent()) {
                  errorMessage = addMissingComponent(errorMessage,
                                                     "engine");
              }
              if (dbSqlSessionFactory.isDbHistoryUsed() && !isHistoryTablePresent()) {
                  errorMessage = addMissingComponent(errorMessage,
                                                     "history");
              }
  
              if (errorMessage != null) {
                  throw new ActivitiException("Activiti database problem: " + errorMessage);
              }
          } catch (Exception e) {
              if (isMissingTablesException(e)) {
                  throw new ActivitiException(
                          "no activiti tables in db. set <property name=\"databaseSchemaUpdate\" to value=\"true\" or value=\"create-drop\" (use create-drop for testing only!) in bean processEngineConfiguration in activiti.cfg.xml for automatic schema creation",
                          e);
              } else {
                  if (e instanceof RuntimeException) {
                      throw (RuntimeException) e;
                  } else {
                      throw new ActivitiException("couldn't get db schema version",
                                                  e);
                  }
              }
          }
  
          log.debug("activiti db schema check successful");
      }