public virtual void logAcquisitionFailureJobs(ProcessEngineImpl engine, int numJobs) { if (engine != null && engine.ProcessEngineConfiguration.MetricsEnabled) { engine.ProcessEngineConfiguration.MetricsRegistry.markOccurrence(Metrics.JOB_ACQUIRED_FAILURE, numJobs); } }
public virtual void logRejectedExecution(ProcessEngineImpl engine, int numJobs) { if (engine != null && engine.ProcessEngineConfiguration.MetricsEnabled) { engine.ProcessEngineConfiguration.MetricsRegistry.markOccurrence(Metrics.JOB_EXECUTION_REJECTED, numJobs); } }
public virtual void testDeleteJobThatWasAlreadyAcquired() { ClockUtil.CurrentTime = DateTime.Now; ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("timerOnTask"); Job timerJob = managementService.createJobQuery().processInstanceId(processInstance.Id).singleResult(); // We need to move time at least one hour to make the timer executable ClockUtil.CurrentTime = new DateTime(ClockUtil.CurrentTime.Ticks + 7200000L); // Acquire job by running the acquire command manually ProcessEngineImpl processEngineImpl = (ProcessEngineImpl)processEngine; JobExecutor jobExecutor = processEngineImpl.ProcessEngineConfiguration.JobExecutor; AcquireJobsCmd acquireJobsCmd = new AcquireJobsCmd(jobExecutor); CommandExecutor commandExecutor = processEngineImpl.ProcessEngineConfiguration.CommandExecutorTxRequired; commandExecutor.execute(acquireJobsCmd); // Try to delete the job. This should fail. try { managementService.deleteJob(timerJob.Id); fail(); } catch (ProcessEngineException) { // Exception is expected } // Clean up managementService.executeJob(timerJob.Id); }
public virtual void logAcquisitionAttempt(ProcessEngineImpl engine) { if (engine.ProcessEngineConfiguration.MetricsEnabled) { engine.ProcessEngineConfiguration.MetricsRegistry.markOccurrence(Metrics.JOB_ACQUISITION_ATTEMPT); } }
public static void Main(string[] args) { ProcessEngineImpl processEngine = (ProcessEngineImpl)ProcessEngines.DefaultProcessEngine; CommandExecutor commandExecutor = processEngine.ProcessEngineConfiguration.CommandExecutorTxRequired; commandExecutor.execute(new CommandAnonymousInnerClass()); }
protected internal virtual ProcessEngineImpl buildEngine(ProcessEngineConfigurationImpl engineConfiguration) { ProcessEngineImpl engine = (ProcessEngineImpl)engineConfiguration.buildProcessEngine(); processEngines.Add(engine); return(engine); }
public JcaInflowExecuteJobsRunnable(IList <string> jobIds, ProcessEngineImpl processEngine, JcaExecutorServiceConnector connector) : base(jobIds, processEngine) { this.ra = connector; if (method == null) { loadMethod(); } }
public virtual void run() { lock (this) { LOG.startingToAcquireJobs(jobExecutor.Name); JobAcquisitionStrategy acquisitionStrategy = initializeAcquisitionStrategy(); while (!isInterrupted) { acquisitionContext.reset(); acquisitionContext.AcquisitionTime = DateTimeHelper.CurrentUnixTimeMillis(); IEnumerator <ProcessEngineImpl> engineIterator = jobExecutor.engineIterator(); try { while (engineIterator.MoveNext()) { ProcessEngineImpl currentProcessEngine = engineIterator.Current; if (!jobExecutor.hasRegisteredEngine(currentProcessEngine)) { // if engine has been unregistered meanwhile continue; } AcquiredJobs acquiredJobs = acquireJobs(acquisitionContext, acquisitionStrategy, currentProcessEngine); executeJobs(acquisitionContext, currentProcessEngine, acquiredJobs); } } catch (Exception e) { LOG.exceptionDuringJobAcquisition(e); acquisitionContext.AcquisitionException = e; } acquisitionContext.JobAdded = isJobAdded; configureNextAcquisitionCycle(acquisitionContext, acquisitionStrategy); //The clear had to be done after the configuration, since a hint can be //appear in the suspend and the flag shouldn't be cleaned in this case. //The loop will restart after suspend with the isJobAdded flag and //reconfigure with this flag clearJobAddedNotification(); long waitTime = acquisitionStrategy.WaitTime; // wait the requested wait time minus the time that acquisition itself took // this makes the intervals of job acquisition more constant and therefore predictable waitTime = Math.Max(0, (acquisitionContext.AcquisitionTime + waitTime) - DateTimeHelper.CurrentUnixTimeMillis()); suspendAcquisition(waitTime); } LOG.stoppedJobAcquisition(jobExecutor.Name); } }
public virtual void LogRejectedExecution(ProcessEngineImpl engine, int numJobs) { var conf = engine?.ProcessEngineConfiguration as ProcessEngineConfigurationImpl; if (conf != null && conf.MetricsEnabled) { conf.MetricsRegistry.MarkOccurrence(Management.Metrics.JobExecutionRejected, numJobs); } }
public virtual void LogAcquisitionFailureJobs(ProcessEngineImpl engine, int numJobs) { var conf = engine?.ProcessEngineConfiguration as ProcessEngineConfigurationImpl; if (conf != null && conf.MetricsEnabled) { conf.MetricsRegistry.MarkOccurrence(Management.Metrics.JobAcquiredFailure, numJobs); } }
public virtual void LogAcquisitionAttempt(ProcessEngineImpl engine) { var conf = engine?.ProcessEngineConfiguration as ProcessEngineConfigurationImpl; if (conf != null && conf.MetricsEnabled) { conf.MetricsRegistry.MarkOccurrence(Management.Metrics.JobAcquisitionAttempt); } }
public virtual void disabledDmn() { processEngineImpl = createProcessEngineImpl(false); // simulate manual schema creation by user TestHelper.CreateSchema(processEngineImpl.ProcessEngineConfiguration as ProcessEngineConfigurationImpl); // let the engine do their schema operations thing (processEngineImpl.ProcessEngineConfiguration as ProcessEngineConfigurationImpl).CommandExecutorSchemaOperations.Execute(new SchemaOperationsProcessEngineBuild()); }
public virtual void schemaCreatedByUserAndDatabaseSchemaUpdateFalse() { processEngineImpl = createProcessEngineImpl("false", false); // simulate manual schema creation by user TestHelper.CreateSchema(processEngineImpl.ProcessEngineConfiguration as ProcessEngineConfigurationImpl); // let the engine do their schema operations thing (processEngineImpl.ProcessEngineConfiguration as ProcessEngineConfigurationImpl).CommandExecutorSchemaOperations.Execute(new SchemaOperationsProcessEngineBuild()); AssertHistoryLevel(); }
public override ThreadStart getExecuteJobsRunnable(IList <string> jobIds, ProcessEngineImpl processEngine) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.camunda.bpm.container.RuntimeContainerDelegate runtimeContainerDelegate = getRuntimeContainerDelegate(); RuntimeContainerDelegate runtimeContainerDelegate = RuntimeContainerDelegate; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.camunda.bpm.container.ExecutorService executorService = runtimeContainerDelegate.getExecutorService(); ExecutorService executorService = runtimeContainerDelegate.ExecutorService; return(executorService.getExecuteJobsRunnable(jobIds, processEngine)); }
public virtual void ReadLevelFullfromDb() { ProcessEngineConfigurationImpl config = Config("true", ProcessEngineConfiguration.HistoryFull); // init the db with level=full _processEngineImpl = (ProcessEngineImpl)config.BuildProcessEngine(); var historyLevel = config.CommandExecutorSchemaOperations.Execute(new DetermineHistoryLevelCmd(config.HistoryLevels)); Assert.That(historyLevel, Is.EqualTo(HistoryLevelFields.HistoryLevelFull)); }
public virtual void secondEngineCopiesHistoryLevelFromFirst() { // given buildEngine(config("true", ProcessEngineConfiguration.HistoryFull)); // when ProcessEngineImpl processEngineTwo = buildEngine(config("true", ProcessEngineConfiguration.HistoryAuto)); // then Assert.That(processEngineTwo.ProcessEngineConfiguration.History, Is.EqualTo(ProcessEngineConfiguration.HistoryAuto)); Assert.That((processEngineTwo.ProcessEngineConfiguration as ProcessEngineConfigurationImpl).HistoryLevel, Is.EqualTo(HistoryLevelFields.HistoryLevelFull)); }
public override void executeJobs(IList <string> jobIds, ProcessEngineImpl processEngine) { try { threadPoolExecutor.execute(getExecuteJobsRunnable(jobIds, processEngine)); } catch (RejectedExecutionException) { logRejectedExecution(processEngine, jobIds.Count); rejectedJobsHandler.jobsRejected(jobIds, processEngine, this); } }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void secondEngineCopiesHistoryLevelFromFirst() public virtual void secondEngineCopiesHistoryLevelFromFirst() { // given buildEngine(config("true", ProcessEngineConfiguration.HISTORY_FULL)); // when ProcessEngineImpl processEngineTwo = buildEngine(config("true", ProcessEngineConfiguration.HISTORY_AUTO)); // then assertThat(processEngineTwo.ProcessEngineConfiguration.History, @is(ProcessEngineConfiguration.HISTORY_AUTO)); assertThat(processEngineTwo.ProcessEngineConfiguration.HistoryLevel, @is(org.camunda.bpm.engine.impl.history.HistoryLevel_Fields.HISTORY_LEVEL_FULL)); }
public override void ExecuteJobs(IList <string> jobIds, ProcessEngineImpl processEngine) { try { var runnable = GetExecuteJobsRunnable(jobIds, processEngine); ThreadPool.QueueUserWorkItem(runnable.Run); } catch (RejectedExecutionException) { LogRejectedExecution(processEngine, jobIds.Count); RejectedJobsHandler.JobsRejected(jobIds, processEngine, this); } }
public virtual void registerProcessEngine(ProcessEngineImpl processEngine) { lock (this) { processEngines.Add(processEngine); // when we register the first process engine, start the jobexecutor if (processEngines.Count == 1 && isAutoActivate) { start(); } } }
public virtual void unregisterProcessEngine(ProcessEngineImpl processEngine) { lock (this) { processEngines.Remove(processEngine); // if we unregister the last process engine, auto-shutdown the jobexecutor if (processEngines.Count == 0 && isActive) { shutdown(); } } }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void schemaCreatedByUserAndDatabaseSchemaUpdateTrue() public virtual void schemaCreatedByUserAndDatabaseSchemaUpdateTrue() { processEngineImpl = createProcessEngineImpl("true", false); // simulate manual schema creation by user TestHelper.createSchema(processEngineImpl.ProcessEngineConfiguration); // let the engine do their schema operations thing processEngineImpl.ProcessEngineConfiguration.CommandExecutorSchemaOperations.execute(new SchemaOperationsProcessEngineBuild()); processEngineImpl.ProcessEngineConfiguration.CommandExecutorSchemaOperations.execute(new HistoryLevelSetupCommand()); assertHistoryLevel(); }
public virtual void JobsRejected(IList <string> jobIds, ProcessEngineImpl processEngine, JobExecutor jobExecutor) { var acquireJobsRunnable = jobExecutor.AcquireJobsRunnable; if (acquireJobsRunnable is SequentialJobAcquisitionRunnable) { var context = ((SequentialJobAcquisitionRunnable)acquireJobsRunnable).AcquisitionContext; context.SubmitRejectedBatch(processEngine.Name, jobIds); } else { jobExecutor.GetExecuteJobsRunnable(jobIds, processEngine).Run(null); } }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void usesDefaultValueAuditWhenNoValueIsConfigured() public virtual void usesDefaultValueAuditWhenNoValueIsConfigured() { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl config = config("true", org.camunda.bpm.engine.ProcessEngineConfiguration.HISTORY_AUTO); ProcessEngineConfigurationImpl config = config("true", ProcessEngineConfiguration.HISTORY_AUTO); ProcessEngineImpl processEngine = buildEngine(config); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final System.Nullable<int> level = config.getCommandExecutorSchemaOperations().execute(new org.camunda.bpm.engine.impl.interceptor.Command<int>() int?level = config.CommandExecutorSchemaOperations.execute(new CommandAnonymousInnerClass(this)); assertThat(level, equalTo(org.camunda.bpm.engine.impl.history.HistoryLevel_Fields.HISTORY_LEVEL_AUDIT.Id)); assertThat(processEngine.ProcessEngineConfiguration.HistoryLevel, equalTo(org.camunda.bpm.engine.impl.history.HistoryLevel_Fields.HISTORY_LEVEL_AUDIT)); }
public virtual void usesDefaultValueAuditWhenNoValueIsConfigured() { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final ProcessEngineConfigurationImpl config = config("true", org.Camunda.bpm.Engine.ProcessEngineConfiguration.HISTORY_AUTO); ProcessEngineConfigurationImpl config = this.config("true", ProcessEngineConfiguration.HistoryAuto); ProcessEngineImpl processEngine = buildEngine(config); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final Nullable<int> level = config.GetCommandExecutorSchemaOperations().Execute(new org.Camunda.bpm.Engine.impl.interceptor.Command<Nullable<int>>() int?level = config.CommandExecutorSchemaOperations.Execute(new CommandAnonymousInnerClass(this)); Assert.That(level, Is.EqualTo(HistoryLevelFields.HistoryLevelAudit.Id)); Assert.That((processEngine.ProcessEngineConfiguration as ProcessEngineConfigurationImpl).HistoryLevel, Is.EqualTo(HistoryLevelFields.HistoryLevelAudit)); }
public virtual void UseDefaultLevelAudit() { ProcessEngineConfigurationImpl config = Config("true", ProcessEngineConfiguration.HistoryAuto); // init the db with level=auto -> audit _processEngineImpl = (ProcessEngineImpl)config.BuildProcessEngine(); // the history Level has been overwritten with audit Assert.That(config.HistoryLevel, Is.EqualTo(HistoryLevelFields.HistoryLevelAudit)); // and this is written to the database var databaseLevel = config.CommandExecutorSchemaOperations.Execute(new DetermineHistoryLevelCmd(config.HistoryLevels)); Assert.That(databaseLevel, Is.EqualTo(HistoryLevelFields.HistoryLevelAudit)); }
public virtual void FailWhenExistingHistoryLevelIsNotRegistered() { // init the db with custom level IHistoryLevel customLevel = new HistoryLevelAnonymousInnerClass(this); ProcessEngineConfigurationImpl config = Config("true", "custom"); config.SetCustomHistoryLevels(new List <IHistoryLevel> { customLevel }); _processEngineImpl = (ProcessEngineImpl)config.BuildProcessEngine(); //Thrown.Expect(typeof(ProcessEngineException)); //Thrown.ExpectMessage("The configured history level with id='99' is not registered in this config."); config.CommandExecutorSchemaOperations.Execute(new DetermineHistoryLevelCmd(new List <IHistoryLevel>())); }
public override void executeJobs(IList <string> jobIds, ProcessEngineImpl processEngine) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.camunda.bpm.container.RuntimeContainerDelegate runtimeContainerDelegate = getRuntimeContainerDelegate(); RuntimeContainerDelegate runtimeContainerDelegate = RuntimeContainerDelegate; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.camunda.bpm.container.ExecutorService executorService = runtimeContainerDelegate.getExecutorService(); ExecutorService executorService = runtimeContainerDelegate.ExecutorService; ThreadStart executeJobsRunnable = getExecuteJobsRunnable(jobIds, processEngine); // delegate job execution to runtime container if (!executorService.schedule(executeJobsRunnable, false)) { logRejectedExecution(processEngine, jobIds.Count); rejectedJobsHandler.jobsRejected(jobIds, processEngine, this); } }
public override void ExecuteJobs(IList <string> jobIds, ProcessEngineImpl processEngine) { throw new NotImplementedException(); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.camunda.bpm.container.RuntimeContainerDelegate runtimeContainerDelegate = getRuntimeContainerDelegate(); // var runtimeContainerDelegate = RuntimeContainerDelegate; ////JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': ////ORIGINAL LINE: final org.camunda.bpm.container.ExecutorService executorService = runtimeContainerDelegate.getExecutorService(); // var executorService = runtimeContainerDelegate.ExecutorService; // var executeJobsRunnable = GetExecuteJobsRunnable(jobIds, processEngine); // // delegate job execution to runtime container // if (!executorService.Schedule(executeJobsRunnable, false)) // { // LogRejectedExecution(processEngine, jobIds.Count); // rejectedJobsHandler.JobsRejected(jobIds, processEngine, this); // } }
protected internal virtual void ExecuteJobs(JobAcquisitionContext context, ProcessEngineImpl currentProcessEngine, AcquiredJobs acquiredJobs) { // submit those jobs that were acquired in previous cycles but could not be scheduled for execution var additionalJobs = context.AdditionalJobBatchesByEngine.GetValueOrNull(currentProcessEngine.Name); if (additionalJobs != null) { foreach (var jobBatch in additionalJobs) { Log.ExecuteJobs(currentProcessEngine.Name, jobBatch); JobExecutor.ExecuteJobs(jobBatch, currentProcessEngine); } } // submit those jobs that were acquired in the current cycle foreach (var jobIds in acquiredJobs.JobIdBatches) { Log.ExecuteJobs(currentProcessEngine.Name, jobIds); JobExecutor.ExecuteJobs(jobIds, currentProcessEngine); } }