All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jadex.bpmn.runtime.handler.EventEndTerminateActivityHandler Maven / Gradle / Ivy

There is a newer version: 5.0-alpha6
Show newest version
package jadex.bpmn.runtime.handler;

import jadex.bpmn.model.MActivity;
import jadex.bpmn.runtime.impl.ProcessThread;
import jadex.core.IComponent;

/**
 *  On error end propagate an exception.
 */
public class EventEndTerminateActivityHandler extends DefaultActivityHandler
{
	/**
	 *  Execute the activity.
	 */
	protected void doExecute(MActivity activity, IComponent instance, ProcessThread thread)
	{
		// Top level event -> kill the component.
		if(thread.getParent().getParent()==null)	// Check that parent thread is top thread.
		{
			instance.terminate();
		}
		// Internal subprocess -> terminate all threads in context, except own thread (which is terminated after interpreter step).
		else
		{
//			for(ProcessThread pt: thread.getThreadContext().getThreads().toArray(new ProcessThread[thread.getThreadContext().getThreads().size()]))
			for(ProcessThread pt: thread.getParent().getSubthreads().toArray(new ProcessThread[thread.getParent().getSubthreads().size()]))
			{
				if(pt!=thread)
				{
					thread.getParent().removeThread(pt);
				}
			}
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy