Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 活动+;春天_Java_Spring_Activiti - Fatal编程技术网

Java 活动+;春天

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

我在Spring应用程序中定义了一个组件,需要从AcvivTI中引用,组件名包含中间的点,如何引用bean名称?< /P> 组成部分

@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>