Example #1
0
        private void KickProcessInternal(string instanceId, bool autoRetry)
        {
            log.Info("Kicking process {0}", instanceId);

            try
            {
                AccessProcessReadWriteLock(instanceId, delegate(ProcessInstance pi)
                {
                    //pi.Activate();
                    pi.Kick();
                    //pi.Passivate();
                });
            }
            catch (Exception ex)
            {
                log.Error("Error kicking process {0} : {1}", instanceId, ex);
                if (autoRetry)
                {
                    InstanceRepository.SetProcessInstanceErrorStatus(instanceId, ex.ToString());
                    KickProcessEvent kpe = new KickProcessEvent();
                    kpe.InstanceId = instanceId;
                    MessageBus.Notify("NGEnvironment", "NGEnvironment.KickProcess.Retry." + instanceId, kpe, true);
                }
                else
                {
                    throw ex;
                }
            }
        }
Example #2
0
 private object KickProcessInternal(string pid, bool handleRetry)
 {
     log.Info("Kicking process {0}", pid);
     try
     {
         Environment.KickProcess(pid);
     }
     catch (Exception ex)
     {
         //hm, should be more transactional...
         log.Error("Error kicking process {0}: {1}", pid, ex);
         if (handleRetry)
         {
             log.Info("Scheduling retry message for process {0}", pid);
             INGEnvironmentContext ctx = (INGEnvironmentContext)Environment;
             ctx.InstanceRepository.SetProcessInstanceErrorStatus(pid, ex.ToString());
             KickProcessEvent ev = new KickProcessEvent();
             ev.InstanceId = pid;
             MessageBus.Notify("NGEngine", "NGEngine.KickProcess.Retry." + pid, ev, true);
         }
         else
         {
             throw;
         }
     }
     return null;
 }