Camunda Service Task Error : Unknown property used in expression
Camunda Service Task Error : Unknown property used in expression
我创建了一个简单的工作流程,我在其中使用服务任务调用另一个流程中的事件子流程,我是通过使用 Java 代码来执行此操作的。我使用实现类型“委托表达式”在服务任务中配置了 java class(见下文)
我在 运行 服务任务时收到以下错误。
提交任务表单时发生错误:
无法提交任务表单 54897af5-dc6b-11ec-85f0-e02be903a6c0:未知 属性 用于表达式:#{cancelProcess}。原因:无法解析标识符 'cancelProcess'
这是我的 Java 代码:
package org.example;
import org.camunda.bpm.engine.RuntimeService;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
import org.camunda.bpm.engine.runtime.MessageCorrelationResult;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
@Component("cancelProcess")
public class CancelProcess implements JavaDelegate {
public void execute(DelegateExecution execution) {
// correlate the message
RuntimeService runtimeService = execution.getProcessEngineServices().getRuntimeService();
MessageCorrelationResult result = runtimeService.createMessageCorrelation("CANCEL_PROCESS")
.processInstanceBusinessKey("Order-Process-123")
.setVariable("employeeName", execution.getVariable("employeeName"))
.correlateWithResult();
}
}
请指教。我在这里犯了什么错误。
您正确地使用了实现类型委托表达式,并且在表达式中使用了 spring bean 的名称。如果无法解析组件名称,则可能是未检测到该组件。日志是否显示找到声明?
Spring 的组件扫描只会自动选取在您的应用程序所在的包下的包中声明的组件。
参见例如https://www.baeldung.com/spring-component-scanning
尝试将您的主应用程序 class 放在组件 classes 之上的根包中。
我创建了一个简单的工作流程,我在其中使用服务任务调用另一个流程中的事件子流程,我是通过使用 Java 代码来执行此操作的。我使用实现类型“委托表达式”在服务任务中配置了 java class(见下文)
我在 运行 服务任务时收到以下错误。
提交任务表单时发生错误: 无法提交任务表单 54897af5-dc6b-11ec-85f0-e02be903a6c0:未知 属性 用于表达式:#{cancelProcess}。原因:无法解析标识符 'cancelProcess'
这是我的 Java 代码:
package org.example;
import org.camunda.bpm.engine.RuntimeService;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
import org.camunda.bpm.engine.runtime.MessageCorrelationResult;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
@Component("cancelProcess")
public class CancelProcess implements JavaDelegate {
public void execute(DelegateExecution execution) {
// correlate the message
RuntimeService runtimeService = execution.getProcessEngineServices().getRuntimeService();
MessageCorrelationResult result = runtimeService.createMessageCorrelation("CANCEL_PROCESS")
.processInstanceBusinessKey("Order-Process-123")
.setVariable("employeeName", execution.getVariable("employeeName"))
.correlateWithResult();
}
}
请指教。我在这里犯了什么错误。
您正确地使用了实现类型委托表达式,并且在表达式中使用了 spring bean 的名称。如果无法解析组件名称,则可能是未检测到该组件。日志是否显示找到声明?
Spring 的组件扫描只会自动选取在您的应用程序所在的包下的包中声明的组件。 参见例如https://www.baeldung.com/spring-component-scanning
尝试将您的主应用程序 class 放在组件 classes 之上的根包中。