我在Spring应用程序中定义了一个需要从Activiti引用的组件,组件名称中间包含点,如何引用bean名称?
组件
@Component("com.example.LoadUserData")
public class LoadUserData extends ActivitiAPI练习模型:
<serviceTask id="loadUserData" name="Load User Data" activiti:expression="#{com.example.LoadUserData}">发布于 2017-04-06 19:35:35
我实际上并没有尝试在表达式中使用名称中带有“点”的bean,所以我不确定失败的原因。(您得到的错误是什么?)
但是,如果它失败了,我设想如果您创建一个Activiti JavaDelegate类来包装您的逻辑,然后将您的bean自动绑定到这个类中。可能不完全是你想要的,但会推动你前进。
格雷格
发布于 2018-02-23 16:18:12
我使用@Service注解声明了一个Spring bean,如下所示
import org.springframework.stereotype.Service;
import com.chvps.message.model.Document;
@Service
public class EnricherTask {
public void execute(Document document) {
System.out.println("Enricher task executed");
}
}在activiti中使用相同的bean,如下所示
<serviceTask id="servicetask2" name="Enrich Task" activiti:expression="#{enricherTask.execute(document)}"></serviceTask>发布于 2019-01-26 19:07:58
这不是配置serviceTask的正确方法。
如果你想使用serviceTask,你可以用下面的方法
实施org.activiti.engine.delegate.JavaDelegate
@Slf4j
public class MyServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) {
log.info("MyServiceTask");
}
}在BPMN文件中配置它
<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>然后你的serviceTask就可以工作了,你不需要把它注入到spring容器和activiti:expression中
https://stackoverflow.com/questions/43247886
复制相似问题