activiti问题解决--获取流程中变量时org.activiti.engine.ActivitiObjectNotFoundException: execution 90005 doesn't
一、问题描述
1、流程定义
<process id="myProcess" name="My process" isExecutable="true">
<startEvent id="startevent1" name="Start"></startEvent>
<serviceTask id="cf_serviceTask" name="Service Task" activiti:expression="${counter+1}" activiti:resultVariableName="counter">
<multiInstanceLoopCharacteristics isSequential="true">
<loopCardinality>${loop}</loopCardinality>
</multiInstanceLoopCharacteristics>
</serviceTask>
<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="cf_serviceTask"></sequenceFlow>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow2" sourceRef="cf_serviceTask" targetRef="endevent1"></sequenceFlow>
</process>
2、问题发生场景
开启3个serviceTask实例,利用中间变量counter进行运算操作并且将结果给counter,之后再程序中获取counter变量时,发生org.activiti.engine.ActivitiObjectNotFoundException: execution 90005 doesn'
二、问题分析
再流程中这些中间变量都统一存储在act_ru_variable表中,这些中间变量在流程运行过程中产生,在流程结束之后清除
四、问题解决
由于按照上述流程定义,serviceTask结束之后意味着整个流程已经结束,对应该流程实例在act_ru_variable表中的数据也已经被清除,所以在流程结束之后时获取中间变量则会报此类错误。
网友评论