当我同时调用complete方法时,PostpareTaskListener.notify
执行了3次,我怎么能让它只执行一次,其他两次都在notify方法中运行之前引发异常?
public static void main(String args[]){
Logger log = LoggerFactory.getLogger("");
final ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
new Thread(new Runnable() {
@Override
public void run() {
processEngine.getTaskService().complete("141209", null);
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
processEngine.getTaskService().complete("141209", null);
}
}).start();
processEngine.getTaskService().complete("141209", null);
}
public class PostpareTaskListener implements TaskListener{
@Override
public void notify(DelegateTask task) {
// TODO Auto-generated method stub
task.setVariable("result", "false");
System.out.println("================post pare ================");
}
}
也许您可以通过以下方式获得任务状态:
task.isSuspended();
毕竟,如果你试图完成一个已经完成的任务,我希望activit会抛出一个异常:
org.activiti.engine.ActivitiObjectNotFoundException: Cannot find task with id 141209
也许设置一个变量有帮助:
Boolean executed = (Boolean) task.getVariable("executed");
if (executed) {
return;
}
task.setVariable("executed", true);