JBPM - 如何实现基于DB用户的任务通知 - JBPM 7.56.0

JBPM - How to implement Task Notification Based on DB Users - JBPM 7.56.0

我尝试了基于 userinfo.property 的任务通知,它工作正常。但我一直坚持向数据库用户发送通知。 我收到以下错误。

23:49:35,378 ERROR [org.jbpm.services.task.deadlines.notifications.impl.email.EmailNotificationListener] (EJB default - 1) Unable to send email notification due to null

好像是从线下传来的

org.jbpm.services.task.deadlines.notifications.impl.email.EmailNotificationListener.onNotification(EmailNotificationListener.java:122)

我猜系统无法从数据库加载用户信息。

我正在使用 JBPM 7.56.0。

standalone.xml配置如下。

<property name="org.kie.server.persistence.ds" value="java:jboss/datasources/jBPMDS"/>
<property name="org.jbpm.ht.userinfo" value="db"/>
<property name="jbpm.usergroup.callback.properties" value="WEB-INF/jbpm.usergroup.callback.properties"/>
            <security-domain name="other" cache-type="default">
                <authentication>
                    <login-module code="Remoting" flag="optional">
                        <module-option name="password-stacking" value="useFirstPass"/>
                    </login-module>
                    <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
                        <module-option name="dsJndiName" value="java:jboss/datasources/jBPMDS"/>
                        <module-option name="principalsQuery" value="select passwd from users where username=?"/>
                        <module-option name="rolesQuery" value="select userroles, 'Roles' from UserRoles where username=?"/>
                    </login-module>
                    <login-module code="org.kie.security.jaas.KieLoginModule" flag="optional" module="deployment.business-central.war"/>
                    <login-module name="org.kie.security.jaas.KieLoginModule-2" code="org.kie.security.jaas.KieLoginModule" flag="optional" module="deployment.jbpm-casemgmt.war"/>
                </authentication>
            </security-domain>

    <subsystem xmlns="urn:jboss:domain:mail:3.0">
        <mail-session name="notification" debug="true" jndi-name="java:/notificationMailSession" from="matara68@gmail.com">
            <smtp-server outbound-socket-binding-ref="mail-notification-smtp" ssl="true" username="matara68@gmail.com" password="xxxxx"/>
        </mail-session>
    </subsystem>

    <outbound-socket-binding name="mail-notification-smtp">
        <remote-destination host="smtp.gmail.com" port="465"/>
    </outbound-socket-binding>

配置jbpm.user.info.properties如下。

db.ds.jndi.name=java:jboss/datasources/jBPMDS

db.name.query=select username from jbpm56.users where username = ?

db.email.query=select user_email from jbpm56.users where username = ?

db.lang.query=select user_lang from jbpm56.users where username = ?

db.group.mem.query=select username from jbpm56.UserRoles where userroles = ?

配置jbpm.usergroup.callback.properties如下。

db.ds.jndi.name=java:jboss/datasources/jBPMDS

db.name.query=select username from jbpm56.users where username = ?

db.email.query=select user_email from jbpm56.users where username = ?

db.lang.query=select user_lang from jbpm56.users where username = ?

db.group.mem.query=select username from jbpm56.UserRoles where userroles = ?

带有堆栈跟踪的日志部分如下。

23:48:20,824 WARN  [org.kie.server.services.jbpm.ui.FormServiceBase] (default task-12) Unable to find form to render for process 'DbEmailTaskProcess'
23:49:35,243 INFO  [stdout] (EJB default - 1) DEBUG: Jakarta Mail version 1.6.4
23:49:35,307 INFO  [stdout] (EJB default - 1) DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
23:49:35,310 INFO  [stdout] (EJB default - 1) DEBUG: Tables of loaded providers
23:49:35,310 INFO  [stdout] (EJB default - 1) DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle]}
23:49:35,311 INFO  [stdout] (EJB default - 1) DEBUG: Providers Listed By Protocol: {imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle]}
23:49:35,312 INFO  [stdout] (EJB default - 1) DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
23:49:35,316 DEBUG [org.jbpm.services.task.deadlines.notifications.impl.email.EmailNotificationListener] (EJB default - 1) User info implementation org.jbpm.services.task.identity.DBUserInfoImpl@5185fc7a and mail session javax.mail.Session@735b8ef1
23:49:35,378 ERROR [org.jbpm.services.task.deadlines.notifications.impl.email.EmailNotificationListener] (EJB default - 1) Unable to send email notification due to null
23:49:35,378 DEBUG [org.jbpm.services.task.deadlines.notifications.impl.email.EmailNotificationListener] (EJB default - 1) Stacktrace:: java.lang.NullPointerException
        at deployment.kie-server.war//org.jbpm.services.task.deadlines.notifications.impl.email.EmailNotificationListener.onNotification(EmailNotificationListener.java:122)
        at deployment.kie-server.war//org.jbpm.services.task.deadlines.notifications.impl.NotificationListenerManager.broadcast(NotificationListenerManager.java:132)
        at deployment.kie-server.war//org.jbpm.services.task.deadlines.notifications.impl.NotificationListenerManager.broadcast(NotificationListenerManager.java:112)
        at deployment.kie-server.war//org.jbpm.services.task.commands.ExecuteDeadlinesCommand.execute(ExecuteDeadlinesCommand.java:164)
        at deployment.kie-server.war//org.jbpm.services.task.commands.ExecuteDeadlinesCommand.execute(ExecuteDeadlinesCommand.java:60)
        at deployment.kie-server.war//org.jbpm.services.task.commands.TaskCommandExecutorImpl$SelfExecutionCommandService.execute(TaskCommandExecutorImpl.java:80)
        at deployment.kie-server.war//org.jbpm.services.task.commands.TaskCommandExecutorImpl$SelfExecutionCommandService.execute(TaskCommandExecutorImpl.java:65)
        at deployment.kie-server.war//org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:39)
        at deployment.kie-server.war//org.jbpm.services.task.persistence.TaskTransactionInterceptor.execute(TaskTransactionInterceptor.java:88)
        at deployment.kie-server.war//org.jbpm.services.task.persistence.TaskTransactionInterceptor.execute(TaskTransactionInterceptor.java:49)
        at deployment.kie-server.war//org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:39)
        at deployment.kie-server.war//org.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:73)
        at deployment.kie-server.war//org.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:45)
        at deployment.kie-server.war//org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:39)
        at deployment.kie-server.war//org.drools.persistence.jpa.OptimisticLockRetryInterceptor.internalExecute(OptimisticLockRetryInterceptor.java:102)
        at deployment.kie-server.war//org.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:83)
        at deployment.kie-server.war//org.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:44)
        at deployment.kie-server.war//org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:39)
        at deployment.kie-server.war//org.jbpm.runtime.manager.impl.error.ExecutionErrorHandlerInterceptor.internalExecute(ExecutionErrorHandlerInterceptor.java:66)
        at deployment.kie-server.war//org.jbpm.runtime.manager.impl.error.ExecutionErrorHandlerInterceptor.execute(ExecutionErrorHandlerInterceptor.java:52)
        at deployment.kie-server.war//org.jbpm.runtime.manager.impl.error.ExecutionErrorHandlerInterceptor.execute(ExecutionErrorHandlerInterceptor.java:29)
        at deployment.kie-server.war//org.drools.core.runtime.InternalLocalRunner.execute(InternalLocalRunner.java:37)
        at deployment.kie-server.war//org.drools.core.runtime.InternalLocalRunner.execute(InternalLocalRunner.java:41)
        at deployment.kie-server.war//org.jbpm.services.task.commands.TaskCommandExecutorImpl.execute(TaskCommandExecutorImpl.java:49)
        at deployment.kie-server.war//org.jbpm.services.task.impl.command.CommandBasedTaskService.execute(CommandBasedTaskService.java:159)
        at deployment.kie-server.war//org.jbpm.runtime.manager.impl.task.SynchronizedTaskService.execute(SynchronizedTaskService.java:850)
        at deployment.kie-server.war//org.jbpm.services.task.impl.TaskDeadlinesServiceImpl$TaskDeadlineJob.execute(TaskDeadlinesServiceImpl.java:388)
        at deployment.kie-server.war//org.drools.core.time.SelfRemovalJob.execute(SelfRemovalJob.java:34)
        at deployment.kie-server.war//org.drools.core.time.impl.DefaultTimerJobInstance.call(DefaultTimerJobInstance.java:70)
        at deployment.kie-server.war//org.drools.persistence.jpa.JpaTimerJobInstance.internalCall(JpaTimerJobInstance.java:59)
        at deployment.kie-server.war//org.drools.persistence.jpa.JDKCallableJobCommand.execute(JDKCallableJobCommand.java:35)
        at deployment.kie-server.war//org.drools.persistence.jpa.JDKCallableJobCommand.execute(JDKCallableJobCommand.java:21)
        at deployment.kie-server.war//org.drools.core.fluent.impl.PseudoClockRunner.executeBatch(PseudoClockRunner.java:102)
        at deployment.kie-server.war//org.drools.core.fluent.impl.PseudoClockRunner.executeBatches(PseudoClockRunner.java:69)
        at deployment.kie-server.war//org.drools.core.fluent.impl.PseudoClockRunner.execute(PseudoClockRunner.java:61)
        at deployment.kie-server.war//org.drools.core.fluent.impl.PseudoClockRunner.execute(PseudoClockRunner.java:39)
        at deployment.kie-server.war//org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:39)
        at deployment.kie-server.war//org.drools.persistence.PersistableRunner$TransactionInterceptor.execute(PersistableRunner.java:608)
        at deployment.kie-server.war//org.drools.persistence.PersistableRunner$TransactionInterceptor.execute(PersistableRunner.java:568)
        at deployment.kie-server.war//org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:39)
        at deployment.kie-server.war//org.drools.persistence.jpa.OptimisticLockRetryInterceptor.internalExecute(OptimisticLockRetryInterceptor.java:102)
        at deployment.kie-server.war//org.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:83)
        at deployment.kie-server.war//org.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:44)
        at deployment.kie-server.war//org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:39)
        at deployment.kie-server.war//org.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:73)
        at deployment.kie-server.war//org.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:45)
        at deployment.kie-server.war//org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:39)
        at deployment.kie-server.war//org.jbpm.runtime.manager.impl.error.ExecutionErrorHandlerInterceptor.internalExecute(ExecutionErrorHandlerInterceptor.java:66)
        at deployment.kie-server.war//org.jbpm.runtime.manager.impl.error.ExecutionErrorHandlerInterceptor.execute(ExecutionErrorHandlerInterceptor.java:52)
        at deployment.kie-server.war//org.jbpm.runtime.manager.impl.error.ExecutionErrorHandlerInterceptor.execute(ExecutionErrorHandlerInterceptor.java:29)
        at deployment.kie-server.war//org.drools.persistence.PersistableRunner.execute(PersistableRunner.java:400)
        at deployment.kie-server.war//org.drools.persistence.PersistableRunner.execute(PersistableRunner.java:68)
        at deployment.kie-server.war//org.drools.core.runtime.InternalLocalRunner.execute(InternalLocalRunner.java:37)
        at deployment.kie-server.war//org.drools.core.runtime.InternalLocalRunner.execute(InternalLocalRunner.java:35)
        at deployment.kie-server.war//org.jbpm.process.core.timer.impl.GlobalTimerService$DisposableCommandService.execute(GlobalTimerService.java:368)
        at deployment.kie-server.war//org.jbpm.process.core.timer.impl.GlobalTimerService$DisposableCommandService.execute(GlobalTimerService.java:345)
        at deployment.kie-server.war//org.drools.core.runtime.InternalLocalRunner.execute(InternalLocalRunner.java:37)
        at deployment.kie-server.war//org.drools.core.runtime.InternalLocalRunner.execute(InternalLocalRunner.java:41)
        at deployment.kie-server.war//org.jbpm.persistence.timer.GlobalJpaTimerJobInstance.call(GlobalJpaTimerJobInstance.java:81)
        at deployment.kie-server.war//org.jbpm.persistence.timer.GlobalJpaTimerJobInstance.call(GlobalJpaTimerJobInstance.java:48)
        at deployment.kie-server.war//org.jbpm.services.ejb.timer.EJBTimerScheduler.executeTimerJobInstance(EJBTimerScheduler.java:130)
        at deployment.kie-server.war//org.jbpm.services.ejb.timer.EJBTimerScheduler.transaction(EJBTimerScheduler.java:224)
        at deployment.kie-server.war//org.jbpm.services.ejb.timer.EJBTimerScheduler.executeTimerJob(EJBTimerScheduler.java:120)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.jboss.as.ee@19.1.0.Final//org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:50)
        at org.jboss.as.ee@19.1.0.Final//org.jboss.as.ee.component.interceptors.UserInterceptorFactory.processInvocation(UserInterceptorFactory.java:61)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
        at org.jboss.as.weld.common@19.1.0.Final//org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.delegateInterception(Jsr299BindingsInterceptor.java:79)
        at org.jboss.as.weld.common@19.1.0.Final//org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:89)
        at org.jboss.as.weld.common@19.1.0.Final//org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:104)
        at org.jboss.as.ee@19.1.0.Final//org.jboss.as.ee.component.interceptors.UserInterceptorFactory.processInvocation(UserInterceptorFactory.java:61)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:50)
        at org.jboss.as.ee@19.1.0.Final//org.jboss.as.ee.component.interceptors.UserInterceptorFactory.processInvocation(UserInterceptorFactory.java:61)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.tx.EjbBMTInterceptor.handleInvocation(EjbBMTInterceptor.java:103)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.tx.BMTInterceptor.processInvocation(BMTInterceptor.java:57)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.as.ee@19.1.0.Final//org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:40)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:53)
        at org.jboss.as.ee@19.1.0.Final//org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.component.singleton.SingletonComponentInstanceAssociationInterceptor.processInvocation(SingletonComponentInstanceAssociationInterceptor.java:53)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
        at org.jboss.weld.core@3.1.3.Final//org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:81)
        at org.jboss.as.weld.common@19.1.0.Final//org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:89)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.component.singleton.ContainerManagedConcurrencyInterceptor.processInvocation(ContainerManagedConcurrencyInterceptor.java:106)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory.processInvocation(ShutDownInterceptorFactory.java:64)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.as.ee@19.1.0.Final//org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:60)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:438)
        at org.wildfly.security.elytron-private@1.11.4.Final//org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:627)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:57)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
        at org.jboss.invocation@1.5.2.Final//org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:53)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.timerservice.TimedObjectInvokerImpl.callTimeout(TimedObjectInvokerImpl.java:99)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.timerservice.TimedObjectInvokerImpl.callTimeout(TimedObjectInvokerImpl.java:109)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.timerservice.TimerTask.invokeBeanMethod(TimerTask.java:211)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.timerservice.TimerTask.callTimeout(TimerTask.java:207)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.timerservice.TimerTask.run(TimerTask.java:181)
        at org.jboss.as.ejb3@19.1.0.Final//org.jboss.as.ejb3.timerservice.TimerServiceImpl$Task.run(TimerServiceImpl.java:1310)
        at org.wildfly.extension.request-controller@11.1.1.Final//org.wildfly.extension.requestcontroller.RequestController$QueuedTask.run(RequestController.java:494)
        at org.jboss.threads@2.3.3.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
        at org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
        at org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
        at org.jboss.threads@2.3.3.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
        at java.base/java.lang.Thread.run(Thread.java:834)
        at org.jboss.threads@2.3.3.Final//org.jboss.threads.JBossThread.run(JBossThread.java:485)

您设置了查询返回哪种语言?

db.lang.query=select user_lang from jbpm56.users where username = ?

因为在内部,引擎正在根据这种语言构建地图以获取电子邮件header。找不到的时候就抛出那个空指针异常(应该是比较清楚的信息)。

如果您不想根据语言区分电子邮件通知,请尝试将其填充为“en-UK”(默认语言)。