def consider_participant_timers(p_info)

      return if h.has_timers
        # process definition takes precedence over participant defined timers.

      timers = nil

      [ :rtimers, :timers, :rtimeout ].each do |meth|

        pa = @context.plist.instantiate(p_info, :if_respond_to? => meth)

        next unless pa

        timers = Ruote.participant_send(
          pa, meth, 'workitem' => Ruote::Workitem.new(h.applied_workitem))

        break if timers
      end

      return unless timers

      timers = if timers.index(':')
        timers.split(/,/)
      else
        [ "#{timers}: timeout" ]
      end

      schedule_timers(timers)
    end
def consider_participant_timers(p_info)

      return if h.has_timers
        # process definition takes precedence over participant defined timers.

      timers = nil

      [ :rtimers, :timers, :rtimeout ].each do |meth|

        pa = @context.plist.instantiate(p_info, :if_respond_to? => meth)

        next unless pa

        timers = Ruote.participant_send(
          pa, meth, 'workitem' => Ruote::Workitem.new(h.applied_workitem))

        break if timers
      end

      return unless timers

      timers = if timers.index(':')
        timers.split(/,/)
      else
        [ "#{timers}: timeout" ]
      end

      schedule_timers(timers)
    end
Determines and schedules timeout if any.

 Note that process definition timeout has priority over participant
 specified timeout.