JBPM:自定义工作项处理程序的传递依赖问题

Čes*_*ska 5 jbpm

我是 jBPM 的新手。我正在测试 jBPM 7.32.0.Final。
环境已由安装程序(ant install.demo)设置。

我的用例:

我正在尝试开发和测试使用 oracle jdbc 驱动程序的自定义工作项处理程序(如https://www.youtube.com/watch?v=_XIZ0KRTahE 中所示)。
在我创建的 jbpm 控制台中:一个新的工作项定义(CustomTask),使用自定义任务的新业务流程,向项目添加工作项处理程序,在 Eclipse 中创建处理程序实现,将工件上传到存储库,并添加工件对项目的依赖。

问题 :

没有传递依赖项的简单工件工作正常。问题是当我添加对应该在工作项处理程序中使用的 jdbc 驱动程序的依赖时。

我为解决传递依赖做了什么:

使用 jbpm 控制台,我将另一个带有 jdbc 驱动程序 jar (ojdbc8.jar) 的工件上传到存储库,并在 jdbc 驱动程序工件上添加了对工作项处理程序工件的依赖。(通过编辑处理程序的 pom.xml)。

观察到的行为:

  • 当我尝试在 jbpm 控制台中启动一个新的流程实例时,我得到

    “错误处理请求”(上下文路径:/kie-server,Servlet 路径:/services/rest,路径信息:/server/containers/cust-mod_1.0.0-SNAPSHOT/processes/Custom_Module_Project.TEST/instances,查询字符串:null )

    在 server.log 中我可以看到:

    引起:java.lang.ClassNotFoundException:oracle.simplefan.FanManager

    这是来自另一个 oracle jar 文件 simplefan.jar 的类。

    注意:当我在 Eclipse 中进行单元测试时,只需要 ojdbc8.jar 库!!

  • 然后当我从工作项工件中的 pom.xml 中删除传递依赖项并重新部署项目(无需重新启动 jbpm)时,令人惊讶的是我可以启动一个新实例并且它工作正常!!!

  • 然后当我重新启动 jBPM 并尝试启动新实例时,会启动一个新实例,但是,流程自定义任务引发了一个异常,我可以在 server.log 中看到该异常:

    java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver

    当我重复上述步骤时,我仍然可以重现相同的行为。

可能我遗漏了一些重要的东西。有人可以向我推荐正确的步骤/程序吗?如果需要更多信息,请告诉我。非常感激。

Vla*_*d L 0

不确定这是多少(不)正确的“修复”,但是将传递依赖项添加为项目的显式依赖项允许 KIE 服务器编译/执行容器。