gpt4 book ai didi

java - 加载全局事件监听器JBPM

转载 作者:行者123 更新时间:2023-12-02 10:41:21 25 4
gpt4 key购买 nike

我有 jbpm 系统( wildfly + kie-server + workbench ),我想使用一个全局 ProcessEventListener体制内。我创建了简单的流程事件lestener:

public class SimpleProcessEventListener implements ProcessEventListener {

public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
System.out.println("Before Node triggered: " + event.getNodeInstance().getNodeName());
}

...

public void afterVariableChanged(ProcessVariableChangedEvent event) {
System.out.println("After Variable changed: " + event.getVariableId());
}

我的 pom.xml:

<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>simple-process-event-listener</artifactId>
<version>1.0</version>

<dependencies>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-flow</artifactId>
<version>6.5.0.Final</version>
<scope>provided</scope>
</dependency>
</dependencies>

当我将其添加为部署依赖项并通过工作台将其声明为我的 jbpm 项目中的事件监听器时,一切正常。

但是现在我有很多项目,将事件监听器附加到每个项目上很不舒服。所以我在 Wildfly 中创建了新模块:

<module xmlns="urn:jboss:module:1.1" name="com.listener">

<resources>
<resource-root path="simple-process-event-listener-1.0.jar"/>
</resources>

<dependencies>
<module name="javax.api"/>
<module name="org.slf4j"/>
</dependencies>
</module>

创建了deployment-descriptor.xml服务器级别:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<deployment-descriptor xsi:schemaLocation="http://www.jboss.org/jbpm/deployment-descriptor.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<persistence-unit>org.jbpm.domain</persistence-unit>
<audit-persistence-unit>org.jbpm.domain</audit-persistence-unit>
<audit-mode>JPA</audit-mode>
<persistence-mode>JPA</persistence-mode>
<runtime-strategy>SINGLETON</runtime-strategy>
<marshalling-strategies/>
<event-listeners>
<event-listener>
<resolver>reflection</resolver>
<identifier>org.example.SimpleProcessEventListener</identifier>
<parameters/>
</event-listener>
</event-listeners>
<task-event-listeners/>
<globals/>
<work-item-handlers/>
<environment-entries/>
<configurations/>
<required-roles/>
<remoteable-classes/>
<limit-serialization-classes>true</limit-serialization-classes>
</deployment-descriptor>

因此,当我创建一个新的 jbpm 流程并通过工作台将其部署在 kie-server 上时,我得到了:

Caused by: java.lang.NoClassDefFoundError: Failed to link org/example/SimpleProcessEventListener (Module "com.listener" from local module loader @3c19aaa5 (finder: local module finder @3349e9bb (roots: /opt/jboss/wildfly/modules,/opt/jboss/wildfly/modules/system/layers/base))): org/kie/api/event/process/ProcessEventListener

所以很明显它尝试使用我的监听器但找不到 org.kie.api.event.process.ProcessEventListener这是由我的听众实现的。
所以我该怎么做?为什么没有加载?它属于 kie-internal-api。我有 jbpm-flow 依赖于 'provided' 范围的 Maven。
在我的所有 jbpm 进程中使用一个监听器是正确的方法吗?

最佳答案

在 WEB-INF/lib 中添加 simple-process-event-listener-1.0.jar 并且不添加对 'com.listener' 模块的 war 文件依赖

关于java - 加载全局事件监听器JBPM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52900665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com