问题描述
我刚刚开始使用activiti框架。我在Spring Boot应用程序中添加了依赖项,并希望 测试非常简单的顺序流,但是我陷入了奇怪的行为。
所以,我有2个简单的服务,没有任何业务逻辑。
@Service
public class Service1{
public void m(String id) {
log.info("Service1 Id {}",id);
}
}
@Service
public class Service2{
public void m(String id) {
log.info("Service2 Id {}",id);
}
}
具有流程定义的xml文件:
<startEvent id="startEvent" name="Start"></startEvent>
<serviceTask id="service1Task" name="service1"
activiti:expression="${service1.m(id)}"
activiti:resultvariableName="id">
</serviceTask>
<serviceTask id="service2Task" name="service2"
activiti:expression="${service2.m(id)}">
</serviceTask>
<endEvent id="endEvent" name="End"></endEvent>
<sequenceFlow id="flow1" sourceRef="startEvent" targetRef="service1Task"></sequenceFlow>
<sequenceFlow id="flow2" sourceRef="service1Task" targetRef="service2Task"></sequenceFlow>
<sequenceFlow id="flow3" sourceRef="service2Task" targetRef="endEvent"></sequenceFlow>
然后我放了一些控制器:
Map<String,Object> variables = new HashMap<>();
val id = UUID.randomUUID().toString();
variables.put("id",id);
问题是:对于service1,它打印id,但对于service2,它丢失id。在调试器模式下,由于某种原因,service2中的参数id为空字符串。我不明白为什么...
解决方法
答案是无需在任何地方指示resultVariableName。无论如何,定义的变量仍然可用。