создать соединение в JBPM6 с пользовательской таблицей

Я хочу разработать процесс jbpm для системы онлайн-бронирования авиакомпаний. в качестве первого шага я пытаюсь выполнить процесс регистрации путешественника, где пользователь зарегистрирует свои данные. когда они пытаются зарегистрировать его, вместо этого он должен хранить пользовательские данные в БД в другой таблице.

процесс, который я создал.

Начальный узел -> форма путешественника -> задача регистрации -> конец

Я создал таблицу с именем ARS_traveller в базе данных h2 в общедоступной схеме.

в пользовательском обработчике рабочего элемента я дал, как показано ниже, но он прошел через ошибку, так как таблица не найдена. пожалуйста, предложите правильную процедуру подключения к базе данных и таблицам.

@Override
    public void abortWorkItem(WorkItem arg0, WorkItemManager arg1) {
        // TODO Auto-generated method stub

    }

    @Override
    public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {

        Context ctx;
        try {
            System.out.println("*********From direct connection**************");
            Connection conn = this.getDirectConnection();
            conn.setAutoCommit(true);
            PreparedStatement stmt = conn
                    .prepareStatement("INSERT INTO ARS_TRAVELLER(NAME,EMAIL,USER_ID,PASSWORD,GENDER,"
                            + "AGE,MOBILE_NO,ADDRESS,CREATED_ON,UNIQUECODE,VERIFIED) VALUES(?,?,?,?,?,?,?,?,?,?,?)");
            stmt.setString(0, workItem.getParameter("Name").toString());
            stmt.setString(1, workItem.getParameter("Email").toString());
            stmt.setString(2, workItem.getParameter("UserId").toString());
            stmt.setString(3, workItem.getParameter("Password").toString());
            stmt.setString(4, workItem.getParameter("Gender").toString());
            stmt.setInt(5,
                    Integer.parseInt(workItem.getParameter("Age").toString()));
            stmt.setString(6, workItem.getParameter("MobileNo").toString());
            stmt.setString(7, workItem.getParameter("Address").toString());
            stmt.setDate(8, new Date((new java.util.Date()).getTime()));
            stmt.setString(9, ((new java.util.Date()).getTime() + ""));
            stmt.setBoolean(10, false);
            stmt.execute();

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
            // TODO: handle exception
        }

        manager.completeWorkItem(workItem.getId(), null);

    }

    private Connection getDirectConnection() {
        Connection conn = null;
        try {
            String url = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1";
            Class.forName("org.h2.Driver");
            conn = DriverManager.getConnection(url, "sa", "sa");

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
            // TODO: handle exception
        }
        return conn;
    }

person Jothi    schedule 26.02.2015    source источник


Ответы (1)


Таблица не найдена — это прямая ошибка, таблица, которую вы ищете, не существует. 1) Ваша информация о подключении может быть неверной, и вы не подключаетесь к ожидаемой базе данных. Или 2) Если вы подключаетесь к правильной базе данных, то, скорее всего, либо таблица не была создана, либо она была каким-то образом удалена. У вас есть какое-то приложение, чтобы посмотреть, какие таблицы доступны в вашей базе данных? Если вы этого не сделаете, вы можете изучить метод JDBC DatabaseMetaData.getTables, чтобы узнать, существуют ли ваши таблицы.

Вот моя теория. Похоже, что база данных, которую вы пытаетесь использовать, совпадает с базой данных персистентности JBPM. У меня такое ощущение, что база данных воссоздается каждый раз при повторном развертывании вашей среды JBPM, что может привести к удалению вашей таблицы ARS_Traveller. Я бы предложил сохранить данные вашего приложения в отдельную базу данных.

Помимо использования отдельной базы данных, я бы не стал использовать JDBC. Он очень устарел и его сложнее поддерживать поверх JPA.

person Mike    schedule 26.02.2015
comment
спасибо .. Да, он сбрасывается каждый раз при перезапуске сервера. - person Jothi; 02.03.2015