使用java代码创建flowable中设置多人审批userTask时,设置MultiInstanceLoopCharacteristics的collection鬼玩意
为啥要叫鬼玩意,因为这个东西因为作者的命名不太规范,导致花了好长时间去调试这个问题。因为里面提供了一个
setCollectionString
的方法,所以一直在调用这个方法去调试。(因为名字太像了)后来在github上专门提出这个问题后,官方作者给出了答案,其实是使用setInputDataItem
这个方法。(内心mmp哦)。
新发现的好链接的地址https://blog.csdn.net/qq_34758074/article/details/103330904
错误的用法:
MultiInstanceLoopCharacteristics multiInstanceLoopCharacteristics = new MultiInstanceLoopCharacteristics();
multiInstanceLoopCharacteristics.setCollectionString("");
乍一看是不是很像给collection设值的
正确的写法
MultiInstanceLoopCharacteristics multiInstanceLoopCharacteristics = new MultiInstanceLoopCharacteristics();
multiInstanceLoopCharacteristics.setInputDataItem("");
这是我自己在github上提出的问题,作者给的回答,附上github的地址
后来我看了下getInputDataItem()
的方法调用链,在AbstractActivityBpmnParseHandler
这个类中的60行调用,我差点气晕过去
// flowable:collection
if (StringUtils.isNotEmpty(loopCharacteristics.getInputDataItem())) {
miActivityBehavior.setCollectionExpression(expressionManager.createExpression(loopCharacteristics.getInputDataItem()));
}
至于setCollectionString方法用在哪个场景下 作者也没有说清楚。所以谨慎使用