Миграция activiti с 5.22.0 на 6.0.0 приводит к IllegalThreadStateException при развертывании - PullRequest
3 голосов
/ 07 мая 2019

В настоящее время мы используем версию Activiti v5.22.0 с программным механизмом процесса, настроенным следующим образом:

public class ProgrammaticProcessEngineConfiguration implements ProcessEngineLookup {

private static final Logger LOGGER = LoggerFactory.getLogger(ProgrammaticProcessEngineConfiguration.class.getCanonicalName());

private ProcessEngine processEngine;

private ManagedThreadFactory managedThreadFactory;

@Override
public ProcessEngine getProcessEngine() {
    managedThreadFactory = getThreadFactory();
    final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    final ManagedAsyncJobExecutor managedJobExecutor = new ManagedAsyncJobExecutor() {

        @Override
        protected void startExecutingAsyncJobs() {
            if (threadFactory == null) {
                super.startExecutingAsyncJobs();
            } else {
                if (threadPoolQueue == null) { threadPoolQueue = new ArrayBlockingQueue<>(queueSize); }
                if (executorService == null) {
                    ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveTime, TimeUnit.MILLISECONDS, threadPoolQueue, threadFactory) {
                        @Override
                        protected void beforeExecute(Thread t, Runnable r) { t.setContextClassLoader(classLoader); }
                    };
                    threadPoolExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
                    executorService = threadPoolExecutor;
                }
                startJobAcquisitionThread();
            }
        }
    };

    managedJobExecutor.setThreadFactory(managedThreadFactory);

    final CdiJtaProcessEngineConfiguration cdiJtaProcessEngineConfiguration = new CdiJtaProcessEngineConfiguration();
    cdiJtaProcessEngineConfiguration.setTransactionManager(getTransactionManager());
    processEngine = cdiJtaProcessEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
            .setDataSourceJndiName("something").setDatabaseType("something")
            .setHistoryLevel(HistoryLevel.NONE)
            .setTransactionsExternallyManaged(true).setJobExecutorActivate(true)
            .setAsyncExecutorEnabled(true)
            .setAsyncExecutorActivate(true)
            .setAsyncExecutor(managedJobExecutor)
            .setClassLoader(Thread.currentThread().getContextClassLoader())
            .buildProcessEngine();
    return processEngine;
}

При переходе на v6.0.0 мы хотим, чтобы поведение обратной совместимости для экземпляров процесса поддерживалось, поэтому задаем следующее:

cdiJtaProcessEngineConfiguration.setActiviti5CompatibilityEnabled(true);

Нам нужен механизм процессов для поддержки JTA и CDI.Однако инструкции на странице миграции (https://www.activiti.org/migration) не очень понятны, и я не уверен, как настроить механизм процесса.

Я получаю следующую ошибку: Unsupported process engine configuration, когда режим совместимости

Кто-нибудь знаком с миграцией activiti на v6.0.0 с использованием CdiJtaProcessEngineConfiguration?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...