【问题标题】:OptaPlanner as a Domain Specific Task in jBPM?OptaPlanner 作为 jBPM 中的特定领域任务?
【发布时间】:2014-05-27 11:19:21
【问题描述】:

我正在尝试将 optaplanner 项目与 jbpm6 集成。我已将 optaplanner java 项目作为同步域特定节点。所有 java 类、solverconfig.xml 和 .drl 文件都已导出到 jboss-as-7.1.1.Final\standalone\deployments\jbpm-console.war\WEB-INF\lib\ 中的 JAR 文件。但是,当我执行该过程时,它说求解器配置(solverconfig.xml)不存在。我假设这是因为无法读取 JAR 中的 xml 文件。我读到有另一种方法可以将求解器配置创建为 java 文件(强烈不推荐)。

我可以采取任何其他方法来解决这个问题吗?

【问题讨论】:

  • 您能否将完整路径复制到求解器配置 xml 并复制用于创建 SolverFactory 的 java 代码?我认为这可能只是某个地方的错字,因为它应该可以工作。
  • 从eclipse看,SolverConfig.xml的路径是/OptaPlannerProject/src/main/resources/CaseAssignmentSolverConfig.xml 以及构建SolverFactory的代码SolverFactory solverFactory = new XmlSolverFactory("/CaseAssignmentSolverConfig.xml"); Solver solver= solverFactory.buildSolver();

标签: drools jbpm optaplanner


【解决方案1】:

1) 检查该 lib 文件夹中的 jar 是否确实包含 CaseAssignmentSolverConfig.xml 文件。

2) 在您的 java 代码中,在构建 SolverFactory 之前,请尝试

getClass().getResource("/CaseAssignmentSolverConfig.xml")

它不应该为空。

旁注:这一切都假定您使用的是 optaplanner 6.0(对于 6.1,前导“/”需要消失,但暂时忽略此注释)。

【讨论】:

  • 我用过'String url =this.getClass().getResource("/CaseAssignmentSolverConfig.xml").toString();'在构建 SolverFactory 之前。但它在工作台中返回一个空值。并且xml文件在资源文件夹的jar包中。
  • 因为它在没有 optaplanner-core 的情况下返回 null,所以它也不会在 optaplanner-core 中工作。这意味着 ClassLoaders 不同,或者 lib 文件夹中的 jar 不包含在类路径中。尽管可以从 File 或 InputStream(而不是资源)加载求解器配置 xml 文件,但这并不能解决问题,因为您的域类仍然需要来自您的 jar,因此需要在类加载器。所以他们唯一的修复就是修复类加载器/类路径问题。
  • 我已经让它运行 Geoffrey!我将xml文件和drl文件复制到jar文件中的resources文件夹之外,它似乎可以工作。
猜你喜欢
  • 1970-01-01
  • 2012-02-07
  • 2013-02-20
  • 2019-01-05
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多