jbpm - 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
当我重复上述步骤时,我仍然可以重现相同的行为。
可能我错过了一些重要的东西。任何人都可以向我推荐正确的步骤/程序吗?如果需要更多信息,请告诉我。非常感激。
解决方案
不确定这是多少(im)正确的“修复”,但是将传递依赖项添加为项目的显式依赖项允许 KIE 服务器编译/执行容器。
推荐阅读
- r - 为什么 Rmd 更改全局变量(默认)?
- python-3.x - BeautifulSoup 无法通过 id 找到表
- javascript - 为什么这个数组中的值(显然)会立即改变
- angular - Angular 7 - rxjs - 响应状态代码为 422(无法处理的实体)时无法获取响应数据
- javascript - Vue TypeError:无法读取未定义的属性“_wrapper”
- excel - VBA SQL 查询另存为字符串并加载为使用另一个查询登录回数据库
- tensorflow - TensorFlow2.0 中的 XLA - 冻结模型?
- office-js - Outlook 加载项 - 另存为对话框(保存文件)和外部链接
- mysql - 在一个 mysqli 查询中给出年份、周数和工作日时返回 DATE
- typescript - 如何在 Typescript 装饰器工厂参数上强制使用与其应用的属性相同的类型?