我已经使用MYSQL(在Tomcat中)成功安装了Drools KIE-WB,我想用dashbuilder实现相同的目标。
我的dashbuilder包是jbpm-dashbuilder-6.1.0-SNAPSHOT-tomcat-7
。我测试了两种不同的选择:
第一个测试选项是:
在tomcat-7.0.50\webapps\dashbuilder\WEB-INF\etc\sql\1-create-mysql.sql
中执行文件。它会创建一些表,但似乎错过了某些内容,因为启动服务器时会出现此错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dashboarddb.processinstancelog' doesn't exist
第二个测试选项是:
将tomcat-7.0.50\webapps\dashbuilder\META-INF\context.xml
更改为拥有下一个数据源
<Resource name="jdbc/jbpm" auth="Container"
type="javax.sql.DataSource" username="drools-user" password="pass" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/dashboarddb?useUnicode=true&characterEncoding=UTF8"
maxActive="8"
/>
在tomcat-7.0.50\webapps\dashbuilder\WEB-INF\etc\hibernate.cfg.xml
中,我添加了下一行:
<property name="hibernate.hbm2ddl.auto">update</property>
强制Hibernate在MySQL中创建所有表。这几乎可以工作(创建几个表),但会出现错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1-title-Dashboards Showcase' for key 'PRIMARY'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
...
我不知道如何修复它(因为我没有关于Hibernate正在做什么和创建的信息)。
我对如何使用MySQL安装仪表板没有更多的想法。关于如何实现它的任何线索?
答案 0 :(得分:1)
两个webapps(Kie-wb和jBPM仪表板)必须共享同一个数据库,因为jBPM仪表板从jBPM历史记录日志中提供(此处更多详细信息https://github.com/droolsjbpm/jbpm-dashboard/tree/master/jbpm-dashboard-distributions/src/main/tomcat7)。
因此,您首先需要针对给定的数据源部署和运行kie-wb。假设你把它命名为“kie-wb”。一旦你运行了kie-wb(在DB上创建了表),就可以继续部署jbpm-dashboard,它必须配置为连接相同的“kie-wb”数据源。
请勿启用自动ddl更新,因为不建议在生产中使用。您可以在应用程序之前运行脚本1-create-mysql.sql。部署或只是让应用程序在启动时运行它(如果它没有检测到某些必需的表,则自动运行脚本它实际上是由应用程序自己完成的)。
如果您按照上述步骤操作,一切都应该正常。 否则,请不要再犹豫了。