Class ProcessThread

  • All Implemented Interfaces:
    jadex.bpmn.model.task.ITaskContext

    public class ProcessThread
    extends java.lang.Object
    implements jadex.bpmn.model.task.ITaskContext
    Representation of a single control flow in a BPMN process instance, i.e. an instance of a sequence flow.
    • Field Detail

      • id

        protected java.lang.String id
        The thread id.
      • activity

        protected jadex.bpmn.model.MActivity activity
        The next activity.
      • edge

        protected jadex.bpmn.model.MSequenceEdge edge
        The last edge (if any).
      • data

        protected java.util.Map<java.lang.String,​java.lang.Object> data
        The data of the current or last activity.
      • dataedges

        protected java.util.Map<java.lang.String,​java.lang.Object> dataedges
        The data of the current data edges.
      • parent

        protected ProcessThread parent
        The parent process thread.
      • subthreads

        protected java.util.List<ProcessThread> subthreads
        The subthreads.
      • exception

        protected java.lang.Exception exception
        The exception that has just occurred in the process (if any).
      • waiting

        protected boolean waiting
        Is the process in a waiting state.
      • cancelinfo

        protected ICancelable cancelinfo
        The wait info.
      • waitfilter

        protected IFilter<java.lang.Object> waitfilter
        The wait filter.
      • task

        protected jadex.bpmn.model.task.ITask task
        The current task.
      • canceled

        protected boolean canceled
        Is the task canceled.
      • idcnt

        public int idcnt
        The id counter for sub processes.
      • splitinfos

        public java.util.Map<java.lang.String,​SplitInfo> splitinfos
        The split infos.
      • loopcmd

        protected IResultCommand<java.lang.Boolean,​java.lang.Void> loopcmd
        The loop command.
    • Constructor Detail

      • ProcessThread

        public ProcessThread​(jadex.bpmn.model.MActivity activity,
                             ProcessThread parent,
                             IInternalAccess instance)
        Create a new process instance.
        Parameters:
        activity - The current activity.
      • ProcessThread

        public ProcessThread​(jadex.bpmn.model.MActivity activity,
                             ProcessThread parent,
                             IInternalAccess instance,
                             boolean passive)
        Create a new process instance.
        Parameters:
        activity - The current activity.
    • Method Detail

      • getBpmnModel

        public jadex.bpmn.model.MBpmnModel getBpmnModel()
        Get the model.
        Specified by:
        getBpmnModel in interface jadex.bpmn.model.task.ITaskContext
        Returns:
        The bpmn model.
      • getId

        public java.lang.String getId()
        Get the id.
        Returns:
        The id.
      • getActivity

        public jadex.bpmn.model.MActivity getActivity()
        Get the activity.
        Specified by:
        getActivity in interface jadex.bpmn.model.task.ITaskContext
        Returns:
        The activity.
      • setActivity

        public void setActivity​(jadex.bpmn.model.MActivity activity)
        Set the next activity. Sets the last edge to null. Should only be used, when no edge available (e.g. start events or event handlers of subprocesses).
      • isCanceled

        public boolean isCanceled()
        Is the current task canceled?
        Returns:
        The canceled flag.
      • setCanceled

        public void setCanceled​(boolean canceled)
        Set the canceled state.
        Parameters:
        canceled - True, if canceled.
      • getTask

        public jadex.bpmn.model.task.ITask getTask()
        Gets the current task.
        Returns:
        The current task.
      • setTask

        public void setTask​(jadex.bpmn.model.task.ITask task)
        Sets the current task.
        Parameters:
        task - The current task.
      • getLastEdge

        public jadex.bpmn.model.MSequenceEdge getLastEdge()
        Get the last edge (if any).
        Returns:
        The edge.
      • setLastEdge

        public void setLastEdge​(jadex.bpmn.model.MSequenceEdge edge)
        Set the last edge. Also sets the next activity.
        Parameters:
        edge - The edge.
      • isWaiting

        public boolean isWaiting()
        Is the process in a waiting state (i.e. blocked)?
        Returns:
        The waiting flag.
      • setWaiting

        public void setWaiting​(boolean waiting)
        Set the waiting state.
      • setNonWaiting

        public void setNonWaiting()
        Set to non waiting.
      • scheduleExecution

        protected void scheduleExecution()
        Schedule notification of this thread.
      • setWaitInfo

        public void setWaitInfo​(ICancelable cancelinfo)
        Set the process waiting info.
        Parameters:
        waiting - The waiting info.
      • getWaitInfo

        public ICancelable getWaitInfo()
        Get the waitinfo.
        Returns:
        The waitinfo.
      • getWaitFilter

        public IFilter<java.lang.Object> getWaitFilter()
        Get the wait filter.
        Returns:
        The waitfilter.
      • setWaitFilter

        public void setWaitFilter​(IFilter<java.lang.Object> waitfilter)
        Set the wait filter.
        Parameters:
        waitfilter - The waitfilter to set.
      • createCopy

        public ProcessThread createCopy()
        Create a copy of this thread (e.g. for a parallel split).
      • copy

        public void copy​(ProcessThread ret)
        Create a copy of this thread (e.g. for a parallel split).
      • hasOwnParameterValue

        public boolean hasOwnParameterValue​(java.lang.String name)
        Test if a parameter has been set on activity.
        Parameters:
        name - The parameter name.
        Returns:
        True if parameter is known.
      • hasParameterValue

        public boolean hasParameterValue​(java.lang.String name)
        Test if a parameter has been set on activity.
        Specified by:
        hasParameterValue in interface jadex.bpmn.model.task.ITaskContext
        Parameters:
        name - The parameter name.
        Returns:
        True if parameter is known.
      • getModelElement

        public jadex.bpmn.model.MActivity getModelElement()
        Get the model element.
        Specified by:
        getModelElement in interface jadex.bpmn.model.task.ITaskContext
        Returns:
        The model of the task.
      • getParameterValue

        public java.lang.Object getParameterValue​(java.lang.String name)
        Get the value of a parameter.
        Specified by:
        getParameterValue in interface jadex.bpmn.model.task.ITaskContext
        Parameters:
        name - The parameter name.
        Returns:
        The parameter value.
      • getParameters

        public java.util.Map<java.lang.String,​java.lang.Object> getParameters()
        Get the parameters.
        Returns:
        The parameters.
      • setDataEdgeValue

        public void setDataEdgeValue​(java.lang.String name,
                                     java.lang.Object value)
        Set the value of a parameter.
        Parameters:
        name - The parameter name.
        value - The parameter value.
      • setParameterValue

        public void setParameterValue​(java.lang.String name,
                                      java.lang.Object value)
        Set the value of a parameter.
        Specified by:
        setParameterValue in interface jadex.bpmn.model.task.ITaskContext
        Parameters:
        name - The parameter name.
        value - The parameter value.
      • setParameterValue

        public void setParameterValue​(java.lang.String name,
                                      java.lang.Object key,
                                      java.lang.Object value)
        Set the value of a parameter.
        Specified by:
        setParameterValue in interface jadex.bpmn.model.task.ITaskContext
        Parameters:
        name - The parameter name.
        value - The parameter value.
      • internalSetParameterValue

        protected void internalSetParameterValue​(java.lang.String name,
                                                 java.lang.Object key,
                                                 java.lang.Object value,
                                                 ProcessThread start)
        Set the value of a parameter.
        Parameters:
        name - The parameter name.
        value - The parameter value.
      • setOrCreateParameterValue

        public void setOrCreateParameterValue​(java.lang.String name,
                                              java.lang.Object value)
        Set or create a parameter value directly in this thread.
        Specified by:
        setOrCreateParameterValue in interface jadex.bpmn.model.task.ITaskContext
      • setOrCreateParameterValue

        public void setOrCreateParameterValue​(java.lang.String name,
                                              java.lang.Object key,
                                              java.lang.Object value)
        Set or create a parameter value directly in this thread.
        Specified by:
        setOrCreateParameterValue in interface jadex.bpmn.model.task.ITaskContext
      • removeParameterValue

        public void removeParameterValue​(java.lang.String name)
        Remove the value of a parameter.
        Parameters:
        name - The parameter name.
      • getParameterNames

        public java.lang.String[] getParameterNames()
        Get the name of all parameters.
        Returns:
        The parameter names.
      • getAllParameterNames

        public java.util.Set<java.lang.String> getAllParameterNames()
        Get the name of all parameters.
        Returns:
        The parameter names.
      • getPropertyValue

        public java.lang.Object getPropertyValue​(java.lang.String name)
        Get the value of a property.
        Specified by:
        getPropertyValue in interface jadex.bpmn.model.task.ITaskContext
        Parameters:
        name - The property name.
        Returns:
        The property value.
      • getPropertyValue

        public java.lang.Object getPropertyValue​(java.lang.String name,
                                                 jadex.bpmn.model.MActivity activity)
        Hack: method is necessary because thread.activity is not always the activity to execute in case of multiple event. Get the value of a property.
        Parameters:
        name - The property name.
        Returns:
        The property value.
      • hasPropertyValue

        public boolean hasPropertyValue​(java.lang.String name)
        Test, if a property is declared.
        Parameters:
        name - The property name.
        Returns:
        True, if the property is declared.
      • getException

        public java.lang.Exception getException()
        Get the exception (if any).
        Returns:
        The exception (if any).
      • setException

        public void setException​(java.lang.Exception exception)
        Set the exception.
        Parameters:
        exception - The exception.
      • getInstance

        public IInternalAccess getInstance()
        Get the instance.
        Returns:
        The instance.
      • getDataEdges

        public java.util.Map<java.lang.String,​java.lang.Object> getDataEdges()
        Get the data edges.
        Returns:
        The data edges.
      • getData

        public java.util.Map<java.lang.String,​java.lang.Object> getData()
        Get the data.
        Returns:
        The data.
      • belongsTo

        public boolean belongsTo​(java.lang.String pool,
                                 java.lang.String lane)
        Test if the thread belongs to the given pool and/or lane.
        Parameters:
        pool - The pool to be executed or null for any.
        lane - The lane to be executed or null for any. Nested lanes may be addressed by dot-notation, e.g. 'OuterLane.InnerLane'.
        Returns:
        True, when the thread belongs to the given pool and/or lane. Also returns true when both pool and lane are null.
      • updateParametersBeforeStep

        public void updateParametersBeforeStep​(IInternalAccess instance)
        Update parameters based on edge inscriptions and initial values.
        Parameters:
        instance - The calling BPMN instance.
      • getDataEdgeValues

        protected java.util.Map<java.lang.String,​java.lang.Object> getDataEdgeValues()
      • updateParametersAfterStep

        public void updateParametersAfterStep​(jadex.bpmn.model.MActivity activity,
                                              IInternalAccess instance)
        Remove in parameters after step.
        Parameters:
        instance - The calling BPMN instance.
      • getSplitInfos

        public java.util.Collection<SplitInfo> getSplitInfos()
        Get the split infos.
      • getSplitInfo

        public SplitInfo getSplitInfo​(java.lang.String id)
        Get a specific split info, if available.
      • addSplitInfo

        public void addSplitInfo​(SplitInfo spi)
        Add a split info.
      • removeSplitInfo

        public void removeSplitInfo​(SplitInfo spi)
        Remove the split info.
      • removeSubcontext

        public void removeSubcontext()
        Remove a sub context but keep the corresponding thread. E.g. when a sub process terminates, the sub context is removed and the initiating thread continues in the outer context.
        Parameters:
        context - The sub context to be removed.
      • removeThread

        public void removeThread​(ProcessThread thread)
        Remove a thread from this context.
        Parameters:
        thread - The thread to be removed.
      • addThread

        public void addThread​(ProcessThread thread)
        Add a thread to this context.
        Parameters:
        thread - The thread to be added.
      • addExternalThread

        public void addExternalThread​(ProcessThread thread)
        Add an external thread to this context.
        Parameters:
        thread - The thread to be added.
      • getAllThreads

        public java.util.Set<ProcessThread> getAllThreads()
        Get all threads of the context and all subcontexts.
      • getParent

        public ProcessThread getParent()
        Get the parent. return The parent.
      • setParent

        public void setParent​(ProcessThread parent)
        Set the parent.
        Parameters:
        parent - The parent to set.
      • getSubthreads

        public java.util.List<ProcessThread> getSubthreads()
        Get the subthreads.
      • hasSubthreads

        public boolean hasSubthreads()
        Test if thread has subthreads.
      • isFinished

        public boolean isFinished​(java.lang.String pool,
                                  java.lang.String lane)
        The context is finished, when there are no (more) threads to execute.
        Parameters:
        pool - The pool to be executed or null for any.
        lane - The lane to be executed or null for any. Nested lanes may be addressed by dot-notation, e.g. 'OuterLane.InnerLane'.
        Returns:
        True, when the process instance is finished with regards to the specified pool/lane. When both pool and lane are null, true is returned only when all pools/lanes are finished.
      • getExecutableThread

        public ProcessThread getExecutableThread​(java.lang.String pool,
                                                 java.lang.String lane)
        Get an executable thread in the context or its sub contexts.
        Parameters:
        pool - The pool to be executed or null for any.
        lane - The lane to be executed or null for any. Nested lanes may be addressed by dot-notation, e.g. 'OuterLane.InnerLane'.
        Returns:
        An executable thread (if any).
      • getThread

        public ProcessThread getThread​(java.lang.String id)
        Get a thread per id.
        Parameters:
        id - The thread id.
        Returns:
        The process thread.
      • getNextChildId

        protected java.lang.String getNextChildId()
        Get a cnt for subprocesses.
      • getLoopCommand

        public IResultCommand<java.lang.Boolean,​java.lang.Void> getLoopCommand()
        Get the loopcmd.
        Returns:
        The loopcmd.
      • setLoopCommand

        public void setLoopCommand​(IResultCommand<java.lang.Boolean,​java.lang.Void> loopcmd)
        Set the loopcmd.
        Parameters:
        loopcmd - The loopcmd to set.
      • notifyFinished

        public void notifyFinished()
        Method that can be used to determine (override) that the thread is finished.
      • toString

        public java.lang.String toString()
        Create a string representation of this process thread.
        Overrides:
        toString in class java.lang.Object
        Returns:
        A string representation of this process thread.