Java 活动+;春天
我在Spring应用程序中定义了一个组件,需要从AcvivTI中引用,组件名包含中间的点,如何引用bean名称?< /P> 组成部分Java 活动+;春天,java,spring,activiti,Java,Spring,Activiti,我在Spring应用程序中定义了一个组件,需要从AcvivTI中引用,组件名包含中间的点,如何引用bean名称?< /P> 组成部分 @Component("com.example.LoadUserData") public class LoadUserData extends ActivitiAPI Activiti模型: <serviceTask id="loadUserData" name="Load User Data" activiti:expression="#{com.ex
@Component("com.example.LoadUserData")
public class LoadUserData extends ActivitiAPI
Activiti模型:
<serviceTask id="loadUserData" name="Load User Data" activiti:expression="#{com.example.LoadUserData}">
我实际上还没有尝试在表达式的名称中使用带有“点”的bean,因此我不确定为什么会失败。(您得到的错误是什么?) 然而,如果失败了,我想如果您创建一个activitijavadelegate类来包装您的逻辑,然后将bean自动连接到该类中。 可能不完全是你想要的,但会推动你前进
Greg我声明了一个带有@Service注释的Springbean,如下所示
在activiti中使用相同的bean,如下所示
<serviceTask id="servicetask2" name="Enrich Task" activiti:expression="#{enricherTask.execute(document)}"></serviceTask>
这不是配置serviceTask的正确方法 如果要使用
serviceTask
,可以按以下方式执行
实现org.activiti.engine.delegate.JavaDelegate
在BPMN文件中配置它
然后你的serviceTask就可以工作了,你不需要将它注入spring容器和
activiti:expression
你正在使用哪个el表达式解析器?我没有更改activiti的任何默认配置,我使用的是带spring Boot的activiti
<serviceTask id="servicetask2" name="Enrich Task" activiti:expression="#{enricherTask.execute(document)}"></serviceTask>
@Slf4j
public class MyServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) {
log.info("MyServiceTask");
}
}
<process id="my-process">
<startEvent id="start"/>
<sequenceFlow id="flow1" sourceRef="start" targetRef="serviceTask"/>
<serviceTask id="serviceTask" name="serviceTask" activiti:class="com.test.activiti.MyServiceTask"/>
<sequenceFlow id="flow2" sourceRef="serviceTask" targetRef="end"/>
<endEvent id="end"/>
</process>